File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/js/im/v2/model/dist/registry.bundle.js.map
Back
{"version":3,"file":"registry.bundle.js","sources":["../src/application.js","../src/messages.js","../src/dialogues.js","../src/users.js","../src/files.js","../src/recent.js"],"sourcesContent":["import {DeviceType, DeviceOrientation, Settings} from 'im.v2.const';\nimport {BuilderModel} from 'ui.vue3.vuex';\nimport {Type} from 'main.core';\n\nexport class ApplicationModel extends BuilderModel\n{\n\tgetName()\n\t{\n\t\treturn 'application';\n\t}\n\n\tgetState()\n\t{\n\t\treturn {\n\t\t\tcommon:\n\t\t\t{\n\t\t\t\thost: this.getVariable('common.host', location.protocol+'//'+location.host),\n\t\t\t\tsiteId: this.getVariable('common.siteId', 'default'),\n\t\t\t\tuserId: this.getVariable('common.userId', 0),\n\t\t\t\tlanguageId: this.getVariable('common.languageId', 'en'),\n\t\t\t},\n\t\t\tdialog:\n\t\t\t{\n\t\t\t\tdialogId: this.getVariable('dialog.dialogId', '0'),\n\t\t\t\tchatId: this.getVariable('dialog.chatId', 0),\n\t\t\t\tdiskFolderId: this.getVariable('dialog.diskFolderId', 0),\n\t\t\t\tmessageLimit: this.getVariable('dialog.messageLimit', 20),\n\t\t\t\tenableReadMessages: this.getVariable('dialog.enableReadMessages', true),\n\t\t\t\tmessageExtraCount: 0,\n\t\t\t},\n\t\t\tdisk:\n\t\t\t{\n\t\t\t\tenabled: false,\n\t\t\t\tmaxFileSize: 5242880,\n\t\t\t},\n\t\t\tcall:\n\t\t\t{\n\t\t\t\tserverEnabled: false,\n\t\t\t\tmaxParticipants: 24,\n\t\t\t},\n\t\t\tmobile:\n\t\t\t{\n\t\t\t\tkeyboardShow: false,\n\t\t\t},\n\t\t\tdevice:\n\t\t\t{\n\t\t\t\ttype: this.getVariable('device.type', DeviceType.desktop),\n\t\t\t\torientation: this.getVariable('device.orientation', DeviceOrientation.portrait),\n\t\t\t},\n\t\t\toptions:\n\t\t\t{\n\t\t\t\tquoteEnable: this.getVariable('options.quoteEnable', true),\n\t\t\t\tquoteFromRight: this.getVariable('options.quoteFromRight', true),\n\t\t\t\tautoplayVideo: this.getVariable('options.autoplayVideo', true),\n\t\t\t\tdarkTheme: this.getVariable('options.darkTheme', false),\n\t\t\t\tshowSmiles: false\n\t\t\t},\n\t\t\terror:\n\t\t\t{\n\t\t\t\tactive: false,\n\t\t\t\tcode: '',\n\t\t\t\tdescription: '',\n\t\t\t},\n\t\t};\n\t}\n\n\tgetStateSaveException()\n\t{\n\t\treturn Object.assign({\n\t\t\tcommon: this.getVariable('saveException.common', null),\n\t\t\tdialog: this.getVariable('saveException.dialog', null),\n\t\t\tmobile: this.getVariable('saveException.mobile', null),\n\t\t\tdevice: this.getVariable('saveException.device', null),\n\t\t\terror: this.getVariable('saveException.error', null)\n\t\t});\n\t}\n\n\tgetGetters()\n\t{\n\t\treturn {\n\t\t\tgetOption: state => (optionName: string) =>\n\t\t\t{\n\t\t\t\tif (!Settings[optionName])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.options[optionName];\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions()\n\t{\n\t\treturn {\n\t\t\tset: (store, payload) =>\n\t\t\t{\n\t\t\t\tstore.commit('set', this.validate(payload));\n\t\t\t},\n\t\t\tshowSmiles: (store, payload) =>\n\t\t\t{\n\t\t\t\tstore.commit('showSmiles')\n\t\t\t},\n\t\t\thideSmiles: (store, payload) =>\n\t\t\t{\n\t\t\t\tstore.commit('hideSmiles');\n\t\t\t},\n\t\t\tsetOptions: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (!Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tpayload = this.validateOptions(payload);\n\t\t\t\tObject.entries(payload).forEach(([option, value]) => {\n\t\t\t\t\tstore.commit('setOptions', {\n\t\t\t\t\t\toption,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n\n\tgetMutations()\n\t{\n\t\treturn {\n\t\t\tset: (state, payload) =>\n\t\t\t{\n\t\t\t\tlet hasChange = false;\n\t\t\t\tfor (let group in payload)\n\t\t\t\t{\n\t\t\t\t\tif (!payload.hasOwnProperty(group))\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (let field in payload[group])\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!payload[group].hasOwnProperty(field))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate[group][field] = payload[group][field];\n\t\t\t\t\t\thasChange = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (hasChange && this.isSaveNeeded(payload))\n\t\t\t\t{\n\t\t\t\t\tthis.saveState(state);\n\t\t\t\t}\n\t\t\t},\n\t\t\tincreaseDialogExtraCount(state, payload = {})\n\t\t\t{\n\t\t\t\tlet {count = 1} = payload;\n\n\t\t\t\tstate.dialog.messageExtraCount += count;\n\t\t\t},\n\t\t\tdecreaseDialogExtraCount(state, payload = {})\n\t\t\t{\n\t\t\t\tlet {count = 1} = payload;\n\n\t\t\t\tlet newCounter = state.dialog.messageExtraCount - count;\n\t\t\t\tif (newCounter <= 0)\n\t\t\t\t{\n\t\t\t\t\tnewCounter = 0;\n\t\t\t\t}\n\n\t\t\t\tstate.dialog.messageExtraCount = newCounter;\n\t\t\t},\n\t\t\tclearDialogExtraCount(state)\n\t\t\t{\n\t\t\t\tstate.dialog.messageExtraCount = 0;\n\t\t\t},\n\t\t\tshowSmiles(state)\n\t\t\t{\n\t\t\t\tstate.options.showSmiles = true;\n\t\t\t},\n\t\t\thideSmiles(state)\n\t\t\t{\n\t\t\t\tstate.options.showSmiles = false;\n\t\t\t},\n\t\t\tsetOptions: (state, payload) => {\n\t\t\t\tstate.options[payload.option] = payload.value;\n\t\t\t}\n\t\t};\n\t}\n\n\tvalidate(fields)\n\t{\n\t\tconst result = {};\n\n\t\tif (typeof fields.common === 'object' && fields.common)\n\t\t{\n\t\t\tresult.common = {};\n\n\t\t\tif (typeof fields.common.userId === 'number')\n\t\t\t{\n\t\t\t\tresult.common.userId = fields.common.userId;\n\t\t\t}\n\n\t\t\tif (typeof fields.common.languageId === 'string')\n\t\t\t{\n\t\t\t\tresult.common.languageId = fields.common.languageId;\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.dialog === 'object' && fields.dialog)\n\t\t{\n\t\t\tresult.dialog = {};\n\n\t\t\tif (typeof fields.dialog.dialogId === 'number')\n\t\t\t{\n\t\t\t\tresult.dialog.dialogId = fields.dialog.dialogId.toString();\n\t\t\t\tresult.dialog.chatId = 0;\n\t\t\t}\n\t\t\telse if (typeof fields.dialog.dialogId === 'string')\n\t\t\t{\n\t\t\t\tresult.dialog.dialogId = fields.dialog.dialogId;\n\n\t\t\t\tif (typeof fields.dialog.chatId !== 'number')\n\t\t\t\t{\n\t\t\t\t\tlet chatId = fields.dialog.dialogId;\n\t\t\t\t\tif (chatId.startsWith('chat'))\n\t\t\t\t\t{\n\t\t\t\t\t\tchatId = fields.dialog.dialogId.substr(4);\n\t\t\t\t\t}\n\n\t\t\t\t\tchatId = parseInt(chatId);\n\n\t\t\t\t\tresult.dialog.chatId = !isNaN(chatId)? chatId: 0;\n\t\t\t\t\tfields.dialog.chatId = result.dialog.chatId;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof fields.dialog.chatId === 'number')\n\t\t\t{\n\t\t\t\tresult.dialog.chatId = fields.dialog.chatId;\n\t\t\t}\n\n\t\t\tif (typeof fields.dialog.diskFolderId === 'number')\n\t\t\t{\n\t\t\t\tresult.dialog.diskFolderId = fields.dialog.diskFolderId;\n\t\t\t}\n\n\t\t\tif (typeof fields.dialog.messageLimit === 'number')\n\t\t\t{\n\t\t\t\tresult.dialog.messageLimit = fields.dialog.messageLimit;\n\t\t\t}\n\n\t\t\tif (typeof fields.dialog.messageExtraCount === 'number')\n\t\t\t{\n\t\t\t\tresult.dialog.messageExtraCount = fields.dialog.messageExtraCount;\n\t\t\t}\n\n\t\t\tif (typeof fields.dialog.enableReadMessages === 'boolean')\n\t\t\t{\n\t\t\t\tresult.dialog.enableReadMessages = fields.dialog.enableReadMessages;\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.disk === 'object' && fields.disk)\n\t\t{\n\t\t\tresult.disk = {};\n\n\t\t\tif (typeof fields.disk.enabled === 'boolean')\n\t\t\t{\n\t\t\t\tresult.disk.enabled = fields.disk.enabled;\n\t\t\t}\n\n\t\t\tif (typeof fields.disk.maxFileSize === 'number')\n\t\t\t{\n\t\t\t\tresult.disk.maxFileSize = fields.disk.maxFileSize;\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.call === 'object' && fields.call)\n\t\t{\n\t\t\tresult.call = {};\n\n\t\t\tif (typeof fields.call.serverEnabled === 'boolean')\n\t\t\t{\n\t\t\t\tresult.call.serverEnabled = fields.call.serverEnabled;\n\t\t\t}\n\n\t\t\tif (typeof fields.call.maxParticipants === 'number')\n\t\t\t{\n\t\t\t\tresult.call.maxParticipants = fields.call.maxParticipants;\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.mobile === 'object' && fields.mobile)\n\t\t{\n\t\t\tresult.mobile = {};\n\n\t\t\tif (typeof fields.mobile.keyboardShow === 'boolean')\n\t\t\t{\n\t\t\t\tresult.mobile.keyboardShow = fields.mobile.keyboardShow;\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.device === 'object' && fields.device)\n\t\t{\n\t\t\tresult.device = {};\n\n\t\t\tif (typeof fields.device.type === 'string' && typeof DeviceType[fields.device.type] !== 'undefined')\n\t\t\t{\n\t\t\t\tresult.device.type = fields.device.type;\n\t\t\t}\n\n\t\t\tif (typeof fields.device.orientation === 'string' && typeof DeviceOrientation[fields.device.orientation] !== 'undefined')\n\t\t\t{\n\t\t\t\tresult.device.orientation = fields.device.orientation;\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.error === 'object' && fields.error)\n\t\t{\n\t\t\tif (typeof fields.error.active === 'boolean')\n\t\t\t{\n\t\t\t\tresult.error = {\n\t\t\t\t\tactive: fields.error.active,\n\t\t\t\t\tcode: fields.error.code.toString() || '',\n\t\t\t\t\tdescription: fields.error.description.toString() || '',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tvalidateOptions(fields)\n\t{\n\t\tconst result = {};\n\n\t\tif (!Type.isUndefined(fields.darkTheme) && Type.isStringFilled(fields.darkTheme))\n\t\t{\n\t\t\tif (fields.darkTheme === 'auto' && BX.MessengerProxy)\n\t\t\t{\n\t\t\t\tresult.darkTheme = BX.MessengerProxy.isDarkTheme();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.darkTheme = fields.darkTheme === 'dark';\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n}","import {nextTick} from 'ui.vue3';\nimport {BuilderModel} from 'ui.vue3.vuex';\nimport {MutationType, StorageLimit, EventType} from 'im.v2.const';\nimport {Utils} from 'im.v2.lib.utils';\nimport {Logger} from 'im.v2.lib.logger';\n\nimport {EventEmitter} from 'main.core.events';\n\nconst IntersectionType = {\n\tempty: 'empty',\n\tequal: 'equal',\n\tnone: 'none',\n\tfound: 'found',\n\tfoundReverse: 'foundReverse',\n};\n\nexport class MessagesModel extends BuilderModel\n{\n\tgetName()\n\t{\n\t\treturn 'messages';\n\t}\n\n\tgetState()\n\t{\n\t\treturn {\n\t\t\tcreated: 0,\n\t\t\tcollection: {},\n\t\t\tmutationType: {},\n\t\t\tsaveMessageList: {},\n\t\t\tsaveFileList: {},\n\t\t\tsaveUserList: {},\n\t\t};\n\t}\n\n\tgetElementState()\n\t{\n\t\treturn {\n\t\t\ttemplateId: 0,\n\t\t\ttemplateType: 'message',\n\t\t\tplaceholderType: 0,\n\n\t\t\tid: 0,\n\t\t\tchatId: 0,\n\t\t\tauthorId: 0,\n\t\t\tdate: new Date(),\n\t\t\ttext: '',\n\t\t\ttextConverted: '',\n\t\t\tparams: {\n\t\t\t\tTYPE: 'default',\n\t\t\t\tCOMPONENT_ID: 'bx-im-view-message',\n\t\t\t},\n\n\t\t\tpush: false,\n\t\t\tunread: false,\n\t\t\tsending: false,\n\t\t\terror: false,\n\t\t\tretry: false,\n\t\t\tblink: false,\n\t\t};\n\t}\n\n\tgetGetters()\n\t{\n\t\treturn {\n\n\t\t\tgetMutationType: state => chatId =>\n\t\t\t{\n\t\t\t\tif (!state.mutationType[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn {initialType: MutationType.none, appliedType: MutationType.none};\n\t\t\t\t}\n\n\t\t\t\treturn state.mutationType[chatId];\n\t\t\t},\n\t\t\tgetLastId: state => chatId =>\n\t\t\t{\n\t\t\t\tif (!state.collection[chatId] || state.collection[chatId].length <= 0)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tlet lastId = 0;\n\n\t\t\t\tfor (let i = 0; i < state.collection[chatId].length; i++)\n\t\t\t\t{\n\t\t\t\t\tlet element = state.collection[chatId][i];\n\t\t\t\t\tif (\n\t\t\t\t\t\telement.push\n\t\t\t\t\t\t|| element.sending\n\t\t\t\t\t\t|| element.id.toString().startsWith('temporary')\n\t\t\t\t\t)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (lastId < element.id)\n\t\t\t\t\t{\n\t\t\t\t\t\tlastId = element.id;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn lastId? lastId: null;\n\t\t\t},\n\t\t\tgetMessage: state => (chatId, messageId) =>\n\t\t\t{\n\t\t\t\tif (!state.collection[chatId] || state.collection[chatId].length <= 0)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tfor (let index = state.collection[chatId].length-1; index >= 0; index--)\n\t\t\t\t{\n\t\t\t\t\tif (state.collection[chatId][index].id === messageId)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn state.collection[chatId][index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\tget: state => chatId =>\n\t\t\t{\n\t\t\t\tif (!state.collection[chatId] || state.collection[chatId].length <= 0)\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId];\n\t\t\t},\n\t\t\tgetBlank: state => params =>\n\t\t\t{\n\t\t\t\treturn this.getElementState();\n\t\t\t},\n\t\t\tgetSaveFileList: state => params =>\n\t\t\t{\n\t\t\t\treturn state.saveFileList;\n\t\t\t},\n\t\t\tgetSaveUserList: state => params =>\n\t\t\t{\n\t\t\t\treturn state.saveUserList;\n\t\t\t},\n\t\t}\n\t}\n\n\tgetActions()\n\t{\n\t\treturn {\n\t\t\tadd: (store, payload) =>\n\t\t\t{\n\t\t\t\tlet result = this.validate(Object.assign({}, payload));\n\t\t\t\tresult.params = Object.assign({}, this.getElementState().params, result.params);\n\t\t\t\tif (payload.id)\n\t\t\t\t{\n\t\t\t\t\tif (store.state.collection[payload.chatId])\n\t\t\t\t\t{\n\t\t\t\t\t\tconst countMessages = store.state.collection[payload.chatId].length-1;\n\t\t\t\t\t\tfor (let index = countMessages; index >= 0; index--)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst message = store.state.collection[payload.chatId][index];\n\t\t\t\t\t\t\tif (message.templateId === payload.id)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult.id = payload.id;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tresult.id = 'temporary' + (new Date).getTime() + store.state.created;\n\t\t\t\t}\n\t\t\t\tresult.templateId = result.id;\n\t\t\t\tresult.unread = false;\n\n\t\t\t\tstore.commit('add', Object.assign({}, this.getElementState(), result));\n\n\t\t\t\tif (payload.sending !== false)\n\t\t\t\t{\n\t\t\t\t\tstore.dispatch('actionStart', {\n\t\t\t\t\t\tid: result.id,\n\t\t\t\t\t\tchatId: result.chatId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn result.id;\n\t\t\t},\n\t\t\tactionStart: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (/^\\d+$/.test(payload.id))\n\t\t\t\t{\n\t\t\t\t\tpayload.id = parseInt(payload.id);\n\t\t\t\t}\n\n\t\t\t\tpayload.chatId = parseInt(payload.chatId);\n\n\t\t\t\tnextTick(() => {\n\t\t\t\t\tstore.commit('update', {\n\t\t\t\t\t\tid : payload.id ,\n\t\t\t\t\t\tchatId : payload.chatId,\n\t\t\t\t\t\tfields : {sending: true}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tactionError: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (/^\\d+$/.test(payload.id))\n\t\t\t\t{\n\t\t\t\t\tpayload.id = parseInt(payload.id);\n\t\t\t\t}\n\t\t\t\tpayload.chatId = parseInt(payload.chatId);\n\n\t\t\t\tnextTick(() => {\n\t\t\t\t\tstore.commit('update', {\n\t\t\t\t\t\tid : payload.id ,\n\t\t\t\t\t\tchatId : payload.chatId,\n\t\t\t\t\t\tfields : {sending: false, error: true, retry: payload.retry !== false}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tactionFinish: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (/^\\d+$/.test(payload.id))\n\t\t\t\t{\n\t\t\t\t\tpayload.id = parseInt(payload.id);\n\t\t\t\t}\n\t\t\t\tpayload.chatId = parseInt(payload.chatId);\n\n\t\t\t\tnextTick(() => {\n\t\t\t\t\tstore.commit('update', {\n\t\t\t\t\t\tid : payload.id ,\n\t\t\t\t\t\tchatId : payload.chatId,\n\t\t\t\t\t\tfields : {sending: false, error: false, retry: false}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tset: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (payload instanceof Array)\n\t\t\t\t{\n\t\t\t\t\tpayload = payload.map(message => this.prepareMessage(message));\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tlet result = this.prepareMessage(payload);\n\t\t\t\t\t(payload = []).push(result);\n\t\t\t\t}\n\n\t\t\t\tstore.commit('set', {\n\t\t\t\t\tinsertType : MutationType.set,\n\t\t\t\t\tdata : payload\n\t\t\t\t});\n\n\t\t\t\treturn 'set is done';\n\t\t\t},\n\t\t\taddPlaceholders: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (payload.placeholders instanceof Array)\n\t\t\t\t{\n\t\t\t\t\tpayload.placeholders = payload.placeholders.map(message => this.prepareMessage(message));\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst insertType = payload.requestMode === 'history'? MutationType.setBefore : MutationType.setAfter;\n\t\t\t\tif (insertType === MutationType.setBefore)\n\t\t\t\t{\n\t\t\t\t\tpayload.placeholders = payload.placeholders.reverse();\n\t\t\t\t}\n\n\t\t\t\tstore.commit('set', {\n\t\t\t\t\tinsertType,\n\t\t\t\t\tdata : payload.placeholders\n\t\t\t\t});\n\n\t\t\t\treturn payload.placeholders[0].id;\n\t\t\t},\n\t\t\tclearPlaceholders: (store, payload) =>\n\t\t\t{\n\t\t\t\tstore.commit('clearPlaceholders', payload);\n\t\t\t},\n\t\t\tupdatePlaceholders: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (payload.data instanceof Array)\n\t\t\t\t{\n\t\t\t\t\tpayload.data = payload.data.map(message => this.prepareMessage(message));\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('updatePlaceholders', payload);\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tsetAfter: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (payload instanceof Array)\n\t\t\t\t{\n\t\t\t\t\tpayload = payload.map(message => this.prepareMessage(message));\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tlet result = this.prepareMessage(payload);\n\t\t\t\t\t(payload = []).push(result);\n\t\t\t\t}\n\n\t\t\t\tstore.commit('set', {\n\t\t\t\t\tinsertType : MutationType.setAfter,\n\t\t\t\t\tdata : payload\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetBefore: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (payload instanceof Array)\n\t\t\t\t{\n\t\t\t\t\tpayload = payload.map(message => this.prepareMessage(message));\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tlet result = this.prepareMessage(payload);\n\t\t\t\t\t(payload = []).push(result);\n\t\t\t\t}\n\n\t\t\t\tstore.commit('set', {\n\t\t\t\t\tinsertType : MutationType.setBefore,\n\t\t\t\t\tdata : payload\n\t\t\t\t});\n\t\t\t},\n\t\t\tupdate: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (/^\\d+$/.test(payload.id))\n\t\t\t\t{\n\t\t\t\t\tpayload.id = parseInt(payload.id);\n\t\t\t\t}\n\t\t\t\tif (/^\\d+$/.test(payload.chatId))\n\t\t\t\t{\n\t\t\t\t\tpayload.chatId = parseInt(payload.chatId);\n\t\t\t\t}\n\n\t\t\t\tstore.commit('initCollection', {chatId: payload.chatId});\n\n\t\t\t\tif (!store.state.collection[payload.chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tlet index = store.state.collection[payload.chatId].findIndex(el => el.id === payload.id);\n\t\t\t\tif (index < 0)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tlet result = this.validate(Object.assign({}, payload.fields));\n\n\t\t\t\tif (result.params)\n\t\t\t\t{\n\t\t\t\t\tresult.params = Object.assign(\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tthis.getElementState().params,\n\t\t\t\t\t\tstore.state.collection[payload.chatId][index].params,\n\t\t\t\t\t\tresult.params\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tid : payload.id,\n\t\t\t\t\tchatId : payload.chatId,\n\t\t\t\t\tindex : index,\n\t\t\t\t\tfields : result\n\t\t\t\t});\n\n\t\t\t\tif (payload.fields.blink)\n\t\t\t\t{\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tstore.commit('update', {\n\t\t\t\t\t\t\tid : payload.id ,\n\t\t\t\t\t\t\tchatId : payload.chatId,\n\t\t\t\t\t\t\tfields : {blink: false}\n\t\t\t\t\t\t});\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tdelete: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (!(payload.id instanceof Array))\n\t\t\t\t{\n\t\t\t\t\tpayload.id = [payload.id];\n\t\t\t\t}\n\n\t\t\t\tpayload.id = payload.id.map(id => {\n\t\t\t\t\tif (/^\\d+$/.test(id))\n\t\t\t\t\t{\n\t\t\t\t\t\tid = parseInt(id);\n\t\t\t\t\t}\n\t\t\t\t\treturn id;\n\t\t\t\t});\n\n\t\t\t\tstore.commit('delete', {\n\t\t\t\t\tchatId : payload.chatId,\n\t\t\t\t\telements : payload.id,\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tclear: (store, payload) =>\n\t\t\t{\n\t\t\t\tpayload.chatId = parseInt(payload.chatId);\n\n\t\t\t\tif (payload.keepPlaceholders)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('clearMessages', {\n\t\t\t\t\t\tchatId : payload.chatId\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tstore.commit('clear', {\n\t\t\t\t\t\tchatId : payload.chatId\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tapplyMutationType: (store, payload) =>\n\t\t\t{\n\t\t\t\tpayload.chatId = parseInt(payload.chatId);\n\n\t\t\t\tstore.commit('applyMutationType', {\n\t\t\t\t\tchatId : payload.chatId\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\treadMessages: (store, payload) =>\n\t\t\t{\n\t\t\t\tpayload.readId = parseInt(payload.readId) || 0;\n\t\t\t\tpayload.chatId = parseInt(payload.chatId);\n\n\t\t\t\tif (typeof store.state.collection[payload.chatId] === 'undefined')\n\t\t\t\t{\n\t\t\t\t\treturn {count: 0}\n\t\t\t\t}\n\n\t\t\t\tlet count = 0;\n\t\t\t\tfor (let index = store.state.collection[payload.chatId].length-1; index >= 0; index--)\n\t\t\t\t{\n\t\t\t\t\tlet element = store.state.collection[payload.chatId][index];\n\t\t\t\t\tif (!element.unread)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif (payload.readId === 0 || element.id <= payload.readId)\n\t\t\t\t\t{\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tstore.commit('readMessages', {\n\t\t\t\t\tchatId: payload.chatId,\n\t\t\t\t\treadId: payload.readId,\n\t\t\t\t});\n\n\t\t\t\treturn {count};\n\t\t\t},\n\t\t\tunreadMessages: (store, payload) =>\n\t\t\t{\n\t\t\t\tpayload.unreadId = parseInt(payload.unreadId) || 0;\n\t\t\t\tpayload.chatId = parseInt(payload.chatId);\n\n\t\t\t\tif (typeof store.state.collection[payload.chatId] === 'undefined' || !payload.unreadId)\n\t\t\t\t{\n\t\t\t\t\treturn {count: 0}\n\t\t\t\t}\n\n\t\t\t\tlet count = 0;\n\t\t\t\tfor (let index = store.state.collection[payload.chatId].length-1; index >= 0; index--)\n\t\t\t\t{\n\t\t\t\t\tlet element = store.state.collection[payload.chatId][index];\n\t\t\t\t\tif (element.unread)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif (element.id >= payload.unreadId)\n\t\t\t\t\t{\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tstore.commit('unreadMessages', {\n\t\t\t\t\tchatId: payload.chatId,\n\t\t\t\t\tunreadId: payload.unreadId,\n\t\t\t\t});\n\n\t\t\t\treturn {count};\n\t\t\t},\n\t\t}\n\t}\n\n\tgetMutations()\n\t{\n\t\treturn {\n\t\t\tinitCollection: (state, payload) =>\n\t\t\t{\n\t\t\t\treturn this.initCollection(state, payload);\n\t\t\t},\n\t\t\tadd: (state, payload) =>\n\t\t\t{\n\t\t\t\tthis.initCollection(state, {chatId: payload.chatId});\n\n\t\t\t\tstate.collection[payload.chatId].push(payload);\n\t\t\t\tstate.saveMessageList[payload.chatId].push(payload.id);\n\n\t\t\t\tstate.created += 1;\n\n\t\t\t\tstate.collection[payload.chatId].sort((a, b) => a.id - b.id);\n\t\t\t\tthis.saveState(state, payload.chatId);\n\t\t\t\tLogger.warn('Messages model: saving state after add');\n\t\t\t},\n\t\t\tclearPlaceholders: (state, payload) =>\n\t\t\t{\n\t\t\t\tif (!state.collection[payload.chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tstate.collection[payload.chatId] = state.collection[payload.chatId].filter(element => {\n\t\t\t\t\treturn !element.id.toString().startsWith('placeholder');\n\t\t\t\t});\n\t\t\t},\n\t\t\tupdatePlaceholders: (state, payload) =>\n\t\t\t{\n\t\t\t\tconst firstPlaceholderId = `placeholder${payload.firstMessage}`;\n\t\t\t\tconst firstPlaceholderIndex = state.collection[payload.chatId].findIndex((message) => {\n\t\t\t\t\treturn message.id === firstPlaceholderId;\n\t\t\t\t});\n\t\t\t\t// Logger.warn('firstPlaceholderIndex', firstPlaceholderIndex);\n\t\t\t\tif (firstPlaceholderIndex >= 0)\n\t\t\t\t{\n\t\t\t\t\t// Logger.warn('before delete', state.collection[payload.chatId].length, [...state.collection[payload.chatId]]);\n\t\t\t\t\tstate.collection[payload.chatId].splice(firstPlaceholderIndex, payload.amount);\n\t\t\t\t\t// Logger.warn('after delete', state.collection[payload.chatId].length, [...state.collection[payload.chatId]]);\n\t\t\t\t\tstate.collection[payload.chatId].splice(firstPlaceholderIndex, 0, ...payload.data);\n\t\t\t\t\t// Logger.warn('after add', state.collection[payload.chatId].length, [...state.collection[payload.chatId]]);\n\t\t\t\t}\n\n\t\t\t\tstate.collection[payload.chatId].sort((a, b) => a.id - b.id);\n\t\t\t\tLogger.warn('Messages model: saving state after updating placeholders');\n\t\t\t\tthis.saveState(state, payload.chatId);\n\t\t\t},\n\t\t\tset: (state, payload) =>\n\t\t\t{\n\t\t\t\tLogger.warn('Messages model: set mutation', payload);\n\t\t\t\tlet chats = [];\n\t\t\t\tlet chatsSave = [];\n\t\t\t\tlet isPush = false;\n\n\t\t\t\tpayload.data = MessagesModel.getPayloadWithTempMessages(state, payload);\n\n\t\t\t\tconst initialType = payload.insertType;\n\n\t\t\t\tif (payload.insertType === MutationType.set)\n\t\t\t\t{\n\t\t\t\t\tpayload.insertType = MutationType.setAfter;\n\n\t\t\t\t\tlet elements = {};\n\t\t\t\t\tpayload.data.forEach(element => {\n\t\t\t\t\t\tif (!elements[element.chatId])\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\telements[element.chatId] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\telements[element.chatId].push(element.id);\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let chatId in elements)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!elements.hasOwnProperty(chatId))\n\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\tthis.initCollection(state, {chatId});\n\t\t\t\t\t\tLogger.warn('Messages model: messages before adding from request - ', state.collection[chatId].length);\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tstate.saveMessageList[chatId].length > elements[chatId].length\n\t\t\t\t\t\t\t|| elements[chatId].length < StorageLimit.messages\n\t\t\t\t\t\t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstate.collection[chatId] = state.collection[chatId].filter(element => elements[chatId].includes(element.id));\n\t\t\t\t\t\t\tstate.saveMessageList[chatId] = state.saveMessageList[chatId].filter(id => elements[chatId].includes(id));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tLogger.warn('Messages model: cache length', state.saveMessageList[chatId].length);\n\t\t\t\t\t\tlet intersection = this.manageCacheBeforeSet(\n\t\t\t\t\t\t\t[...state.saveMessageList[chatId].reverse()],\n\t\t\t\t\t\t\telements[chatId]\n\t\t\t\t\t\t);\n\t\t\t\t\t\tLogger.warn('Messages model: set intersection with cache', intersection);\n\n\t\t\t\t\t\tif (intersection.type === IntersectionType.none)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (intersection.foundElements.length > 0)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tstate.collection[chatId] = state.collection[chatId].filter(element => !intersection.foundElements.includes(element.id));\n\t\t\t\t\t\t\t\tstate.saveMessageList[chatId] = state.saveMessageList[chatId].filter(id => !intersection.foundElements.includes(id));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tLogger.warn('Messages model: no intersection - removing cache');\n\t\t\t\t\t\t\tthis.removeIntersectionCacheElements = state.collection[chatId].map(element => element.id);\n\n\t\t\t\t\t\t\tstate.collection[chatId] = state.collection[chatId].filter(element => !this.removeIntersectionCacheElements.includes(element.id));\n\t\t\t\t\t\t\tstate.saveMessageList[chatId] = state.saveMessageList[chatId].filter(id => !this.removeIntersectionCacheElements.includes(id));\n\t\t\t\t\t\t\tthis.removeIntersectionCacheElements = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (intersection.type === IntersectionType.foundReverse)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLogger.warn('Messages model: found reverse intersection');\n\t\t\t\t\t\t\tpayload.insertType = MutationType.setBefore;\n\t\t\t\t\t\t\tpayload.data = payload.data.reverse();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tLogger.warn('Messages model: adding messages to model', payload.data);\n\t\t\t\tfor (let element of payload.data)\n\t\t\t\t{\n\t\t\t\t\tthis.initCollection(state, {chatId: element.chatId});\n\n\t\t\t\t\tlet index = state.collection[element.chatId].findIndex(localMessage => {\n\t\t\t\t\t\tif (MessagesModel.isTemporaryMessage(localMessage))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn localMessage.templateId === element.templateId;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn localMessage.id === element.id;\n\t\t\t\t\t});\n\t\t\t\t\tif (index > -1)\n\t\t\t\t\t{\n\t\t\t\t\t\tstate.collection[element.chatId][index] = Object.assign(\n\t\t\t\t\t\t\tstate.collection[element.chatId][index],\n\t\t\t\t\t\t\telement\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\telse if (payload.insertType === MutationType.setBefore)\n\t\t\t\t\t{\n\t\t\t\t\t\tstate.collection[element.chatId].unshift(element);\n\t\t\t\t\t}\n\t\t\t\t\telse if (payload.insertType === MutationType.setAfter)\n\t\t\t\t\t{\n\t\t\t\t\t\tstate.collection[element.chatId].push(element);\n\t\t\t\t\t}\n\n\t\t\t\t\tchats.push(element.chatId);\n\n\t\t\t\t\tif (this.store.getters['dialogues/canSaveChat'] && this.store.getters['dialogues/canSaveChat'](element.chatId))\n\t\t\t\t\t{\n\t\t\t\t\t\tchatsSave.push(element.chatId);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tchats = [...new Set(chats)];\n\t\t\t\tchatsSave = [...new Set(chatsSave)];\n\n\t\t\t\tisPush = payload.data.every(element => element.push === true);\n\t\t\t\tLogger.warn('Is it fake push message?', isPush);\n\t\t\t\tchats.forEach(chatId => {\n\t\t\t\t\tstate.collection[chatId].sort((a, b) => a.id - b.id);\n\n\t\t\t\t\tif (!isPush)\n\t\t\t\t\t{\n\t\t\t\t\t\t//send event that messages are ready and we can start reading etc\n\t\t\t\t\t\tLogger.warn('setting messagesSet = true for chatId = ', chatId);\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tEventEmitter.emit(EventType.dialog.messagesSet, {chatId});\n\t\t\t\t\t\t\tEventEmitter.emit(EventType.dialog.readVisibleMessages, {chatId});\n\t\t\t\t\t\t}, 100);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (initialType !== MutationType.setBefore)\n\t\t\t\t{\n\t\t\t\t\tchatsSave.forEach(chatId => {\n\t\t\t\t\t\tLogger.warn('Messages model: saving state after set');\n\t\t\t\t\t\tthis.saveState(state, chatId);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tupdate: (state, payload) =>\n\t\t\t{\n\t\t\t\tthis.initCollection(state, {chatId: payload.chatId});\n\n\t\t\t\tlet index = -1;\n\t\t\t\tif (typeof payload.index !== 'undefined' && state.collection[payload.chatId][payload.index])\n\t\t\t\t{\n\t\t\t\t\tindex = payload.index;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tindex = state.collection[payload.chatId].findIndex(el => el.id === payload.id);\n\t\t\t\t}\n\n\t\t\t\tif (index >= 0)\n\t\t\t\t{\n\t\t\t\t\tlet isSaveState = (\n\t\t\t\t\t\tstate.saveMessageList[payload.chatId].includes(state.collection[payload.chatId][index].id)\n\t\t\t\t\t\t|| payload.fields.id && !payload.fields.id.toString().startsWith('temporary') && state.collection[payload.chatId][index].id.toString().startsWith('temporary')\n\t\t\t\t\t);\n\n\t\t\t\t\tstate.collection[payload.chatId][index] = Object.assign(\n\t\t\t\t\t\tstate.collection[payload.chatId][index],\n\t\t\t\t\t\tpayload.fields\n\t\t\t\t\t);\n\n\t\t\t\t\tif (isSaveState)\n\t\t\t\t\t{\n\t\t\t\t\t\tLogger.warn('Messages model: saving state after update');\n\t\t\t\t\t\tthis.saveState(state, payload.chatId);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelete: (state, payload) =>\n\t\t\t{\n\t\t\t\tthis.initCollection(state, {chatId: payload.chatId});\n\n\t\t\t\tstate.collection[payload.chatId] = state.collection[payload.chatId].filter(element => !payload.elements.includes(element.id));\n\n\t\t\t\tif (state.saveMessageList[payload.chatId].length > 0)\n\t\t\t\t{\n\t\t\t\t\tfor (let id of payload.elements)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (state.saveMessageList[payload.chatId].includes(id))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLogger.warn('Messages model: saving state after delete');\n\t\t\t\t\t\t\tthis.saveState(state, payload.chatId);\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tclear: (state, payload) =>\n\t\t\t{\n\t\t\t\tthis.initCollection(state, {chatId: payload.chatId});\n\n\t\t\t\tstate.collection[payload.chatId] = [];\n\t\t\t\tstate.saveMessageList[payload.chatId] = [];\n\t\t\t},\n\t\t\tclearMessages: (state, payload) =>\n\t\t\t{\n\t\t\t\tthis.initCollection(state, {chatId: payload.chatId});\n\n\t\t\t\tstate.collection[payload.chatId] = state.collection[payload.chatId].filter(element => {\n\t\t\t\t\treturn element.id.toString().startsWith('placeholder');\n\t\t\t\t});\n\t\t\t\tstate.saveMessageList[payload.chatId] = [];\n\t\t\t},\n\t\t\tapplyMutationType: (state, payload) =>\n\t\t\t{\n\t\t\t\tif (typeof state.mutationType[payload.chatId] === 'undefined')\n\t\t\t\t{\n\t\t\t\t\tstate.mutationType[payload.chatId] = {applied: false, initialType: MutationType.none, appliedType: MutationType.none, scrollStickToTop: 0, scrollMessageId: 0};\n\t\t\t\t}\n\n\t\t\t\tstate.mutationType[payload.chatId].applied = true;\n\t\t\t},\n\t\t\treadMessages: (state, payload) =>\n\t\t\t{\n\t\t\t\tthis.initCollection(state, {chatId: payload.chatId});\n\n\t\t\t\tlet saveNeeded = false;\n\t\t\t\tfor (let index = state.collection[payload.chatId].length-1; index >= 0; index--)\n\t\t\t\t{\n\t\t\t\t\tlet element = state.collection[payload.chatId][index];\n\t\t\t\t\tif (!element.unread)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif (payload.readId === 0 || element.id <= payload.readId)\n\t\t\t\t\t{\n\t\t\t\t\t\tstate.collection[payload.chatId][index] = Object.assign(\n\t\t\t\t\t\t\tstate.collection[payload.chatId][index],\n\t\t\t\t\t\t\t{unread: false}\n\t\t\t\t\t\t);\n\t\t\t\t\t\tsaveNeeded = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (saveNeeded)\n\t\t\t\t{\n\t\t\t\t\tLogger.warn('Messages model: saving state after reading');\n\t\t\t\t\tthis.saveState(state, payload.chatId);\n\t\t\t\t}\n\t\t\t},\n\t\t\tunreadMessages: (state, payload) =>\n\t\t\t{\n\t\t\t\tthis.initCollection(state, {chatId: payload.chatId});\n\n\t\t\t\tlet saveNeeded = false;\n\t\t\t\tfor (let index = state.collection[payload.chatId].length-1; index >= 0; index--)\n\t\t\t\t{\n\t\t\t\t\tlet element = state.collection[payload.chatId][index];\n\t\t\t\t\tif (element.unread)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif (element.id >= payload.unreadId)\n\t\t\t\t\t{\n\t\t\t\t\t\tstate.collection[payload.chatId][index] = Object.assign(\n\t\t\t\t\t\t\tstate.collection[payload.chatId][index],\n\t\t\t\t\t\t\t{unread: true}\n\t\t\t\t\t\t);\n\t\t\t\t\t\tsaveNeeded = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (saveNeeded)\n\t\t\t\t{\n\t\t\t\t\tLogger.warn('Messages model: saving state after unreading');\n\t\t\t\t\tthis.saveState(state, payload.chatId);\n\t\t\t\t\tthis.updateSubordinateStates();\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tinitCollection(state, payload)\n\t{\n\t\tif (typeof payload.chatId === 'undefined')\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (\n\t\t\ttypeof payload.chatId === 'undefined'\n\t\t\t|| typeof state.collection[payload.chatId] !== 'undefined'\n\t\t)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tstate.collection[payload.chatId] = payload.messages? [...payload.messages]: [];\n\t\tstate.saveMessageList[payload.chatId] = [];\n\t\tstate.saveFileList[payload.chatId] = [];\n\t\tstate.saveUserList[payload.chatId] = [];\n\n\t\treturn true;\n\t}\n\n\tprepareMessage(message, options = {})\n\t{\n\t\tlet result = this.validate(Object.assign({}, message), options);\n\n\t\tresult.params = Object.assign({}, this.getElementState().params, result.params);\n\t\tif (!result.templateId)\n\t\t{\n\t\t\tresult.templateId = result.id;\n\t\t}\n\n\t\treturn Object.assign({}, this.getElementState(), result);\n\t}\n\n\tmanageCacheBeforeSet(cache, elements, recursive = false)\n\t{\n\t\tLogger.warn('manageCacheBeforeSet', cache, elements);\n\t\tlet result = {\n\t\t\ttype: IntersectionType.empty,\n\t\t\tfoundElements: [],\n\t\t\tnoneElements: []\n\t\t};\n\n\t\tif (!cache || cache.length <= 0)\n\t\t{\n\t\t\treturn result;\n\t\t}\n\n\t\tfor (let id of elements)\n\t\t{\n\t\t\tif (cache.includes(id))\n\t\t\t{\n\t\t\t\tif (result.type === IntersectionType.empty)\n\t\t\t\t{\n\t\t\t\t\tresult.type = IntersectionType.found;\n\t\t\t\t}\n\t\t\t\tresult.foundElements.push(id);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (result.type === IntersectionType.empty)\n\t\t\t\t{\n\t\t\t\t\tresult.type = IntersectionType.none;\n\t\t\t\t}\n\t\t\t\tresult.noneElements.push(id);\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tresult.type === IntersectionType.found\n\t\t\t&& cache.length === elements.length\n\t\t\t&& result.foundElements.length === elements.length\n\t\t)\n\t\t{\n\t\t\tresult.type = IntersectionType.equal;\n\t\t}\n\t\telse if (\n\t\t\tresult.type === IntersectionType.none\n\t\t\t&& !recursive\n\t\t\t&& result.foundElements.length > 0\n\t\t)\n\t\t{\n\t\t\tlet reverseResult = this.manageCacheBeforeSet(cache.reverse(), elements.reverse(), true);\n\t\t\tif (reverseResult.type === IntersectionType.found)\n\t\t\t{\n\t\t\t\treverseResult.type = IntersectionType.foundReverse;\n\t\t\t\treturn reverseResult;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tupdateSaveLists(state, chatId)\n\t{\n\t\tif (!this.isSaveAvailable())\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tif (\n\t\t\t!chatId\n\t\t\t|| !this.store.getters['dialogues/canSaveChat']\n\t\t\t|| !this.store.getters['dialogues/canSaveChat'](chatId)\n\t\t)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.initCollection(state, {chatId: chatId});\n\n\t\tlet count = 0;\n\t\tlet saveMessageList = [];\n\t\tlet saveFileList = [];\n\t\tlet saveUserList = [];\n\n\t\tlet dialog = this.store.getters['dialogues/getByChatId'](chatId);\n\t\tif (dialog && dialog.type === 'private')\n\t\t{\n\t\t\tsaveUserList.push(parseInt(dialog.dialogId));\n\t\t}\n\n\t\tlet readCounter = 0;\n\t\tfor (let index = state.collection[chatId].length-1; index >= 0; index--)\n\t\t{\n\t\t\tif (state.collection[chatId][index].id.toString().startsWith('temporary'))\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!state.collection[chatId][index].unread)\n\t\t\t{\n\t\t\t\treadCounter++;\n\t\t\t}\n\n\t\t\tif (count >= StorageLimit.messages && readCounter >= 50)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tsaveMessageList.unshift(state.collection[chatId][index].id);\n\n\t\t\tcount++;\n\t\t}\n\n\t\tsaveMessageList = saveMessageList.slice(0, StorageLimit.messages);\n\n\t\tstate.collection[chatId].filter(element => saveMessageList.includes(element.id)).forEach(element =>\n\t\t{\n\t\t\tif (element.authorId > 0)\n\t\t\t{\n\t\t\t\tsaveUserList.push(element.authorId);\n\t\t\t}\n\n\t\t\tif (element.params.FILE_ID instanceof Array)\n\t\t\t{\n\t\t\t\tsaveFileList = element.params.FILE_ID.concat(saveFileList);\n\t\t\t}\n\t\t});\n\n\t\tstate.saveMessageList[chatId] = saveMessageList;\n\t\tstate.saveFileList[chatId] = [...new Set(saveFileList)];\n\t\tstate.saveUserList[chatId] = [...new Set(saveUserList)];\n\n\t\treturn true;\n\t}\n\n\tgetSaveTimeout()\n\t{\n\t\treturn 150;\n\t}\n\n\tsaveState(state, chatId)\n\t{\n\t\tif (!this.updateSaveLists(state, chatId))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tsuper.saveState(() =>\n\t\t{\n\t\t\tlet storedState = {\n\t\t\t\tcollection: {},\n\t\t\t\tsaveMessageList: {},\n\t\t\t\tsaveUserList: {},\n\t\t\t\tsaveFileList: {},\n\t\t\t};\n\n\t\t\tfor (let chatId in state.saveMessageList)\n\t\t\t{\n\t\t\t\tif (!state.saveMessageList.hasOwnProperty(chatId))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!storedState.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\tstoredState.collection[chatId] = [];\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId]\n\t\t\t\t\t.filter(element => state.saveMessageList[chatId].includes(element.id))\n\t\t\t\t\t.forEach(element => {\n\t\t\t\t\t\tif (element.templateType !== 'placeholder')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstoredState.collection[chatId].push(element);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\tLogger.warn('Cache after updating', storedState.collection[chatId]);\n\n\t\t\t\tstoredState.saveMessageList[chatId] = state.saveMessageList[chatId];\n\t\t\t\tstoredState.saveFileList[chatId] = state.saveFileList[chatId];\n\t\t\t\tstoredState.saveUserList[chatId] = state.saveUserList[chatId];\n\t\t\t}\n\n\t\t\treturn storedState;\n\t\t});\n\t}\n\n\tupdateSubordinateStates()\n\t{\n\t\tthis.store.dispatch('users/saveState');\n\t\tthis.store.dispatch('files/saveState');\n\t}\n\n\tvalidate(fields, options)\n\t{\n\t\tconst result = {};\n\n\t\tif (typeof fields.id === \"number\")\n\t\t{\n\t\t\tresult.id = fields.id;\n\t\t}\n\t\telse if (typeof fields.id === \"string\")\n\t\t{\n\t\t\tif (fields.id.startsWith('temporary') || fields.id.startsWith('placeholder') || Utils.text.isUuidV4(fields.id))\n\t\t\t{\n\t\t\t\tresult.id = fields.id;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.id = parseInt(fields.id);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.uuid === \"string\")\n\t\t{\n\t\t\tresult.templateId = fields.uuid;\n\t\t}\n\t\telse if (typeof fields.templateId === \"number\")\n\t\t{\n\t\t\tresult.templateId = fields.templateId;\n\t\t}\n\t\telse if (typeof fields.templateId === \"string\")\n\t\t{\n\t\t\tif (fields.templateId.startsWith('temporary') || Utils.text.isUuidV4(fields.templateId))\n\t\t\t{\n\t\t\t\tresult.templateId = fields.templateId;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.templateId = parseInt(fields.templateId);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.templateType === \"string\")\n\t\t{\n\t\t\tresult.templateType = fields.templateType;\n\t\t}\n\n\t\tif (typeof fields.placeholderType === \"number\")\n\t\t{\n\t\t\tresult.placeholderType = fields.placeholderType;\n\t\t}\n\n\t\tif (typeof fields.chat_id !== 'undefined')\n\t\t{\n\t\t\tfields.chatId = fields.chat_id;\n\t\t}\n\t\tif (typeof fields.chatId === \"number\" || typeof fields.chatId === \"string\")\n\t\t{\n\t\t\tresult.chatId = parseInt(fields.chatId);\n\t\t}\n\t\tif (typeof fields.date !== \"undefined\")\n\t\t{\n\t\t\tresult.date = Utils.date.cast(fields.date);\n\t\t}\n\n\t\t// previous P&P format\n\t\tif (typeof fields.textOriginal === \"string\" || typeof fields.textOriginal === \"number\")\n\t\t{\n\t\t\tresult.text = fields.textOriginal.toString();\n\n\t\t\tif (typeof fields.text === \"string\" || typeof fields.text === \"number\")\n\t\t\t{\n\t\t\t\tresult.textConverted = this.convertToHtml({\n\t\t\t\t\ttext: fields.text.toString(),\n\t\t\t\t\tisConverted: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\telse // modern format\n\t\t{\n\t\t\tif (typeof fields.text_converted !== 'undefined')\n\t\t\t{\n\t\t\t\tfields.textConverted = fields.text_converted;\n\t\t\t}\n\t\t\tif (typeof fields.textConverted === \"string\" || typeof fields.textConverted === \"number\")\n\t\t\t{\n\t\t\t\tresult.textConverted = fields.textConverted.toString();\n\t\t\t}\n\t\t\tif (typeof fields.text === \"string\" || typeof fields.text === \"number\")\n\t\t\t{\n\t\t\t\tresult.text = fields.text.toString();\n\n\t\t\t\tlet isConverted = typeof result.textConverted !== 'undefined';\n\n\t\t\t\tresult.textConverted = this.convertToHtml({\n\t\t\t\t\ttext: isConverted? result.textConverted: result.text,\n\t\t\t\t\tisConverted\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.senderId !== 'undefined')\n\t\t{\n\t\t\tfields.authorId = fields.senderId;\n\t\t}\n\t\telse if (typeof fields.author_id !== 'undefined')\n\t\t{\n\t\t\tfields.authorId = fields.author_id;\n\t\t}\n\t\tif (typeof fields.authorId === \"number\" || typeof fields.authorId === \"string\")\n\t\t{\n\t\t\tif (fields.system === true || fields.system === 'Y')\n\t\t\t{\n\t\t\t\tresult.authorId = 0;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.authorId = parseInt(fields.authorId);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.params === \"object\" && fields.params !== null)\n\t\t{\n\t\t\tconst params = this.validateParams(fields.params, options);\n\t\t\tif (params)\n\t\t\t{\n\t\t\t\tresult.params = params;\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.push === \"boolean\")\n\t\t{\n\t\t\tresult.push = fields.push;\n\t\t}\n\n\t\tif (typeof fields.sending === \"boolean\")\n\t\t{\n\t\t\tresult.sending = fields.sending;\n\t\t}\n\n\t\tif (typeof fields.unread === \"boolean\")\n\t\t{\n\t\t\tresult.unread = fields.unread;\n\t\t}\n\n\t\tif (typeof fields.blink === \"boolean\")\n\t\t{\n\t\t\tresult.blink = fields.blink;\n\t\t}\n\n\t\tif (typeof fields.error === \"boolean\" || typeof fields.error === \"string\")\n\t\t{\n\t\t\tresult.error = fields.error;\n\t\t}\n\n\t\tif (typeof fields.retry === \"boolean\")\n\t\t{\n\t\t\tresult.retry = fields.retry;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tvalidateParams(params, options)\n\t{\n\t\tconst result = {};\n\t\ttry\n\t\t{\n\t\t\tfor (let field in params)\n\t\t\t{\n\t\t\t\tif (!params.hasOwnProperty(field))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (field === 'COMPONENT_ID')\n\t\t\t\t{\n\t\t\t\t\tif (typeof params[field] === \"string\" && BX.Vue.isComponent(params[field]))\n\t\t\t\t\t{\n\t\t\t\t\t\tresult[field] = params[field];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (field === 'LIKE')\n\t\t\t\t{\n\t\t\t\t\tif (params[field] instanceof Array)\n\t\t\t\t\t{\n\t\t\t\t\t\tresult['REACTION'] = {like: params[field].map(element => parseInt(element))};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (field === 'CHAT_LAST_DATE')\n\t\t\t\t{\n\t\t\t\t\tresult[field] = Utils.date.cast(params[field]);\n\t\t\t\t}\n\t\t\t\telse if (field === 'AVATAR')\n\t\t\t\t{\n\t\t\t\t\tif (params[field])\n\t\t\t\t\t{\n\t\t\t\t\t\tresult[field] = params[field].startsWith('http') ? params[field] : options.host + params[field];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (field === 'NAME')\n\t\t\t\t{\n\t\t\t\t\tif (params[field])\n\t\t\t\t\t{\n\t\t\t\t\t\tresult[field] = params[field];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (field === 'LINK_ACTIVE')\n\t\t\t\t{\n\t\t\t\t\tif (params[field])\n\t\t\t\t\t{\n\t\t\t\t\t\tresult[field] = params[field].map(function(userId) {\n\t\t\t\t\t\t\treturn parseInt(userId)\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (field === 'ATTACH')\n\t\t\t\t{\n\t\t\t\t\tresult[field] = this.decodeAttach(params[field]);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tresult[field] = params[field];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (e) {}\n\n\t\tlet hasResultElements = false;\n\t\tfor (let field in result)\n\t\t{\n\t\t\tif (!result.hasOwnProperty(field))\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\thasResultElements = true;\n\t\t\tbreak\n\t\t}\n\n\t\treturn hasResultElements? result: null;\n\t}\n\n\tconvertToHtml(params = {})\n\t{\n\t\tlet {\n\t\t\tquote = true,\n\t\t\timage = true,\n\t\t\ttext = '',\n\t\t\tisConverted = false,\n\t\t\tenableBigSmile = true\n\t\t} = params;\n\n\t\ttext = text.trim();\n\n\t\tif (!isConverted)\n\t\t{\n\t\t\ttext = text.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>');\n\t\t}\n\n\t\tif (text.startsWith('/me'))\n\t\t{\n\t\t\ttext = `<i>${text.substr(4)}</i>`;\n\t\t}\n\t\telse if (text.startsWith('/loud'))\n\t\t{\n\t\t\ttext = `<b>${text.substr(6)}</b>`;\n\t\t}\n\n\t\tconst quoteSign = \">>\";\n\t\tif (quote && text.indexOf(quoteSign) >= 0)\n\t\t{\n\t\t\tlet textPrepareFlag = false;\n\t\t\tlet textPrepare = text.split(isConverted? \"<br />\": \"\\n\");\n\t\t\tfor (let i = 0; i < textPrepare.length; i++)\n\t\t\t{\n\t\t\t\tif (textPrepare[i].startsWith(quoteSign))\n\t\t\t\t{\n\t\t\t\t\ttextPrepare[i] = textPrepare[i].replace(quoteSign, '<div class=\"bx-im-message-content-quote\"><div class=\"bx-im-message-content-quote-wrap\">');\n\t\t\t\t\twhile (++i < textPrepare.length && textPrepare[i].startsWith(quoteSign))\n\t\t\t\t\t{\n\t\t\t\t\t\ttextPrepare[i] = textPrepare[i].replace(quoteSign, '');\n\t\t\t\t\t}\n\t\t\t\t\ttextPrepare[i - 1] += '</div></div><br>';\n\t\t\t\t\ttextPrepareFlag = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttext = textPrepare.join(\"<br />\");\n\t\t}\n\n\t\ttext = text.replace(/\\n/gi, '<br />');\n\n\t\ttext = text.replace(/\\t/gi, ' ');\n\n\t\ttext = this.decodeBbCode(text, false, enableBigSmile);\n\n\t\tif (quote)\n\t\t{\n\t\t\ttext = text.replace(/------------------------------------------------------<br \\/>(.*?)\\[(.*?)\\]<br \\/>(.*?)------------------------------------------------------(<br \\/>)?/g, function (whole, p1, p2, p3, p4, offset) {\n\t\t\t\treturn (offset > 0? '<br>': '') + \"<div class=\\\"bx-im-message-content-quote\\\"><div class=\\\"bx-im-message-content-quote-wrap\\\"><div class=\\\"bx-im-message-content-quote-name\\\"><span class=\\\"bx-im-message-content-quote-name-text\\\">\" + p1 + \"</span><span class=\\\"bx-im-message-content-quote-name-time\\\">\" + p2 + \"</span></div>\" + p3 + \"</div></div><br />\";\n\t\t\t});\n\t\t\ttext = text.replace(/------------------------------------------------------<br \\/>(.*?)------------------------------------------------------(<br \\/>)?/g, function (whole, p1, p2, p3, offset) {\n\t\t\t\treturn (offset > 0? '<br>': '') + \"<div class=\\\"bx-im-message-content-quote\\\"><div class=\\\"bx-im-message-content-quote-wrap\\\">\" + p1 + \"</div></div><br />\";\n\t\t\t});\n\t\t}\n\n\t\tif (image)\n\t\t{\n\t\t\tlet changed = false;\n\t\t\ttext = text.replace(/<a(.*?)>(http[s]{0,1}:\\/\\/.*?)<\\/a>/ig, function(whole, aInner, text, offset)\n\t\t\t{\n\t\t\t\tif(!text.match(/(\\.(jpg|jpeg|png|gif|webp)\\?|\\.(jpg|jpeg|png|gif|webp)$)/i) || text.indexOf(\"/docs/pub/\") > 0 || text.indexOf(\"logout=yes\") > 0)\n\t\t\t\t{\n\t\t\t\t\treturn whole;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tchanged = true;\n\t\t\t\t\treturn (offset > 0? '<br />':'')+'<a' +aInner+ ' target=\"_blank\" class=\"bx-im-element-file-image\"><img src=\"'+text+'\" class=\"bx-im-element-file-image-source-text\" onerror=\"BX.Messenger.Model.MessagesModel.hideErrorImage(this)\"></a></span>';\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (changed)\n\t\t\t{\n\t\t\t\ttext = text.replace(/<\\/span>(\\n?)<br(\\s\\/?)>/ig, '</span>').replace(/<br(\\s\\/?)>(\\n?)<br(\\s\\/?)>(\\n?)<span/ig, '<br /><span');\n\t\t\t}\n\t\t}\n\n\t\tif (enableBigSmile)\n\t\t{\n\t\t\ttext = text.replace(\n\t\t\t\t/^(\\s*<img\\s+src=[^>]+?data-code=[^>]+?data-definition=\"UHD\"[^>]+?style=\"width:)(\\d+)(px[^>]+?height:)(\\d+)(px[^>]+?class=\"bx-smile\"\\s*\\/?>\\s*)$/,\n\t\t\t\tfunction doubleSmileSize(match, start, width, middle, height, end) {\n\t\t\t\t\treturn start + (parseInt(width, 10) * 1.7) + middle + (parseInt(height, 10) * 1.7) + end;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (text.substr(-6) == '<br />')\n\t\t{\n\t\t\ttext = text.substr(0, text.length - 6);\n\t\t}\n\t\ttext = text.replace(/<br><br \\/>/ig, '<br />');\n\t\ttext = text.replace(/<br \\/><br>/ig, '<br />');\n\n\t\treturn text;\n\t};\n\n\tdecodeBbCode(text, textOnly = false, enableBigSmile = true)\n\t{\n\t\treturn MessagesModel.decodeBbCode({text, textOnly, enableBigSmile})\n\t}\n\n\tdecodeAttach(item)\n\t{\n\t\tif (Array.isArray(item))\n\t\t{\n\t\t\titem.forEach(arrayElement => {\n\t\t\t\tarrayElement = this.decodeAttach(arrayElement);\n\t\t\t});\n\t\t}\n\t\telse if (typeof item === 'object' && item !== null)\n\t\t{\n\t\t\tfor (const prop in item)\n\t\t\t{\n\t\t\t\tif (item.hasOwnProperty(prop))\n\t\t\t\t{\n\t\t\t\t\titem[prop] = this.decodeAttach(item[prop]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (typeof item === 'string')\n\t\t\t{\n\t\t\t\titem = Utils.text.htmlspecialcharsback(item);\n\t\t\t}\n\t\t}\n\n\t\treturn item;\n\t}\n\n\tstatic decodeBbCode(params = {})\n\t{\n\t\tlet {text, textOnly = false, enableBigSmile = true} = params;\n\n\t\tlet putReplacement = [];\n\t\ttext = text.replace(/\\[PUT(?:=(.+?))?\\](.+?)?\\[\\/PUT\\]/ig, function(whole)\n\t\t{\n\t\t\tvar id = putReplacement.length;\n\t\t\tputReplacement.push(whole);\n\t\t\treturn '####REPLACEMENT_PUT_'+id+'####';\n\t\t});\n\n\t\tlet sendReplacement = [];\n\t\ttext = text.replace(/\\[SEND(?:=(.+?))?\\](.+?)?\\[\\/SEND\\]/ig, function(whole)\n\t\t{\n\t\t\tvar id = sendReplacement.length;\n\t\t\tsendReplacement.push(whole);\n\t\t\treturn '####REPLACEMENT_SEND_'+id+'####';\n\t\t});\n\n\t\tlet codeReplacement = [];\n\t\ttext = text.replace(/\\[CODE\\]\\n?(.*?)\\[\\/CODE\\]/sig, function(whole, text) {\n\t\t\tlet id = codeReplacement.length;\n\t\t\tcodeReplacement.push(text);\n\t\t\treturn '####REPLACEMENT_CODE_'+id+'####';\n\t\t});\n\n\t\ttext = text.replace(/\\[url=([^\\]]+)\\](.*?)\\[\\/url\\]/ig, function(whole, link, text)\n\t\t{\n\t\t\tlet tag = document.createElement('a');\n\t\t\ttag.href = Utils.text.htmlspecialcharsback(link);\n\t\t\ttag.target = '_blank';\n\t\t\ttag.text = Utils.text.htmlspecialcharsback(text);\n\n\t\t\tlet allowList = [\n\t\t\t\t\"http:\",\n\t\t\t\t\"https:\",\n\t\t\t\t\"ftp:\",\n\t\t\t\t\"file:\",\n\t\t\t\t\"tel:\",\n\t\t\t\t\"callto:\",\n\t\t\t\t\"mailto:\",\n\t\t\t\t\"skype:\",\n\t\t\t\t\"viber:\",\n\t\t\t];\n\t\t\tif (allowList.indexOf(tag.protocol) <= -1)\n\t\t\t{\n\t\t\t\treturn whole;\n\t\t\t}\n\n\t\t\treturn tag.outerHTML;\n\t\t});\n\n\t\ttext = text.replace(/\\[url\\]([^\\]]+)\\[\\/url\\]/ig, function(whole, link)\n\t\t{\n\t\t\tlink = Utils.text.htmlspecialcharsback(link);\n\n\t\t\tlet tag = document.createElement('a');\n\t\t\ttag.href = link;\n\t\t\ttag.target = '_blank';\n\t\t\ttag.text = link;\n\n\t\t\tlet allowList = [\n\t\t\t\t\"http:\",\n\t\t\t\t\"https:\",\n\t\t\t\t\"ftp:\",\n\t\t\t\t\"file:\",\n\t\t\t\t\"tel:\",\n\t\t\t\t\"callto:\",\n\t\t\t\t\"mailto:\",\n\t\t\t\t\"skype:\",\n\t\t\t\t\"viber:\",\n\t\t\t];\n\t\t\tif (allowList.indexOf(tag.protocol) <= -1)\n\t\t\t{\n\t\t\t\treturn whole;\n\t\t\t}\n\n\t\t\treturn tag.outerHTML;\n\t\t});\n\n\t\ttext = text.replace(/\\[LIKE\\]/ig, '<span class=\"bx-smile bx-im-smile-like\"></span>');\n\t\ttext = text.replace(/\\[DISLIKE\\]/ig, '<span class=\"bx-smile bx-im-smile-dislike\"></span>');\n\n\t\ttext = text.replace(/\\[BR\\]/ig, '<br/>');\n\t\ttext = text.replace(/\\[([buis])\\](.*?)\\[(\\/[buis])\\]/ig, (whole, open, inner, close) => '<'+open+'>'+inner+'<'+close+'>'); // TODO tag USER\n\n\t\t// this code needs to be ported to im/install/js/im/view/message/body/src/body.js:229\n\t\ttext = text.replace(/\\[CHAT=(imol\\|)?([0-9]{1,})\\](.*?)\\[\\/CHAT\\]/ig, (whole, openlines, chatId, inner) => openlines? inner: '<span class=\"bx-im-mention\" data-type=\"CHAT\" data-value=\"chat'+chatId+'\">'+inner+'</span>'); // TODO tag CHAT\n\n\t\tif (false && Utils.device.isMobile())\n\t\t{\n\t\t\tlet replacements = [];\n\t\t\ttext = text.replace(/\\[CALL(?:=(.+?))?\\](.+?)?\\[\\/CALL\\]/ig, (whole, number, text) => {\n\t\t\t\tlet index = replacements.length;\n\t\t\t\treplacements.push({number, text});\n\t\t\t\treturn `####REPLACEMENT_MARK_${index}####`;\n\t\t\t});\n\n\t\t\ttext = text.replace(/[+]{0,1}(?:[-\\/. ()\\[\\]~;#,]*[0-9]){10,}[^\\n\\r<][-\\/. ()\\[\\]~;#,0-9^]*/g, (number) => {\n\t\t\t\tlet pureNumber = number.replace(/\\D/g, '');\n\t\t\t\treturn `[CALL=${pureNumber}]${number}[/CALL]`;\n\t\t\t});\n\n\t\t\treplacements.forEach((item, index) => {\n\t\t\t\ttext = text.replace(`####REPLACEMENT_MARK_${index}####`, `[CALL=${item.number}]${item.text}[/CALL]`)\n\t\t\t});\n\t\t}\n\n\t\ttext = text.replace(/\\[CALL(?:=(.+?))?\\](.+?)?\\[\\/CALL\\]/ig, (whole, number, text) => '<span class=\"bx-im-mention\" data-type=\"CALL\" data-value=\"'+Utils.text.htmlspecialchars(number)+'\">'+text+'</span>'); // TODO tag CHAT\n\n\t\ttext = text.replace(/\\[PCH=([0-9]{1,})\\](.*?)\\[\\/PCH\\]/ig, (whole, historyId, text) => text); // TODO tag PCH\n\n\t\tlet textElementSize = 0;\n\t\tif (enableBigSmile)\n\t\t{\n\t\t\ttextElementSize = text.replace(/\\[icon\\=([^\\]]*)\\]/ig, '').trim().length;\n\t\t}\n\n\t\ttext = text.replace(/\\[icon\\=([^\\]]*)\\]/ig, (whole) =>\n\t\t{\n\t\t\tlet url = whole.match(/icon\\=(\\S+[^\\s.,> )\\];\\'\\\"!?])/i);\n\t\t\tif (url && url[1])\n\t\t\t{\n\t\t\t\turl = url[1];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tlet attrs = {'src': url, 'border': 0};\n\n\t\t\tlet size = whole.match(/size\\=(\\d+)/i);\n\t\t\tif (size && size[1])\n\t\t\t{\n\t\t\t\tattrs['width'] = size[1];\n\t\t\t\tattrs['height'] = size[1];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlet width = whole.match(/width\\=(\\d+)/i);\n\t\t\t\tif (width && width[1])\n\t\t\t\t{\n\t\t\t\t\tattrs['width'] = width[1];\n\t\t\t\t}\n\n\t\t\t\tlet height = whole.match(/height\\=(\\d+)/i);\n\t\t\t\tif (height && height[1])\n\t\t\t\t{\n\t\t\t\t\tattrs['height'] = height[1];\n\t\t\t\t}\n\n\t\t\t\tif (attrs['width'] && !attrs['height'])\n\t\t\t\t{\n\t\t\t\t\tattrs['height'] = attrs['width'];\n\t\t\t\t}\n\t\t\t\telse if (attrs['height'] && !attrs['width'])\n\t\t\t\t{\n\t\t\t\t\tattrs['width'] = attrs['height'];\n\t\t\t\t}\n\t\t\t\telse if (attrs['height'] && attrs['width'])\n\t\t\t\t{}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tattrs['width'] = 20;\n\t\t\t\t\tattrs['height'] = 20;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tattrs['width'] = attrs['width']>100? 100: attrs['width'];\n\t\t\tattrs['height'] = attrs['height']>100? 100: attrs['height'];\n\n\t\t\tif (enableBigSmile && textElementSize === 0 && attrs['width'] === attrs['height'] && attrs['width'] === 20)\n\t\t\t{\n\t\t\t\tattrs['width'] = 40;\n\t\t\t\tattrs['height'] = 40;\n\t\t\t}\n\n\t\t\tlet title = whole.match(/title\\=(.*[^\\s\\]])/i);\n\t\t\tif (title && title[1])\n\t\t\t{\n\t\t\t\ttitle = title[1];\n\t\t\t\tif (title.indexOf('width=') > -1)\n\t\t\t\t{\n\t\t\t\t\ttitle = title.substr(0, title.indexOf('width='))\n\t\t\t\t}\n\t\t\t\tif (title.indexOf('height=') > -1)\n\t\t\t\t{\n\t\t\t\t\ttitle = title.substr(0, title.indexOf('height='))\n\t\t\t\t}\n\t\t\t\tif (title.indexOf('size=') > -1)\n\t\t\t\t{\n\t\t\t\t\ttitle = title.substr(0, title.indexOf('size='))\n\t\t\t\t}\n\t\t\t\tif (title)\n\t\t\t\t{\n\t\t\t\t\tattrs['title'] = Utils.text.htmlspecialchars(title).trim();\n\t\t\t\t\tattrs['alt'] = attrs['title'];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet attributes = '';\n\t\t\tfor (let name in attrs)\n\t\t\t{\n\t\t\t\tif (attrs.hasOwnProperty(name))\n\t\t\t\t{\n\t\t\t\t\tattributes += name+'=\"'+attrs[name]+'\" ';\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\treturn '<img class=\"bx-smile bx-icon\" '+attributes+'>';\n\t\t});\n\n\t\tsendReplacement.forEach((value, index) => {\n\t\t\ttext = text.replace('####REPLACEMENT_SEND_'+index+'####', value);\n\t\t});\n\n\t\ttext = text.replace(/\\[SEND(?:=(?:.+?))?\\](?:.+?)?\\[\\/SEND]/ig, (match) =>\n\t\t{\n\t\t\treturn match.replace(/\\[SEND(?:=(.+))?\\](.+?)?\\[\\/SEND]/ig, (whole, command, text) =>\n\t\t\t{\n\t\t\t\tlet html = '';\n\n\t\t\t\ttext = text? text: command;\n\t\t\t\tcommand = (command? command: text).replace('<br />', '\\n');\n\n\t\t\t\tif (!textOnly && text)\n\t\t\t\t{\n\t\t\t\t\ttext = text.replace(/<([\\w]+)[^>]*>(.*?)<\\\\1>/i, \"$2\", text);\n\t\t\t\t\ttext = text.replace(/\\[([\\w]+)[^\\]]*\\](.*?)\\[\\/\\1\\]/i, \"$2\", text);\n\n\t\t\t\t\tcommand = command.split('####REPLACEMENT_PUT_').join('####REPLACEMENT_SP_');\n\n\t\t\t\t\thtml = '<!--IM_COMMAND_START-->' +\n\t\t\t\t\t\t'<span class=\"bx-im-message-command-wrap\">'+\n\t\t\t\t\t\t\t'<span class=\"bx-im-message-command\" data-entity=\"send\">'+text+'</span>'+\n\t\t\t\t\t\t\t'<span class=\"bx-im-message-command-data\">'+command+'</span>'+\n\t\t\t\t\t\t'</span>'+\n\t\t\t\t\t'<!--IM_COMMAND_END-->';\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\thtml = text;\n\t\t\t\t}\n\n\t\t\t\treturn html;\n\t\t\t});\n\t\t});\n\n\t\tputReplacement.forEach((value, index) => {\n\t\t\ttext = text.replace('####REPLACEMENT_PUT_'+index+'####', value);\n\t\t});\n\n\t\ttext = text.replace(/\\[PUT(?:=(?:.+?))?\\](?:.+?)?\\[\\/PUT]/ig, (match) =>\n\t\t{\n\t\t\treturn match.replace(/\\[PUT(?:=(.+))?\\](.+?)?\\[\\/PUT]/ig, (whole, command, text) =>\n\t\t\t{\n\t\t\t\tlet html = '';\n\n\t\t\t\ttext = text? text: command;\n\t\t\t\tcommand = (command? command: text).replace('<br />', '\\n');\n\n\t\t\t\tif (!textOnly && text)\n\t\t\t\t{\n\t\t\t\t\ttext = text.replace(/<([\\w]+)[^>]*>(.*?)<\\/\\1>/i, \"$2\", text);\n\t\t\t\t\ttext = text.replace(/\\[([\\w]+)[^\\]]*\\](.*?)\\[\\/\\1\\]/i, \"$2\", text);\n\n\t\t\t\t\thtml = '<!--IM_COMMAND_START-->' +\n\t\t\t\t\t\t'<span class=\"bx-im-message-command-wrap\">'+\n\t\t\t\t\t\t\t'<span class=\"bx-im-message-command\" data-entity=\"put\">'+text+'</span>'+\n\t\t\t\t\t\t\t'<span class=\"bx-im-message-command-data\">'+command+'</span>'+\n\t\t\t\t\t\t'</span>'+\n\t\t\t\t\t'<!--IM_COMMAND_END-->';\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\thtml = text;\n\t\t\t\t}\n\n\t\t\t\treturn html;\n\t\t\t});\n\t\t});\n\n\t\tcodeReplacement.forEach((code, index) => {\n\t\t\ttext = text.replace('####REPLACEMENT_CODE_'+index+'####',\n\t\t\t\t!textOnly? '<div class=\"bx-im-message-content-code\">'+code+'</div>': code\n\t\t\t)\n\t\t});\n\n\t\tif (sendReplacement.length > 0)\n\t\t{\n\t\t\tdo\n\t\t\t{\n\t\t\t\tsendReplacement.forEach((value, index) => {\n\t\t\t\t\ttext = text.replace('####REPLACEMENT_SEND_'+index+'####', value);\n\t\t\t\t});\n\t\t\t}\n\t\t\twhile (text.includes('####REPLACEMENT_SEND_'));\n\t\t}\n\n\t\ttext = text.split('####REPLACEMENT_SP_').join('####REPLACEMENT_PUT_');\n\n\t\tif (putReplacement.length > 0)\n\t\t{\n\t\t\tdo\n\t\t\t{\n\t\t\t\tputReplacement.forEach((value, index) => {\n\t\t\t\t\ttext = text.replace('####REPLACEMENT_PUT_'+index+'####', value);\n\t\t\t\t});\n\t\t\t}\n\t\t\twhile (text.includes('####REPLACEMENT_PUT_'));\n\t\t}\n\n\t\treturn text;\n\t}\n\n\tstatic hideErrorImage(element)\n\t{\n\t\tif (element.parentNode && element.parentNode)\n\t\t{\n\t\t\telement.parentNode.innerHTML = '<a href=\"'+element.src+'\" target=\"_blank\">'+element.src+'</a>';\n\t\t}\n\t\treturn true;\n\t};\n\n\tstatic isTemporaryMessage(element)\n\t{\n\t\treturn element.id\n\t\t\t&& (Utils.text.isUuidV4(element.id) || element.id.toString().startsWith('temporary'));\n\t}\n\n\tstatic getPayloadWithTempMessages(state, payload)\n\t{\n\t\tconst payloadData = [...payload.data];\n\n\t\tif (!Utils.platform.isBitrixMobile())\n\t\t{\n\t\t\treturn payloadData;\n\t\t}\n\n\t\tif (!payload.data || payload.data.length <= 0)\n\t\t{\n\t\t\treturn payloadData;\n\t\t}\n\n\t\t// consider that in the payload we have messages only for one chat, so we get the value from the first message.\n\t\tconst payloadChatId = payload.data[0].chatId;\n\t\tif (!state.collection[payloadChatId])\n\t\t{\n\t\t\treturn payloadData;\n\t\t}\n\n\t\tstate.collection[payloadChatId].forEach(message => {\n\t\t\tif (\n\t\t\t\tMessagesModel.isTemporaryMessage(message)\n\t\t\t\t&& !MessagesModel.existsInPayload(payload, message.templateId)\n\t\t\t\t&& MessagesModel.doesTaskExist(message)\n\t\t\t)\n\t\t\t{\n\t\t\t\tpayloadData.push(message);\n\t\t\t}\n\t\t});\n\n\t\treturn payloadData;\n\t}\n\n\tstatic existsInPayload(payload, templateId)\n\t{\n\t\treturn payload.data.find(payloadMessage => payloadMessage.templateId === templateId);\n\t}\n\n\tstatic doesTaskExist(message)\n\t{\n\t\tif (Array.isArray(message.params.FILE_ID))\n\t\t{\n\t\t\tlet foundUploadTasks = false;\n\t\t\tmessage.params.FILE_ID.forEach(fileId => {\n\t\t\t\tif (!foundUploadTasks)\n\t\t\t\t{\n\t\t\t\t\tfoundUploadTasks = window.imDialogUploadTasks.find(task => task.taskId.split('|')[1] === fileId);\n\t\t\t\t}\n\t\t\t})\n\n\t\t\treturn !!foundUploadTasks;\n\t\t}\n\n\t\tif (message.templateId)\n\t\t{\n\t\t\tconst foundMessageTask = window.imDialogMessagesTasks.find(task => task.taskId.split('|')[1] === message.templateId);\n\n\t\t\treturn !!foundMessageTask;\n\t\t}\n\n\t\treturn false;\n\t}\n}","import {Type} from 'main.core';\nimport {BuilderModel} from 'ui.vue3.vuex';\nimport {ChatTypes} from 'im.v2.const';\nimport {Utils} from 'im.v2.lib.utils';\n\nconst WRITING_STATUS_TIME = 35000;\n\nexport class DialoguesModel extends BuilderModel\n{\n\tgetName()\n\t{\n\t\treturn 'dialogues';\n\t}\n\n\tgetState()\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t\twritingStatusTimers: {},\n\t\t\tchatOptions: {}\n\t\t};\n\t}\n\n\tgetElementState()\n\t{\n\t\treturn {\n\t\t\tdialogId: '0',\n\t\t\tchatId: 0,\n\t\t\ttype: ChatTypes.chat,\n\t\t\tname: '',\n\t\t\tavatar: '',\n\t\t\tcolor: '#17A3EA',\n\t\t\textranet: false,\n\t\t\tcounter: 0,\n\t\t\tuserCounter: 0,\n\t\t\tmessageCounter: 0,\n\t\t\tunreadId: 0,\n\t\t\tlastMessageId: 0,\n\t\t\tmanagerList: [],\n\t\t\treadList: [],\n\t\t\twritingList: [],\n\t\t\tmuteList: [],\n\t\t\ttextareaMessage: '',\n\t\t\tquoteId: 0,\n\t\t\teditId: 0,\n\t\t\towner: 0,\n\t\t\tentityType: '',\n\t\t\tentityId: '',\n\t\t\tdateCreate: null,\n\t\t\tpublic: {\n\t\t\t\tcode: '',\n\t\t\t\tlink: ''\n\t\t\t}\n\t\t};\n\t}\n\n\tgetGetters()\n\t{\n\t\treturn {\n\t\t\tget: state => (dialogId, getBlank = false) =>\n\t\t\t{\n\t\t\t\tif (!state.collection[dialogId] && getBlank)\n\t\t\t\t{\n\t\t\t\t\treturn this.getElementState();\n\t\t\t\t}\n\t\t\t\telse if (!state.collection[dialogId] && !getBlank)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[dialogId];\n\t\t\t},\n\t\t\tgetByChatId: state => chatId =>\n\t\t\t{\n\t\t\t\tchatId = Number.parseInt(chatId, 10);\n\t\t\t\treturn Object.values(state.collection).find(item => {\n\t\t\t\t\treturn item.chatId === chatId;\n\t\t\t\t});\n\t\t\t},\n\t\t\tgetBlank: () =>\n\t\t\t{\n\t\t\t\treturn this.getElementState();\n\t\t\t},\n\t\t\tgetChatOption: state => (chatType, option) =>\n\t\t\t{\n\t\t\t\tif (!state.chatOptions[chatType])\n\t\t\t\t{\n\t\t\t\t\tchatType = 'default';\n\t\t\t\t}\n\n\t\t\t\treturn state.chatOptions[chatType][option];\n\t\t\t},\n\t\t\tgetQuoteId: state => dialogId =>\n\t\t\t{\n\t\t\t\tif (!state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[dialogId].quoteId;\n\t\t\t},\n\t\t\tgetEditId: state => dialogId =>\n\t\t\t{\n\t\t\t\tif (!state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[dialogId].editId;\n\t\t\t},\n\t\t\tareUnreadMessagesLoaded: state => dialogId =>\n\t\t\t{\n\t\t\t\tconst dialog = state.collection[dialogId];\n\t\t\t\tif (!dialog || dialog.lastMessageId === 0)\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tconst messagesCollection = this.store.getters['messages/get'](dialog.chatId);\n\t\t\t\tif (messagesCollection.length === 0)\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tlet lastElementId = 0;\n\t\t\t\tfor (let index = messagesCollection.length - 1; index >= 0; index--)\n\t\t\t\t{\n\t\t\t\t\tconst lastElement = messagesCollection[index];\n\t\t\t\t\tif (Type.isNumber(lastElement.id))\n\t\t\t\t\t{\n\t\t\t\t\t\tlastElementId = lastElement.id;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn lastElementId >= dialog.lastMessageId;\n\t\t\t}\n\t\t};\n\t}\n\n\tgetActions()\n\t{\n\t\treturn {\n\t\t\tset: (store, payload: Array | Object) =>\n\t\t\t{\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\n\t\t\t\tpayload.map(element => {\n\t\t\t\t\treturn this.validate(element);\n\t\t\t\t}).forEach(element => {\n\t\t\t\t\tconst existingItem = store.state.collection[element.dialogId];\n\t\t\t\t\tif (existingItem)\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('update', {\n\t\t\t\t\t\t\tdialogId: element.dialogId,\n\t\t\t\t\t\t\tfields: element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('add', {\n\t\t\t\t\t\t\tdialogId: element.dialogId,\n\t\t\t\t\t\t\tfields: {...this.getElementState(), ...element}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tadd: (store, payload: Array | Object) =>\n\t\t\t{\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\n\t\t\t\tpayload.map(element => {\n\t\t\t\t\treturn this.validate(element);\n\t\t\t\t}).forEach(element => {\n\t\t\t\t\tconst existingItem = store.state.collection[element.dialogId];\n\t\t\t\t\tif (!existingItem)\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('add', {\n\t\t\t\t\t\t\tdialogId: element.dialogId,\n\t\t\t\t\t\t\tfields: {...this.getElementState(), ...element}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tupdate: (store, payload: {dialogId: string, fields: Object}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\t\tfields: this.validate(payload.fields)\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tdelete: (store, payload: {dialogId: string}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('delete', payload.dialogId);\n\t\t\t},\n\n\t\t\tstartWriting: (store, payload: {dialogId: string, userId: number, userName: string}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst timerId = `${payload.dialogId}|${payload.userId}`;\n\t\t\t\tconst alreadyWriting = existingItem.writingList.some(el => el.userId === payload.userId);\n\t\t\t\tif (alreadyWriting)\n\t\t\t\t{\n\t\t\t\t\tclearTimeout(store.state.writingStatusTimers[timerId]);\n\t\t\t\t\tstore.state.writingStatusTimers[timerId] = this.setWritingStatusTimeout(payload);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tconst newItem = {userId: payload.userId, userName: payload.userName};\n\t\t\t\tconst newWritingList = [newItem, ...existingItem.writingList];\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tactionName: 'startWriting',\n\t\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\t\tfields: this.validate({writingList: newWritingList})\n\t\t\t\t});\n\n\t\t\t\tif (!store.state.writingStatusTimers[timerId])\n\t\t\t\t{\n\t\t\t\t\tstore.state.writingStatusTimers[timerId] = this.setWritingStatusTimeout(payload);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tstopWriting: (store, payload: {dialogId: string, userId: number}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst alreadyWriting = existingItem.writingList.find(el => el.userId === payload.userId);\n\t\t\t\tif (!alreadyWriting)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst newWritingList = existingItem.writingList.filter(item => item.userId !== payload.userId);\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tactionName: 'stopWriting',\n\t\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\t\tfields: this.validate({writingList: newWritingList})\n\t\t\t\t});\n\n\t\t\t\tconst timerId = `${payload.dialogId}|${payload.userId}`;\n\t\t\t\tclearTimeout(store.state.writingStatusTimers[timerId]);\n\t\t\t\tdelete store.state.writingStatusTimers[timerId];\n\t\t\t},\n\n\t\t\taddToReadList: (store, payload: {\n\t\t\t\tdialogId: string,\n\t\t\t\tuserId: number,\n\t\t\t\tuserName: string,\n\t\t\t\tmessageId: number,\n\t\t\t\tdate: string\n\t\t\t}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst readList = existingItem.readList.filter(el => el.userId !== payload.userId);\n\n\t\t\t\treadList.push({\n\t\t\t\t\tuserId: payload.userId,\n\t\t\t\t\tuserName: payload.userName || '',\n\t\t\t\t\tmessageId: payload.messageId,\n\t\t\t\t\tdate: payload.date || (new Date()),\n\t\t\t\t});\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tactionName: 'addToReadList',\n\t\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\t\tfields: this.validate({readList})\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tremoveFromReadList: (store, payload: {\n\t\t\t\tdialogId: string,\n\t\t\t\tuserId: number\n\t\t\t}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst readList = existingItem.readList.filter(el => el.userId !== payload.userId);\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tactionName: 'removeFromReadList',\n\t\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\t\tfields: this.validate({readList})\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tincreaseCounter: (store, payload: {dialogId: string, count: number}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (existingItem.counter === 100)\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tlet increasedCounter = existingItem.counter + payload.count;\n\t\t\t\tif (increasedCounter > 100)\n\t\t\t\t{\n\t\t\t\t\tincreasedCounter = 100;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tactionName: 'increaseCounter',\n\t\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tcounter: increasedCounter,\n\t\t\t\t\t\tpreviousCounter: existingItem.counter\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tdecreaseCounter: (store, payload: {dialogId: string, count: number}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (existingItem.counter === 100)\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tlet decreasedCounter = existingItem.counter - payload.count;\n\t\t\t\tif (decreasedCounter < 0)\n\t\t\t\t{\n\t\t\t\t\tdecreasedCounter = 0;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tactionName: 'decreaseCounter',\n\t\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tcounter: decreasedCounter,\n\t\t\t\t\t\tpreviousCounter: existingItem.counter\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tincreaseMessageCounter: (store, payload: {dialogId: string, count: number}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tactionName: 'increaseMessageCount',\n\t\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tmessageCounter: existingItem.messageCounter + payload.count,\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tmute: (store, payload: {dialogId: string}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst currentUserId = this.store.state.application.common.userId;\n\t\t\t\tif (existingItem.muteList.includes(currentUserId))\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst muteList = [...existingItem.muteList, currentUserId];\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tactionName: 'mute',\n\t\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\t\tfields: this.validate({muteList})\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tunmute: (store, payload: {dialogId: string}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst currentUserId = this.store.state.application.common.userId;\n\t\t\t\tconst muteList = existingItem.muteList.filter(item => item !== currentUserId);\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tactionName: 'unmute',\n\t\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\t\tfields: this.validate({muteList})\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tsetChatOptions: (store, payload: Object) =>\n\t\t\t{\n\t\t\t\tstore.commit('setChatOptions', this.validateChatOptions(payload));\n\t\t\t}\n\t\t};\n\t}\n\n\tgetMutations()\n\t{\n\t\treturn {\n\t\t\tadd: (state, payload) =>\n\t\t\t{\n\t\t\t\tstate.collection[payload.dialogId] = payload.fields;\n\t\t\t},\n\t\t\tupdate: (state, payload) =>\n\t\t\t{\n\t\t\t\tstate.collection[payload.dialogId] = {...state.collection[payload.dialogId], ...payload.fields};\n\t\t\t},\n\t\t\tdelete: (state, payload) =>\n\t\t\t{\n\t\t\t\tdelete state.collection[payload.dialogId];\n\t\t\t},\n\t\t\tsetChatOptions: (state, payload) =>\n\t\t\t{\n\t\t\t\tstate.chatOptions = payload;\n\t\t\t}\n\t\t};\n\t}\n\n\tsetWritingStatusTimeout(payload: {dialogId: string, userId: number})\n\t{\n\t\treturn setTimeout(() => {\n\t\t\tthis.store.dispatch('dialogues/stopWriting', {\n\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\tuserId: payload.userId\n\t\t\t});\n\t\t}, WRITING_STATUS_TIME);\n\t}\n\n\tvalidate(fields)\n\t{\n\t\tconst result = {};\n\n\t\tif (!Type.isUndefined(fields.dialog_id))\n\t\t{\n\t\t\tfields.dialogId = fields.dialog_id;\n\t\t}\n\t\tif (Type.isNumber(fields.dialogId) || Type.isStringFilled(fields.dialogId))\n\t\t{\n\t\t\tresult.dialogId = fields.dialogId.toString();\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.chat_id))\n\t\t{\n\t\t\tfields.chatId = fields.chat_id;\n\t\t}\n\t\telse if (!Type.isUndefined(fields.id))\n\t\t{\n\t\t\tfields.chatId = fields.id;\n\t\t}\n\t\tif (Type.isNumber(fields.chatId) || Type.isStringFilled(fields.chatId))\n\t\t{\n\t\t\tresult.chatId = Number.parseInt(fields.chatId, 10);\n\t\t}\n\n\t\tif (Type.isStringFilled(fields.type))\n\t\t{\n\t\t\tresult.type = fields.type.toString();\n\t\t}\n\n\t\tif (Type.isNumber(fields.quoteId))\n\t\t{\n\t\t\tresult.quoteId = Number.parseInt(fields.quoteId, 10);\n\t\t}\n\t\tif (Type.isNumber(fields.editId))\n\t\t{\n\t\t\tresult.editId = Number.parseInt(fields.editId, 10);\n\t\t}\n\n\t\tif (Type.isNumber(fields.counter) || Type.isStringFilled(fields.counter))\n\t\t{\n\t\t\tresult.counter = Number.parseInt(fields.counter, 10);\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.user_counter))\n\t\t{\n\t\t\tresult.userCounter = fields.user_counter;\n\t\t}\n\t\tif (Type.isNumber(fields.userCounter) || Type.isStringFilled(fields.userCounter))\n\t\t{\n\t\t\tresult.userCounter = Number.parseInt(fields.userCounter, 10);\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.message_count))\n\t\t{\n\t\t\tresult.messageCounter = fields.message_count;\n\t\t}\n\t\tif (Type.isNumber(fields.messageCounter) || Type.isStringFilled(fields.messageCounter))\n\t\t{\n\t\t\tresult.messageCounter = Number.parseInt(fields.messageCounter, 10);\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.unread_id))\n\t\t{\n\t\t\tfields.unreadId = fields.unread_id;\n\t\t}\n\t\tif (Type.isNumber(fields.unreadId) || Type.isStringFilled(fields.unreadId))\n\t\t{\n\t\t\tresult.unreadId = Number.parseInt(fields.unreadId, 10);\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.last_message_id))\n\t\t{\n\t\t\tfields.lastMessageId = fields.last_message_id;\n\t\t}\n\t\tif (Type.isNumber(fields.lastMessageId) || Type.isStringFilled(fields.lastMessageId))\n\t\t{\n\t\t\tresult.lastMessageId = Number.parseInt(fields.lastMessageId, 10);\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.textareaMessage))\n\t\t{\n\t\t\tresult.textareaMessage = fields.textareaMessage.toString();\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.title))\n\t\t{\n\t\t\tfields.name = fields.title;\n\t\t}\n\t\tif (Type.isNumber(fields.name) || Type.isStringFilled(fields.name))\n\t\t{\n\t\t\tresult.name = Utils.text.htmlspecialcharsback(fields.name.toString());\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.owner))\n\t\t{\n\t\t\tfields.ownerId = fields.owner;\n\t\t}\n\t\tif (Type.isNumber(fields.ownerId) || Type.isStringFilled(fields.ownerId))\n\t\t{\n\t\t\tresult.owner = Number.parseInt(fields.ownerId, 10);\n\t\t}\n\n\t\tif (Type.isString(fields.avatar))\n\t\t{\n\t\t\tresult.avatar = this.prepareAvatar(fields.avatar);\n\t\t}\n\n\t\tif (Type.isStringFilled(fields.color))\n\t\t{\n\t\t\tresult.color = fields.color;\n\t\t}\n\n\t\tif (Type.isBoolean(fields.extranet))\n\t\t{\n\t\t\tresult.extranet = fields.extranet;\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.entity_type))\n\t\t{\n\t\t\tfields.entityType = fields.entity_type;\n\t\t}\n\t\tif (Type.isStringFilled(fields.entityType))\n\t\t{\n\t\t\tresult.entityType = fields.entityType;\n\t\t}\n\t\tif (!Type.isUndefined(fields.entity_id))\n\t\t{\n\t\t\tfields.entityId = fields.entity_id;\n\t\t}\n\t\tif (Type.isNumber(fields.entityId) || Type.isStringFilled(fields.entityId))\n\t\t{\n\t\t\tresult.entityId = fields.entityId.toString();\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.date_create))\n\t\t{\n\t\t\tfields.dateCreate = fields.date_create;\n\t\t}\n\t\tif (!Type.isUndefined(fields.dateCreate))\n\t\t{\n\t\t\tresult.dateCreate = Utils.date.cast(fields.dateCreate);\n\t\t}\n\n\t\tif (Type.isPlainObject(fields.public))\n\t\t{\n\t\t\tresult.public = {};\n\n\t\t\tif (Type.isStringFilled(fields.public.code))\n\t\t\t{\n\t\t\t\tresult.public.code = fields.public.code;\n\t\t\t}\n\n\t\t\tif (Type.isStringFilled(fields.public.link))\n\t\t\t{\n\t\t\t\tresult.public.link = fields.public.link;\n\t\t\t}\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.readed_list))\n\t\t{\n\t\t\tfields.readList = fields.readed_list;\n\t\t}\n\t\tif (Type.isArray(fields.readList))\n\t\t{\n\t\t\tresult.readList = this.prepareReadList(fields.readList);\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.writing_list))\n\t\t{\n\t\t\tfields.writingList = fields.writing_list;\n\t\t}\n\t\tif (Type.isArray(fields.writingList))\n\t\t{\n\t\t\tresult.writingList = this.prepareWritingList(fields.writingList);\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.manager_list))\n\t\t{\n\t\t\tfields.managerList = fields.manager_list;\n\t\t}\n\t\tif (Type.isArray(fields.managerList))\n\t\t{\n\t\t\tresult.managerList = [];\n\n\t\t\tfields.managerList.forEach(userId =>\n\t\t\t{\n\t\t\t\tuserId = Number.parseInt(userId, 10);\n\t\t\t\tif (userId > 0)\n\t\t\t\t{\n\t\t\t\t\tresult.managerList.push(userId);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.mute_list))\n\t\t{\n\t\t\tfields.muteList = fields.mute_list;\n\t\t}\n\t\tif (Type.isArray(fields.muteList) || Type.isPlainObject(fields.muteList))\n\t\t{\n\t\t\tresult.muteList = this.prepareMuteList(fields.muteList);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tprepareAvatar(avatar: string): string\n\t{\n\t\tlet result = '';\n\n\t\tif (!avatar || avatar.endsWith('/js/im/images/blank.gif'))\n\t\t{\n\t\t\tresult = '';\n\t\t}\n\t\telse if (avatar.startsWith('http'))\n\t\t{\n\t\t\tresult = avatar;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tresult = this.store.state.application.common.host + avatar;\n\t\t}\n\n\t\tif (result)\n\t\t{\n\t\t\tresult = encodeURI(result);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tprepareReadList(readList: Object[]): Object[]\n\t{\n\t\tconst result = [];\n\n\t\treadList.forEach(element =>\n\t\t{\n\t\t\tconst item = {};\n\t\t\tif (!Type.isUndefined(element.user_id))\n\t\t\t{\n\t\t\t\telement.userId = element.user_id;\n\t\t\t}\n\t\t\tif (!Type.isUndefined(element.user_name))\n\t\t\t{\n\t\t\t\telement.userName = element.user_name;\n\t\t\t}\n\t\t\tif (!Type.isUndefined(element.message_id))\n\t\t\t{\n\t\t\t\telement.messageId = element.message_id;\n\t\t\t}\n\n\t\t\tif (!element.userId || !element.userName || !element.messageId)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\titem.userId = Number.parseInt(element.userId, 10);\n\t\t\titem.userName = element.userName.toString();\n\t\t\titem.messageId = Number.parseInt(element.messageId, 10);\n\n\t\t\titem.date = Utils.date.cast(element.date);\n\n\t\t\tresult.push(item);\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tprepareWritingList(writingList: Object[]): Object[]\n\t{\n\t\tconst result = [];\n\n\t\twritingList.forEach(element =>\n\t\t{\n\t\t\tconst item = {};\n\n\t\t\tif (!element.userId)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\titem.userId = Number.parseInt(element.userId, 10);\n\t\t\titem.userName = Utils.text.htmlspecialcharsback(element.userName);\n\n\t\t\tresult.push(item);\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tprepareMuteList(muteList: Object[] | Object): Object[]\n\t{\n\t\tconst result = [];\n\n\t\tif (Type.isArray(muteList))\n\t\t{\n\t\t\tmuteList.forEach(userId =>\n\t\t\t{\n\t\t\t\tuserId = Number.parseInt(userId, 10);\n\t\t\t\tif (userId > 0)\n\t\t\t\t{\n\t\t\t\t\tresult.push(userId);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse if (Type.isPlainObject(muteList))\n\t\t{\n\t\t\tObject.entries(muteList).forEach(([key, value]) => {\n\t\t\t\tif (!value)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst userId = Number.parseInt(key, 10);\n\t\t\t\tif (userId > 0)\n\t\t\t\t{\n\t\t\t\t\tresult.push(userId);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tvalidateChatOptions(options: Object): Object\n\t{\n\t\tconst result = {};\n\n\t\tObject.entries(options).forEach(([type, typeOptions]) => {\n\t\t\tconst newType = Utils.text.convertSnakeToCamelCase(type.toLowerCase());\n\t\t\tresult[newType] = {};\n\t\t\tObject.entries(typeOptions).forEach(([key, value]) => {\n\t\t\t\tconst newKey = Utils.text.convertSnakeToCamelCase(key.toLowerCase());\n\t\t\t\tresult[newType][newKey] = value;\n\t\t\t});\n\t\t});\n\n\t\treturn result;\n\t}\n}","import {Type, Loc} from 'main.core';\nimport {BuilderModel} from 'ui.vue3.vuex';\nimport {Utils} from 'im.v2.lib.utils';\nimport {UserStatus, BotType} from 'im.v2.const';\n\nexport class UsersModel extends BuilderModel\n{\n\tgetName()\n\t{\n\t\treturn 'users';\n\t}\n\n\tgetState()\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t\tonlineList: [],\n\t\t\tmobileOnlineList: [],\n\t\t\tabsentList: [],\n\t\t\tbotList: {}\n\t\t};\n\t}\n\n\tgetElementState(params = {})\n\t{\n\t\tconst {id = 0} = params;\n\n\t\treturn {\n\t\t\tid,\n\t\t\tname: '',\n\t\t\tfirstName: '',\n\t\t\tlastName: '',\n\t\t\tworkPosition: '',\n\t\t\tgender: 'M',\n\t\t\textranet: false,\n\t\t\tnetwork: false,\n\t\t\tbot: false,\n\t\t\tconnector: false,\n\t\t\texternalAuthId: 'default',\n\t\t\tstatus: '',\n\t\t\tidle: false,\n\t\t\tlastActivityDate: false,\n\t\t\tmobileLastDate: false,\n\t\t\tisOnline: false,\n\t\t\tisMobileOnline: false,\n\t\t\tbirthday: false,\n\t\t\tisBirthday: false,\n\t\t\tabsent: false,\n\t\t\tisAbsent: false,\n\t\t\tdepartments: [],\n\t\t\tphones: {\n\t\t\t\tworkPhone: '',\n\t\t\t\tpersonalMobile: '',\n\t\t\t\tpersonalPhone: '',\n\t\t\t\tinnerPhone: '',\n\t\t\t}\n\t\t};\n\t}\n\n\tgetGetters()\n\t{\n\t\treturn {\n\t\t\tget: state => (userId, getTemporary = false) =>\n\t\t\t{\n\t\t\t\tuserId = Number.parseInt(userId, 10);\n\n\t\t\t\tif (userId <= 0)\n\t\t\t\t{\n\t\t\t\t\tif (getTemporary)\n\t\t\t\t\t{\n\t\t\t\t\t\tuserId = 0;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst user = state.collection[userId];\n\n\t\t\t\tif (!getTemporary && !user)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\telse if (getTemporary && !user)\n\t\t\t\t{\n\t\t\t\t\treturn this.getElementState({id: userId});\n\t\t\t\t}\n\n\t\t\t\treturn user;\n\t\t\t},\n\t\t\tgetBlank: () => params =>\n\t\t\t{\n\t\t\t\treturn this.getElementState(params);\n\t\t\t},\n\t\t\tgetList: state => (userList) => {\n\t\t\t\tconst result = [];\n\n\t\t\t\tif (!Array.isArray(userList))\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tuserList.forEach(id => {\n\t\t\t\t\tif (state.collection[id])\n\t\t\t\t\t{\n\t\t\t\t\t\tresult.push(state.collection[id]);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tresult.push(this.getElementState({id}));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\thasBirthday: state => userId => {\n\t\t\t\tuserId = Number.parseInt(userId, 10);\n\n\t\t\t\tconst user = state.collection[userId];\n\t\t\t\tif (userId <= 0 || !user)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn user.isBirthday;\n\t\t\t},\n\t\t\tgetStatus: state => userId => {\n\t\t\t\tuserId = Number.parseInt(userId, 10);\n\n\t\t\t\tconst user = state.collection[userId];\n\t\t\t\tif (userId <= 0 || !user)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (!user.isOnline)\n\t\t\t\t{\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\tif (user.isMobileOnline)\n\t\t\t\t{\n\t\t\t\t\treturn UserStatus.mobileOnline;\n\t\t\t\t}\n\t\t\t\telse if (user.idle)\n\t\t\t\t{\n\t\t\t\t\t// away by time\n\t\t\t\t\treturn UserStatus.idle;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// manually selected status (online, away, dnd, break)\n\t\t\t\t\treturn user.status;\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetLastOnline: state => userId => {\n\t\t\t\tuserId = Number.parseInt(userId, 10);\n\n\t\t\t\tconst user = state.collection[userId];\n\t\t\t\tif (userId <= 0 || !user)\n\t\t\t\t{\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\treturn Utils.user.getLastDateText(user);\n\t\t\t},\n\t\t\tgetPosition: state => userId => {\n\t\t\t\tuserId = Number.parseInt(userId, 10);\n\n\t\t\t\tconst user = state.collection[userId];\n\t\t\t\tif (userId <= 0 || !user)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (user.workPosition)\n\t\t\t\t{\n\t\t\t\t\treturn user.workPosition;\n\t\t\t\t}\n\n\t\t\t\treturn Loc.getMessage('IM_MODEL_USERS_DEFAULT_NAME');\n\t\t\t},\n\t\t\tgetBotType: state => userId => {\n\t\t\t\tuserId = Number.parseInt(userId, 10);\n\n\t\t\t\tconst user = state.collection[userId];\n\t\t\t\tif (userId <= 0 || !user || !user.bot || !state.botList[userId])\n\t\t\t\t{\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\tconst botType = state.botList[userId].type;\n\n\t\t\t\tif (!BotType[botType])\n\t\t\t\t{\n\t\t\t\t\treturn BotType.bot;\n\t\t\t\t}\n\n\t\t\t\treturn botType;\n\t\t\t}\n\t\t};\n\t}\n\n\tgetActions()\n\t{\n\t\treturn {\n\t\t\tset: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\n\t\t\t\tpayload.map(user => {\n\t\t\t\t\treturn this.validate(user);\n\t\t\t\t}).forEach(user => {\n\t\t\t\t\tconst existingUser = store.state.collection[user.id];\n\t\t\t\t\tif (existingUser)\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('update', {\n\t\t\t\t\t\t\tid: user.id,\n\t\t\t\t\t\t\tfields: user\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('add', {\n\t\t\t\t\t\t\tid: user.id,\n\t\t\t\t\t\t\tfields: {...this.getElementState(), ...user}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tadd: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\n\t\t\t\tpayload.map(user => {\n\t\t\t\t\treturn this.validate(user);\n\t\t\t\t}).forEach(user => {\n\t\t\t\t\tconst existingUser = store.state.collection[user.id];\n\t\t\t\t\tif (!existingUser)\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('add', {\n\t\t\t\t\t\t\tid: user.id,\n\t\t\t\t\t\t\tfields: {...this.getElementState(), ...user}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tupdate: (store, payload) =>\n\t\t\t{\n\t\t\t\tpayload.id = Number.parseInt(payload.id, 10);\n\n\t\t\t\tconst user = store.state.collection[payload.id];\n\t\t\t\tif (!user)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tid: payload.id,\n\t\t\t\t\tfields: this.validate(payload.fields)\n\t\t\t\t});\n\t\t\t},\n\t\t\tdelete: (store, payload) =>\n\t\t\t{\n\t\t\t\tstore.commit('delete', payload.id);\n\t\t\t},\n\t\t\tsetBotList: (store, payload) =>\n\t\t\t{\n\t\t\t\tstore.commit('setBotList', payload);\n\t\t\t}\n\t\t};\n\t}\n\n\tgetMutations()\n\t{\n\t\treturn {\n\t\t\tadd: (state, payload) =>\n\t\t\t{\n\t\t\t\tstate.collection[payload.id] = payload.fields;\n\t\t\t\tconst user = state.collection[payload.id];\n\n\t\t\t\tif (Utils.user.isOnline(user.lastActivityDate))\n\t\t\t\t{\n\t\t\t\t\tuser.isOnline = true;\n\t\t\t\t\tthis.addToOnlineList(user.id);\n\t\t\t\t}\n\n\t\t\t\tif (Utils.user.isMobileOnline(user.lastActivityDate, user.mobileLastDate))\n\t\t\t\t{\n\t\t\t\t\tuser.isMobileOnline = true;\n\t\t\t\t\tthis.addToMobileOnlineList(user.id);\n\t\t\t\t}\n\n\t\t\t\tif (user.birthday && Utils.user.isBirthdayToday(user.birthday))\n\t\t\t\t{\n\t\t\t\t\tuser.isBirthday = true;\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tuser.isBirthday = false;\n\t\t\t\t\t}, Utils.date.getTimeToNextMidnight());\n\t\t\t\t}\n\n\t\t\t\tif (user.absent)\n\t\t\t\t{\n\t\t\t\t\tuser.isAbsent = true;\n\t\t\t\t\tthis.addToAbsentList(user.id);\n\t\t\t\t}\n\n\t\t\t\tthis.startOnlineCheckInterval();\n\t\t\t\tthis.startAbsentCheckInterval();\n\t\t\t},\n\t\t\tupdate: (state, payload) =>\n\t\t\t{\n\t\t\t\tconst user = state.collection[payload.id];\n\t\t\t\tif (Utils.user.isOnline(payload.fields.lastActivityDate))\n\t\t\t\t{\n\t\t\t\t\tuser.isOnline = true;\n\t\t\t\t\tthis.addToOnlineList(payload.fields.id);\n\t\t\t\t}\n\n\t\t\t\tif (Utils.user.isMobileOnline(payload.fields.lastActivityDate, payload.fields.mobileLastDate))\n\t\t\t\t{\n\t\t\t\t\tuser.isMobileOnline = true;\n\t\t\t\t\tthis.addToMobileOnlineList(payload.fields.id);\n\t\t\t\t}\n\n\t\t\t\tif (payload.fields.absent === false)\n\t\t\t\t{\n\t\t\t\t\tstate.absentList = state.absentList.filter(element => {\n\t\t\t\t\t\treturn element !== payload.id;\n\t\t\t\t\t});\n\t\t\t\t\tstate.collection[payload.id].isAbsent = false;\n\t\t\t\t}\n\t\t\t\telse if (Type.isDate(payload.fields.absent))\n\t\t\t\t{\n\t\t\t\t\tstate.collection[payload.id].isAbsent = true;\n\t\t\t\t\tthis.addToAbsentList(payload.id);\n\t\t\t\t}\n\n\t\t\t\tstate.collection[payload.id] = {...state.collection[payload.id], ...payload.fields};\n\t\t\t},\n\t\t\tdelete: (state, payload) =>\n\t\t\t{\n\t\t\t\tdelete state.collection[payload.id];\n\t\t\t},\n\t\t\tsetBotList: (state, payload) =>\n\t\t\t{\n\t\t\t\tstate.botList = payload;\n\t\t\t}\n\t\t};\n\t}\n\n\tvalidate(fields)\n\t{\n\t\tconst result = {};\n\n\t\tif (Type.isNumber(fields.id) || Type.isString(fields.id))\n\t\t{\n\t\t\tresult.id = Number.parseInt(fields.id, 10);\n\t\t}\n\n\t\tif (Type.isStringFilled(fields.first_name))\n\t\t{\n\t\t\tfields.firstName = fields.first_name;\n\t\t}\n\t\tif (Type.isStringFilled(fields.last_name))\n\t\t{\n\t\t\tfields.lastName = fields.last_name;\n\t\t}\n\t\tif (Type.isStringFilled(fields.firstName))\n\t\t{\n\t\t\tresult.firstName = Utils.text.htmlspecialcharsback(fields.firstName);\n\t\t}\n\t\tif (Type.isStringFilled(fields.lastName))\n\t\t{\n\t\t\tresult.lastName = Utils.text.htmlspecialcharsback(fields.lastName);\n\t\t}\n\t\tif (Type.isStringFilled(fields.name))\n\t\t{\n\t\t\tfields.name = Utils.text.htmlspecialcharsback(fields.name);\n\t\t\tresult.name = fields.name;\n\t\t}\n\n\t\tif (Type.isStringFilled(fields.work_position))\n\t\t{\n\t\t\tfields.workPosition = fields.work_position;\n\t\t}\n\t\tif (Type.isStringFilled(fields.workPosition))\n\t\t{\n\t\t\tresult.workPosition = Utils.text.htmlspecialcharsback(fields.workPosition);\n\t\t}\n\n\t\tif (Type.isStringFilled(fields.gender))\n\t\t{\n\t\t\tresult.gender = fields.gender === 'F'? 'F': 'M';\n\t\t}\n\n\t\tif (Type.isStringFilled(fields.birthday))\n\t\t{\n\t\t\tresult.birthday = fields.birthday;\n\t\t}\n\n\t\tif (Type.isBoolean(fields.extranet))\n\t\t{\n\t\t\tresult.extranet = fields.extranet;\n\t\t}\n\n\t\tif (Type.isBoolean(fields.network))\n\t\t{\n\t\t\tresult.network = fields.network;\n\t\t}\n\n\t\tif (Type.isBoolean(fields.bot))\n\t\t{\n\t\t\tresult.bot = fields.bot;\n\t\t}\n\n\t\tif (Type.isBoolean(fields.connector))\n\t\t{\n\t\t\tresult.connector = fields.connector;\n\t\t}\n\n\t\tif (Type.isStringFilled(fields.external_auth_id))\n\t\t{\n\t\t\tfields.externalAuthId = fields.external_auth_id;\n\t\t}\n\t\tif (Type.isStringFilled(fields.externalAuthId))\n\t\t{\n\t\t\tresult.externalAuthId = fields.externalAuthId;\n\t\t}\n\n\t\tif (Type.isStringFilled(fields.status))\n\t\t{\n\t\t\tresult.status = fields.status;\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.idle))\n\t\t{\n\t\t\tresult.idle = Utils.date.cast(fields.idle, false);\n\t\t}\n\t\tif (!Type.isUndefined(fields.last_activity_date))\n\t\t{\n\t\t\tfields.lastActivityDate = fields.last_activity_date;\n\t\t}\n\t\tif (!Type.isUndefined(fields.lastActivityDate))\n\t\t{\n\t\t\tresult.lastActivityDate = Utils.date.cast(fields.lastActivityDate, false);\n\t\t}\n\t\tif (!Type.isUndefined(fields.mobile_last_date))\n\t\t{\n\t\t\tfields.mobileLastDate = fields.mobile_last_date;\n\t\t}\n\t\tif (!Type.isUndefined(fields.mobileLastDate))\n\t\t{\n\t\t\tresult.mobileLastDate = Utils.date.cast(fields.mobileLastDate, false);\n\t\t}\n\n\t\tif (!Type.isUndefined(fields.absent))\n\t\t{\n\t\t\tresult.absent = Utils.date.cast(fields.absent, false);\n\t\t}\n\n\t\tif (Array.isArray(fields.departments))\n\t\t{\n\t\t\tresult.departments = [];\n\t\t\tfields.departments.forEach(departmentId =>\n\t\t\t{\n\t\t\t\tdepartmentId = Number.parseInt(departmentId, 10);\n\t\t\t\tif (departmentId > 0)\n\t\t\t\t{\n\t\t\t\t\tresult.departments.push(departmentId);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (Type.isPlainObject(fields.phones))\n\t\t{\n\t\t\tresult.phones = this.preparePhones(fields.phones);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpreparePhones(phones): Object\n\t{\n\t\tconst result = {};\n\n\t\tif (!Type.isUndefined(phones.work_phone))\n\t\t{\n\t\t\tphones.workPhone = phones.work_phone;\n\t\t}\n\t\tif (Type.isStringFilled(phones.workPhone) || Type.isNumber(phones.workPhone))\n\t\t{\n\t\t\tresult.workPhone =phones.workPhone.toString();\n\t\t}\n\n\t\tif (!Type.isUndefined(phones.personal_mobile))\n\t\t{\n\t\t\tphones.personalMobile = phones.personal_mobile;\n\t\t}\n\t\tif (Type.isStringFilled(phones.personalMobile) || Type.isNumber(phones.personalMobile))\n\t\t{\n\t\t\tresult.personalMobile = phones.personalMobile.toString();\n\t\t}\n\n\t\tif (!Type.isUndefined(phones.personal_phone))\n\t\t{\n\t\t\tphones.personalPhone = phones.personal_phone;\n\t\t}\n\t\tif (Type.isStringFilled(phones.personalPhone) || Type.isNumber(phones.personalPhone))\n\t\t{\n\t\t\tresult.personalPhone = phones.personalPhone.toString();\n\t\t}\n\n\t\tif (!Type.isUndefined(phones.inner_phone))\n\t\t{\n\t\t\tphones.innerPhone = phones.inner_phone;\n\t\t}\n\t\tif (Type.isStringFilled(phones.innerPhone) || Type.isNumber(phones.innerPhone))\n\t\t{\n\t\t\tresult.innerPhone = phones.innerPhone.toString();\n\t\t}\n\n\t\treturn result;\n\t}\n\n\taddToOnlineList(id)\n\t{\n\t\tconst state = this.store.state.users;\n\t\tif (!state.onlineList.includes(id))\n\t\t{\n\t\t\tstate.onlineList.push(id);\n\t\t}\n\t}\n\n\taddToMobileOnlineList(id)\n\t{\n\t\tconst state = this.store.state.users;\n\t\tif (!state.mobileOnlineList.includes(id))\n\t\t{\n\t\t\tstate.mobileOnlineList.push(id);\n\t\t}\n\t}\n\n\taddToAbsentList(id)\n\t{\n\t\tconst state = this.store.state.users;\n\t\tif (!state.absentList.includes(id))\n\t\t{\n\t\t\tstate.absentList.push(id);\n\t\t}\n\t}\n\n\tstartAbsentCheckInterval()\n\t{\n\t\tif (this.absentCheckInterval)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tconst TIME_TO_NEXT_DAY = 1000*60*60*24;\n\t\tthis.absentCheckInterval = setTimeout(() => {\n\t\t\tsetInterval(() => {\n\t\t\t\tconst state = this.store.state.users;\n\t\t\t\tstate.absentList.forEach(userId => {\n\t\t\t\t\tconst user = state.collection[userId];\n\t\t\t\t\tif (!user)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst currentTime = Date.now();\n\t\t\t\t\tconst absentEnd = new Date(user.absent).getTime();\n\n\t\t\t\t\tif (absentEnd <= currentTime)\n\t\t\t\t\t{\n\t\t\t\t\t\tstate.absentList = state.absentList.filter(element => {\n\t\t\t\t\t\t\treturn element !== userId;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tuser.isAbsent = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, TIME_TO_NEXT_DAY);\n\t\t}, Utils.date.getTimeToNextMidnight());\n\t}\n\n\tstartOnlineCheckInterval()\n\t{\n\t\tif (this.onlineCheckInterval)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tconst ONE_MINUTE = 60000;\n\t\tthis.onlineCheckInterval = setInterval(() => {\n\t\t\tconst state = this.store.state.users;\n\n\t\t\tstate.onlineList.forEach(userId => {\n\t\t\t\tconst user = state.collection[userId];\n\t\t\t\tif (!user)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (Utils.user.isOnline(user.lastActivityDate))\n\t\t\t\t{\n\t\t\t\t\tuser.isOnline = true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tuser.isOnline = false;\n\t\t\t\t\tstate.onlineList = state.onlineList.filter(element => element !== userId);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tstate.mobileOnlineList.forEach(userId => {\n\t\t\t\tconst user = state.collection[userId];\n\t\t\t\tif (!user)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (Utils.user.isMobileOnline(user.lastActivityDate, user.mobileLastDate))\n\t\t\t\t{\n\t\t\t\t\tuser.isMobileOnline = true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tuser.isMobileOnline = false;\n\t\t\t\t\tstate.mobileOnlineList = state.mobileOnlineList.filter(element => element !== userId);\n\t\t\t\t}\n\t\t\t});\n\t\t}, ONE_MINUTE);\n\t}\n}","import {BuilderModel} from 'ui.vue3.vuex';\nimport {FileStatus, FileType, MutationType} from 'im.v2.const';\nimport {Utils} from 'im.v2.lib.utils';\n\nexport class FilesModel extends BuilderModel\n{\n\tstatic maxDiskFileSize = 5242880;\n\n\tgetName()\n\t{\n\t\treturn 'files';\n\t}\n\n\tgetState()\n\t{\n\t\treturn {\n\t\t\tcreated: 0,\n\t\t\tcollection: {},\n\t\t\tindex: {},\n\t\t};\n\t}\n\n\tgetElementState(params = {})\n\t{\n\t\tconst {\n\t\t\tid = 0,\n\t\t\tchatId = 0,\n\t\t\tname = 'File is deleted',\n\t\t} = params;\n\n\t\treturn {\n\t\t\tid,\n\t\t\tchatId,\n\t\t\tname,\n\t\t\ttemplateId: id,\n\t\t\tdate: new Date(),\n\t\t\ttype: 'file',\n\t\t\textension: \"\",\n\t\t\ticon: \"empty\",\n\t\t\tsize: 0,\n\t\t\timage: false,\n\t\t\tstatus: FileStatus.done,\n\t\t\tprogress: 100,\n\t\t\tauthorId: 0,\n\t\t\tauthorName: \"\",\n\t\t\turlPreview: \"\",\n\t\t\turlShow: \"\",\n\t\t\turlDownload: \"\",\n\t\t\tinit: false,\n\t\t\tviewerAttrs: {}\n\t\t};\n\t}\n\n\tgetGetters()\n\t{\n\t\treturn {\n\t\t\tget: state => (chatId, fileId, getTemporary = false) =>\n\t\t\t{\n\t\t\t\tif (!chatId || !fileId)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tif (!state.index[chatId] || !state.index[chatId][fileId])\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tif (!getTemporary && !state.index[chatId][fileId].init)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn state.index[chatId][fileId];\n\t\t\t},\n\t\t\tgetList: state => chatId =>\n\t\t\t{\n\t\t\t\tif (!state.index[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn state.index[chatId];\n\t\t\t},\n\t\t\tgetBlank: state => params =>\n\t\t\t{\n\t\t\t\treturn this.getElementState(params);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetActions()\n\t{\n\t\treturn {\n\t\t\tadd: (store, payload) =>\n\t\t\t{\n\t\t\t\tlet result = this.validate(Object.assign({}, payload));\n\t\t\t\tif (payload.id)\n\t\t\t\t{\n\t\t\t\t\tresult.id = payload.id;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tresult.id = 'temporary' + (new Date).getTime() + store.state.created;\n\t\t\t\t}\n\t\t\t\tresult.templateId = result.id;\n\t\t\t\tresult.init = true;\n\n\t\t\t\tstore.commit('add', Object.assign({}, this.getElementState(), result));\n\n\t\t\t\treturn result.id;\n\t\t\t},\n\t\t\tset: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (payload instanceof Array)\n\t\t\t\t{\n\t\t\t\t\tpayload = payload.map(file => {\n\t\t\t\t\t\tlet result = this.validate(Object.assign({}, file));\n\t\t\t\t\t\tresult.templateId = result.id;\n\t\t\t\t\t\treturn Object.assign({}, this.getElementState(), result, {init: true});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tlet result = this.validate(Object.assign({}, payload));\n\t\t\t\t\tresult.templateId = result.id;\n\t\t\t\t\tpayload = [];\n\t\t\t\t\tpayload.push(\n\t\t\t\t\t\tObject.assign({}, this.getElementState(), result, {init: true})\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tstore.commit('set', {\n\t\t\t\t\tinsertType : MutationType.setAfter,\n\t\t\t\t\tdata : payload\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetBefore: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (payload instanceof Array)\n\t\t\t\t{\n\t\t\t\t\tpayload = payload.map(file => {\n\t\t\t\t\t\tlet result = this.validate(Object.assign({}, file));\n\t\t\t\t\t\tresult.templateId = result.id;\n\t\t\t\t\t\treturn Object.assign({}, this.getElementState(), result, {init: true});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tlet result = this.validate(Object.assign({}, payload));\n\t\t\t\t\tresult.templateId = result.id;\n\t\t\t\t\tpayload = [];\n\t\t\t\t\tpayload.push(\n\t\t\t\t\t\tObject.assign({}, this.getElementState(), result, {init: true})\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tstore.commit('set', {\n\t\t\t\t\tactionName: 'setBefore',\n\t\t\t\t\tinsertType : MutationType.setBefore,\n\t\t\t\t\tdata : payload\n\t\t\t\t});\n\t\t\t},\n\t\t\tupdate: (store, payload) =>\n\t\t\t{\n\t\t\t\tlet result = this.validate(Object.assign({}, payload.fields));\n\n\t\t\t\tstore.commit('initCollection', {chatId: payload.chatId});\n\n\t\t\t\tlet index = store.state.collection[payload.chatId].findIndex(el => el.id === payload.id);\n\t\t\t\tif (index < 0)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tid : payload.id,\n\t\t\t\t\tchatId : payload.chatId,\n\t\t\t\t\tindex : index,\n\t\t\t\t\tfields : result\n\t\t\t\t});\n\n\t\t\t\tif (payload.fields.blink)\n\t\t\t\t{\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tstore.commit('update', {\n\t\t\t\t\t\t\tid : payload.id ,\n\t\t\t\t\t\t\tchatId : payload.chatId,\n\t\t\t\t\t\t\tfields : {blink: false}\n\t\t\t\t\t\t});\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tdelete: (store, payload) =>\n\t\t\t{\n\t\t\t\tstore.commit('delete', {\n\t\t\t\t\tid : payload.id,\n\t\t\t\t\tchatId : payload.chatId\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tsaveState: (store, payload) =>\n\t\t\t{\n\t\t\t\tstore.commit('saveState', {});\n\t\t\t\treturn true;\n\t\t\t},\n\t\t}\n\t}\n\n\tgetMutations()\n\t{\n\t\treturn {\n\t\t\tinitCollection: (state, payload) =>\n\t\t\t{\n\t\t\t\tthis.initCollection(state, payload);\n\t\t\t},\n\t\t\tadd: (state, payload) =>\n\t\t\t{\n\t\t\t\tthis.initCollection(state, payload);\n\n\t\t\t\tstate.collection[payload.chatId].push(payload);\n\t\t\t\tstate.index[payload.chatId][payload.id] = payload;\n\n\t\t\t\tstate.created += 1;\n\n\t\t\t\tthis.saveState(state);\n\t\t\t},\n\t\t\tset: (state, payload) =>\n\t\t\t{\n\t\t\t\tfor (let element of payload.data)\n\t\t\t\t{\n\t\t\t\t\tthis.initCollection(state, {chatId: element.chatId});\n\n\t\t\t\t\tlet index = state.collection[element.chatId].findIndex(el => el.id === element.id);\n\t\t\t\t\tif (index > -1)\n\t\t\t\t\t{\n\t\t\t\t\t\tdelete element.templateId;\n\t\t\t\t\t\tstate.collection[element.chatId][index] = Object.assign(state.collection[element.chatId][index], element);\n\t\t\t\t\t}\n\t\t\t\t\telse if (payload.insertType === MutationType.setBefore)\n\t\t\t\t\t{\n\t\t\t\t\t\tstate.collection[element.chatId].unshift(element);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tstate.collection[element.chatId].push(element);\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.index[element.chatId][element.id] = element;\n\n\t\t\t\t\tthis.saveState(state);\n\t\t\t\t}\n\t\t\t},\n\t\t\tupdate: (state, payload) =>\n\t\t\t{\n\t\t\t\tthis.initCollection(state, payload);\n\n\t\t\t\tlet index = -1;\n\t\t\t\tif (typeof payload.index !== 'undefined' && state.collection[payload.chatId][payload.index])\n\t\t\t\t{\n\t\t\t\t\tindex = payload.index;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tindex = state.collection[payload.chatId].findIndex(el => el.id === payload.id);\n\t\t\t\t}\n\n\t\t\t\tif (index >= 0)\n\t\t\t\t{\n\t\t\t\t\tdelete payload.fields.templateId;\n\t\t\t\t\tlet element = Object.assign(\n\t\t\t\t\t\tstate.collection[payload.chatId][index],\n\t\t\t\t\t\tpayload.fields\n\t\t\t\t\t);\n\t\t\t\t\tstate.collection[payload.chatId][index] = element;\n\t\t\t\t\tstate.index[payload.chatId][element.id] = element;\n\n\t\t\t\t\tthis.saveState(state);\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelete: (state, payload) =>\n\t\t\t{\n\t\t\t\tthis.initCollection(state, payload);\n\n\t\t\t\tstate.collection[payload.chatId] = state.collection[payload.chatId].filter(element => element.id !== payload.id);\n\t\t\t\tdelete state.index[payload.chatId][payload.id];\n\n\t\t\t\tthis.saveState(state);\n\t\t\t},\n\t\t\tsaveState: (state, payload) =>\n\t\t\t{\n\t\t\t\tthis.saveState(state);\n\t\t\t},\n\t\t}\n\t}\n\n\tinitCollection(state, payload)\n\t{\n\t\tif (typeof state.collection[payload.chatId] !== 'undefined')\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tstate.collection[payload.chatId] = [];\n\t\tstate.index[payload.chatId] = [];\n\n\t\treturn true;\n\t}\n\n\tgetLoadedState(state)\n\t{\n\t\tif (!state || typeof state !== 'object')\n\t\t{\n\t\t\treturn state;\n\t\t}\n\n\t\tif (typeof state.collection !== 'object')\n\t\t{\n\t\t\treturn state;\n\t\t}\n\n\t\tstate.index = {};\n\n\t\tfor (let chatId in state.collection)\n\t\t{\n\t\t\tif (!state.collection.hasOwnProperty(chatId))\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tstate.index[chatId] = {};\n\n\t\t\tstate.collection[chatId]\n\t\t\t\t.filter(file => file != null)\n\t\t\t\t.forEach(file => {\n\t\t\t\t\tstate.index[chatId][file.id] = file;\n\t\t\t});\n\t\t}\n\n\t\treturn state;\n\t}\n\n\tgetSaveFileList()\n\t{\n\t\tif (!this.db)\n\t\t{\n\t\t\treturn [];\n\t\t}\n\n\t\tif (!this.store.getters['messages/getSaveFileList'])\n\t\t{\n\t\t\treturn [];\n\t\t}\n\n\t\tlet list = this.store.getters['messages/getSaveFileList']();\n\t\tif (!list)\n\t\t{\n\t\t\treturn [];\n\t\t}\n\n\t\treturn list;\n\t}\n\n\tgetSaveTimeout()\n\t{\n\t\treturn 250;\n\t}\n\n\tsaveState(state)\n\t{\n\t\tif (!this.isSaveAvailable())\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tsuper.saveState(() =>\n\t\t{\n\t\t\tlet list = this.getSaveFileList();\n\t\t\tif (!list)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlet storedState = {\n\t\t\t\tcollection: {},\n\t\t\t};\n\n\t\t\tfor (let chatId in list)\n\t\t\t{\n\t\t\t\tif (!list.hasOwnProperty(chatId))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlist[chatId].forEach(fileId =>\n\t\t\t\t{\n\t\t\t\t\tif (!state.index[chatId])\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!state.index[chatId][fileId])\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!storedState.collection[chatId])\n\t\t\t\t\t{\n\t\t\t\t\t\tstoredState.collection[chatId] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tstoredState.collection[chatId].push(\n\t\t\t\t\t\tstate.index[chatId][fileId]\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn storedState;\n\t\t});\n\t}\n\n\tvalidate(fields, options = {})\n\t{\n\t\tconst result = {};\n\n\t\tif (typeof fields.id === \"number\")\n\t\t{\n\t\t\tresult.id = fields.id;\n\t\t}\n\t\telse if (typeof fields.id === \"string\")\n\t\t{\n\t\t\tif (fields.id.startsWith('temporary'))\n\t\t\t{\n\t\t\t\tresult.id = fields.id;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.id = parseInt(fields.id);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.templateId === \"number\")\n\t\t{\n\t\t\tresult.templateId = fields.templateId;\n\t\t}\n\t\telse if (typeof fields.templateId === \"string\")\n\t\t{\n\t\t\tif (fields.templateId.startsWith('temporary'))\n\t\t\t{\n\t\t\t\tresult.templateId = fields.templateId;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.templateId = parseInt(fields.templateId);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.chatId === \"number\" || typeof fields.chatId === \"string\")\n\t\t{\n\t\t\tresult.chatId = parseInt(fields.chatId);\n\t\t}\n\n\t\tif (typeof fields.date !== \"undefined\")\n\t\t{\n\t\t\tresult.date = Utils.date.cast(fields.date);\n\t\t}\n\n\t\tif (typeof fields.type === \"string\")\n\t\t{\n\t\t\tresult.type = fields.type;\n\t\t}\n\n\t\tif (typeof fields.extension === \"string\")\n\t\t{\n\t\t\tresult.extension = fields.extension.toString();\n\n\t\t\tif (result.type === 'image')\n\t\t\t{\n\t\t\t\tresult.icon = 'img';\n\t\t\t}\n\t\t\telse if (result.type === 'video')\n\t\t\t{\n\t\t\t\tresult.icon = 'mov';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.icon = FilesModel.getIconType(result.extension);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.name === \"string\" || typeof fields.name === \"number\")\n\t\t{\n\t\t\tresult.name = fields.name.toString();\n\t\t}\n\n\n\t\tif (typeof fields.size === \"number\" || typeof fields.size === \"string\")\n\t\t{\n\t\t\tresult.size = parseInt(fields.size);\n\t\t}\n\n\t\tif (typeof fields.image === 'boolean')\n\t\t{\n\t\t\tresult.image = false;\n\t\t}\n\t\telse if (typeof fields.image === 'object' && fields.image)\n\t\t{\n\t\t\tresult.image = {\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0,\n\t\t\t};\n\n\t\t\tif (typeof fields.image.width === \"string\" || typeof fields.image.width === \"number\")\n\t\t\t{\n\t\t\t\tresult.image.width = parseInt(fields.image.width);\n\t\t\t}\n\t\t\tif (typeof fields.image.height === \"string\" || typeof fields.image.height === \"number\")\n\t\t\t{\n\t\t\t\tresult.image.height = parseInt(fields.image.height);\n\t\t\t}\n\n\t\t\tif (result.image.width <= 0 || result.image.height <= 0)\n\t\t\t{\n\t\t\t\tresult.image = false;\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.status === \"string\" && typeof FileStatus[fields.status] !== 'undefined')\n\t\t{\n\t\t\tresult.status = fields.status;\n\t\t}\n\n\t\tif (typeof fields.progress === \"number\" || typeof fields.progress === \"string\")\n\t\t{\n\t\t\tresult.progress = parseInt(fields.progress);\n\t\t}\n\n\t\tif (typeof fields.authorId === \"number\" || typeof fields.authorId === \"string\")\n\t\t{\n\t\t\tresult.authorId = parseInt(fields.authorId);\n\t\t}\n\n\t\tif (typeof fields.authorName === \"string\" || typeof fields.authorName === \"number\")\n\t\t{\n\t\t\tresult.authorName = fields.authorName.toString();\n\t\t}\n\n\t\tif (typeof fields.urlPreview === 'string')\n\t\t{\n\t\t\tif (\n\t\t\t\t!fields.urlPreview\n\t\t\t\t|| fields.urlPreview.startsWith('http')\n\t\t\t\t|| fields.urlPreview.startsWith('bx')\n\t\t\t\t|| fields.urlPreview.startsWith('file')\n\t\t\t\t|| fields.urlPreview.startsWith('blob')\n\t\t\t)\n\t\t\t{\n\t\t\t\tresult.urlPreview = fields.urlPreview;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.urlPreview = this.store.state.application.common.host + fields.urlPreview;\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.urlDownload === 'string')\n\t\t{\n\t\t\tif (\n\t\t\t\t!fields.urlDownload\n\t\t\t\t|| fields.urlDownload.startsWith('http')\n\t\t\t\t|| fields.urlDownload.startsWith('bx')\n\t\t\t\t|| fields.urlPreview.startsWith('file')\n\t\t\t)\n\t\t\t{\n\t\t\t\tresult.urlDownload = fields.urlDownload;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.urlDownload = this.store.state.application.common.host + fields.urlDownload;\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.urlShow === 'string')\n\t\t{\n\t\t\tif (\n\t\t\t\t!fields.urlShow\n\t\t\t\t|| fields.urlShow.startsWith('http')\n\t\t\t\t|| fields.urlShow.startsWith('bx')\n\t\t\t\t|| fields.urlShow.startsWith('file')\n\t\t\t)\n\t\t\t{\n\t\t\t\tresult.urlShow = fields.urlShow;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.urlShow = this.store.state.application.common.host + fields.urlShow;\n\t\t\t}\n\t\t}\n\n\t\tif (typeof fields.viewerAttrs === 'object')\n\t\t{\n\t\t\tif (result.type === 'image' && !Utils.platform.isBitrixMobile())\n\t\t\t{\n\t\t\t\tresult.viewerAttrs = fields.viewerAttrs;\n\t\t\t}\n\n\t\t\tif (result.type === 'video' && !Utils.platform.isBitrixMobile() && result.size > FilesModel.maxDiskFileSize)\n\t\t\t{\n\t\t\t\tresult.viewerAttrs = fields.viewerAttrs;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tstatic getType(type)\n\t{\n\t\ttype = type.toString().toLowerCase().split('.').splice(-1)[0];\n\n\t\tswitch(type)\n\t\t{\n\t\t\tcase 'png':\n\t\t\tcase 'jpe':\n\t\t\tcase 'jpg':\n\t\t\tcase 'jpeg':\n\t\t\tcase 'gif':\n\t\t\tcase 'heic':\n\t\t\tcase 'bmp':\n\t\t\tcase 'webp':\n\t\t\t\treturn FileType.image;\n\n\t\t\tcase 'mp4':\n\t\t\tcase 'mkv':\n\t\t\tcase 'webm':\n\t\t\tcase 'mpeg':\n\t\t\tcase 'hevc':\n\t\t\tcase 'avi':\n\t\t\tcase '3gp':\n\t\t\tcase 'flv':\n\t\t\tcase 'm4v':\n\t\t\tcase 'ogg':\n\t\t\tcase 'wmv':\n\t\t\tcase 'mov':\n\t\t\t\treturn FileType.video;\n\n\t\t\tcase 'mp3':\n\t\t\t\treturn FileType.audio;\n\t\t}\n\n\t\treturn FileType.file\n\t}\n\n\tstatic getIconType(extension)\n\t{\n\t\tlet icon = 'empty';\n\n\t\tswitch(extension.toString())\n\t\t{\n\t\t\tcase 'png':\n\t\t\tcase 'jpe':\n\t\t\tcase 'jpg':\n\t\t\tcase 'jpeg':\n\t\t\tcase 'gif':\n\t\t\tcase 'heic':\n\t\t\tcase 'bmp':\n\t\t\tcase 'webp':\n\t\t\t\ticon = 'img';\n\t\t\t\tbreak;\n\n\t\t\tcase 'mp4':\n\t\t\tcase 'mkv':\n\t\t\tcase 'webm':\n\t\t\tcase 'mpeg':\n\t\t\tcase 'hevc':\n\t\t\tcase 'avi':\n\t\t\tcase '3gp':\n\t\t\tcase 'flv':\n\t\t\tcase 'm4v':\n\t\t\tcase 'ogg':\n\t\t\tcase 'wmv':\n\t\t\tcase 'mov':\n\t\t\t\ticon = 'mov';\n\t\t\t\tbreak;\n\n\t\t\tcase 'txt':\n\t\t\t\ticon = 'txt';\n\t\t\t\tbreak;\n\n\t\t\tcase 'doc':\n\t\t\tcase 'docx':\n\t\t\t\ticon = 'doc';\n\t\t\t\tbreak;\n\n\t\t\tcase 'xls':\n\t\t\tcase 'xlsx':\n\t\t\t\ticon = 'xls';\n\t\t\t\tbreak;\n\n\t\t\tcase 'php':\n\t\t\t\ticon = 'php';\n\t\t\t\tbreak;\n\n\t\t\tcase 'pdf':\n\t\t\t\ticon = 'pdf';\n\t\t\t\tbreak;\n\n\t\t\tcase 'ppt':\n\t\t\tcase 'pptx':\n\t\t\t\ticon = 'ppt';\n\t\t\t\tbreak;\n\n\t\t\tcase 'rar':\n\t\t\t\ticon = 'rar';\n\t\t\t\tbreak;\n\n\t\t\tcase 'zip':\n\t\t\tcase '7z':\n\t\t\tcase 'tar':\n\t\t\tcase 'gz':\n\t\t\tcase 'gzip':\n\t\t\t\ticon = 'zip';\n\t\t\t\tbreak;\n\n\t\t\tcase 'set':\n\t\t\t\ticon = 'set';\n\t\t\t\tbreak;\n\n\t\t\tcase 'conf':\n\t\t\tcase 'ini':\n\t\t\tcase 'plist':\n\t\t\t\ticon = 'set';\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn icon;\n\t}\n}","import {Type, Loc} from 'main.core';\nimport {BuilderModel} from 'ui.vue3.vuex';\nimport {ChatTypes, MessageStatus, RecentCallStatus, RecentSettings} from 'im.v2.const';\nimport {Utils} from 'im.v2.lib.utils';\n\nexport class RecentModel extends BuilderModel\n{\n\tgetName()\n\t{\n\t\treturn 'recent';\n\t}\n\n\tgetState()\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t\tactiveCalls: [],\n\t\t\toptions: {\n\t\t\t\tshowBirthday: true,\n\t\t\t\tshowInvited: true,\n\t\t\t\tshowLastMessage: true\n\t\t\t}\n\t\t};\n\t}\n\n\tgetElementState()\n\t{\n\t\treturn {\n\t\t\tdialogId: '0',\n\t\t\tmessage: {\n\t\t\t\tid: 0,\n\t\t\t\ttext: '',\n\t\t\t\tdate: new Date(),\n\t\t\t\tsenderId: 0,\n\t\t\t\tstatus: MessageStatus.received\n\t\t\t},\n\t\t\tdraft: {\n\t\t\t\ttext: '',\n\t\t\t\tdate: null\n\t\t\t},\n\t\t\tunread: false,\n\t\t\tpinned: false,\n\t\t\tliked: false,\n\t\t\tinvitation: {\n\t\t\t\tisActive: false,\n\t\t\t\toriginator: 0,\n\t\t\t\tcanResend: false\n\t\t\t},\n\t\t\toptions: {}\n\t\t};\n\t}\n\n\tgetActiveCallDefaultState()\n\t{\n\t\treturn {\n\t\t\tdialogId: 0,\n\t\t\tname: '',\n\t\t\tcall: {},\n\t\t\tstate: RecentCallStatus.waiting\n\t\t};\n\t}\n\n\tgetGetters()\n\t{\n\t\treturn {\n\t\t\tgetCollection: (state): Object[] =>\n\t\t\t{\n\t\t\t\treturn Object.values(state.collection);\n\t\t\t},\n\t\t\tgetSortedCollection: (state): Object[] =>\n\t\t\t{\n\t\t\t\tconst collectionAsArray = Object.values(state.collection).filter(item => {\n\t\t\t\t\tconst isBirthdayPlaceholder = item.options.birthdayPlaceholder;\n\t\t\t\t\tconst isInvitedUser = item.options.defaultUserRecord;\n\n\t\t\t\t\treturn !isBirthdayPlaceholder && !isInvitedUser && item.message.id;\n\t\t\t\t});\n\n\t\t\t\treturn [...collectionAsArray].sort((a, b) => {\n\t\t\t\t\treturn b.message.date - a.message.date;\n\t\t\t\t});\n\t\t\t},\n\t\t\tget: (state) => (dialogId: string): Object | null =>\n\t\t\t{\n\t\t\t\tif (Type.isNumber(dialogId))\n\t\t\t\t{\n\t\t\t\t\tdialogId = dialogId.toString();\n\t\t\t\t}\n\n\t\t\t\tif (state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn state.collection[dialogId];\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t},\n\n\t\t\tgetItemText: (state) => (dialogId): string =>\n\t\t\t{\n\t\t\t\tconst currentItem = state.collection[dialogId];\n\t\t\t\tif (!currentItem)\n\t\t\t\t{\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\tlet result = currentItem.message.text;\n\t\t\t\t// system mention (get current name from model, otherwise - from code)\n\t\t\t\tresult = result.replace(/\\[user=(\\d+) replace](.*?)\\[\\/user]/gi, (match, userId, userName) => {\n\t\t\t\t\tconst user = this.store.getters['users/get'](userId);\n\t\t\t\t\treturn user ? user.name : userName;\n\t\t\t\t});\n\n\t\t\t\tresult = result.replace(/\\[user=(\\d+)]\\[\\/user]/gi, (match, userId) => {\n\t\t\t\t\tconst user = this.store.getters['users/get'](userId);\n\t\t\t\t\treturn user ? user.name : match;\n\t\t\t\t});\n\n\t\t\t\t// custom mention (keep name as it is)\n\t\t\t\treturn result.replace(/\\[user=(\\d+)](.+?)\\[\\/user]/gi, '$2');\n\t\t\t},\n\n\t\t\tneedsBirthdayPlaceholder: (state) => (dialogId): boolean =>\n\t\t\t{\n\t\t\t\tconst currentItem = state.collection[dialogId];\n\t\t\t\tif (!currentItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst dialog = this.store.getters['dialogues/get'](dialogId);\n\t\t\t\tif (!dialog || dialog.type !== ChatTypes.user)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst hasBirthday = this.store.getters['users/hasBirthday'](dialogId);\n\t\t\t\tif (!hasBirthday)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst hasTodayMessage = currentItem.message.id > 0 && Utils.date.isToday(currentItem.message.date);\n\n\t\t\t\treturn state.options.showBirthday && !hasTodayMessage && dialog.counter === 0;\n\t\t\t},\n\n\t\t\tgetMessageDate: (state) => (dialogId): Date | null =>\n\t\t\t{\n\t\t\t\tconst currentItem = state.collection[dialogId];\n\t\t\t\tif (!currentItem)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tif (Type.isDate(currentItem.draft.date) && currentItem.draft.date > currentItem.message.date)\n\t\t\t\t{\n\t\t\t\t\treturn currentItem.draft.date;\n\t\t\t\t}\n\n\t\t\t\tconst needsBirthdayPlaceholder = this.store.getters['recent/needsBirthdayPlaceholder'](currentItem.dialogId);\n\t\t\t\tif (needsBirthdayPlaceholder)\n\t\t\t\t{\n\t\t\t\t\treturn Utils.date.getStartOfTheDay();\n\t\t\t\t}\n\n\t\t\t\treturn currentItem.message.date;\n\t\t\t},\n\n\t\t\thasActiveCall: (state): boolean =>\n\t\t\t{\n\t\t\t\treturn state.activeCalls.some(item => item.state === RecentCallStatus.joined);\n\t\t\t},\n\n\t\t\tgetOption: (state) => (optionName: string): boolean =>\n\t\t\t{\n\t\t\t\tif (!RecentSettings[optionName])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.options[optionName];\n\t\t\t}\n\t\t};\n\t}\n\n\tgetActions()\n\t{\n\t\treturn {\n\t\t\tset: (store, payload: Array | Object) =>\n\t\t\t{\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\n\t\t\t\tconst itemsToUpdate = [];\n\t\t\t\tconst itemsToAdd = [];\n\t\t\t\tpayload.map(element => {\n\t\t\t\t\treturn this.validate(element);\n\t\t\t\t}).forEach(element => {\n\t\t\t\t\tconst existingItem = store.state.collection[element.dialogId];\n\t\t\t\t\tif (existingItem)\n\t\t\t\t\t{\n\t\t\t\t\t\titemsToUpdate.push({id: existingItem.dialogId, fields: {...element}});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\titemsToAdd.push({...this.getElementState(), ...element});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (itemsToAdd.length > 0)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('add', itemsToAdd);\n\t\t\t\t}\n\t\t\t\tif (itemsToUpdate.length > 0)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('update', itemsToUpdate);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tupdate: (store, payload: {id: string | number, fields: Object}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.id];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tid: existingItem.dialogId,\n\t\t\t\t\tfields: this.validate(payload.fields)\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tunread: (store, payload: {id: string | number, action: boolean}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.id];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tid: existingItem.dialogId,\n\t\t\t\t\tfields: {unread: payload.action}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tpin: (store, payload: {id: string | number, action: boolean}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.id];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tid: existingItem.dialogId,\n\t\t\t\t\tfields: {pinned: payload.action}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tlike: (store, payload: {id: string | number, messageId: number, liked: boolean}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.id];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst isLastMessage = existingItem.message.id === Number.parseInt(payload.messageId, 10);\n\t\t\t\tconst isExactMessageLiked = !Type.isUndefined(payload.messageId) && payload.liked === true;\n\t\t\t\tif (isExactMessageLiked && !isLastMessage)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tid: existingItem.dialogId,\n\t\t\t\t\tfields: {liked: payload.liked === true}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tdraft: (store, payload: {id: string | number, text: string}) =>\n\t\t\t{\n\t\t\t\tconst dialog = this.store.getters['dialogues/get'](payload.id);\n\t\t\t\tif (!dialog)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tlet existingItem = store.state.collection[payload.id];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\tif (payload.text === '')\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst newItem = {\n\t\t\t\t\t\tdialogId: payload.id.toString(),\n\t\t\t\t\t};\n\t\t\t\t\tstore.commit('add', {...this.getElementState(), ...newItem});\n\t\t\t\t\texistingItem = store.state.collection[payload.id];\n\t\t\t\t}\n\n\t\t\t\tconst fields = this.validate({draft: {text: payload.text.toString()}});\n\t\t\t\tif (fields.draft.text === existingItem.draft.text)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tid: existingItem.dialogId,\n\t\t\t\t\tfields\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tdelete: (store, payload: {id: string | number}) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection[payload.id];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('delete', {\n\t\t\t\t\tid: existingItem.dialogId\n\t\t\t\t});\n\t\t\t},\n\n\t\t\taddActiveCall: (store, payload) =>\n\t\t\t{\n\t\t\t\tconst existingIndex = store.state.activeCalls.findIndex(item => {\n\t\t\t\t\treturn item.dialogId === payload.dialogId || item.call.id === payload.call.id;\n\t\t\t\t});\n\n\t\t\t\tif (existingIndex > -1)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('updateActiveCall', {\n\t\t\t\t\t\tindex: existingIndex,\n\t\t\t\t\t\tfields: this.validateActiveCall(payload)\n\t\t\t\t\t});\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('addActiveCall', this.prepareActiveCall(payload));\n\t\t\t},\n\n\t\t\tupdateActiveCall: (store, payload) =>\n\t\t\t{\n\t\t\t\tconst existingIndex = store.state.activeCalls.findIndex(item => {\n\t\t\t\t\treturn item.dialogId === payload.dialogId;\n\t\t\t\t});\n\n\t\t\t\tstore.commit('updateActiveCall', {\n\t\t\t\t\tindex: existingIndex,\n\t\t\t\t\tfields: this.validateActiveCall(payload.fields)\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tdeleteActiveCall: (store, payload) =>\n\t\t\t{\n\t\t\t\tconst existingIndex = store.state.activeCalls.findIndex(item => {\n\t\t\t\t\treturn item.dialogId === payload.dialogId;\n\t\t\t\t});\n\n\t\t\t\tif (existingIndex === -1)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('deleteActiveCall', {\n\t\t\t\t\tindex: existingIndex\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tsetOptions: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (!Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tpayload = this.validateOptions(payload);\n\t\t\t\tObject.entries(payload).forEach(([option, value]) => {\n\t\t\t\t\tstore.commit('setOptions', {\n\t\t\t\t\t\toption,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n\n\tgetMutations()\n\t{\n\t\treturn {\n\t\t\tadd: (state, payload: Object[] | Object) => {\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\t\t\t\tpayload.forEach(item => {\n\t\t\t\t\tstate.collection[item.dialogId] = item;\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tupdate: (state, payload: Object[] | Object) => {\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\t\t\t\tpayload.forEach(({id, fields}) => {\n\t\t\t\t\t// if we already got chat - we should not update it with default user chat (unless it's an accepted invitation)\n\t\t\t\t\tconst defaultUserElement = fields.options && fields.options.defaultUserRecord && !fields.invitation;\n\t\t\t\t\tif (defaultUserElement)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst currentElement = state.collection[id];\n\t\t\t\t\tfields.message = {...currentElement.message, ...fields.message};\n\t\t\t\t\tfields.options = {...currentElement.options, ...fields.options};\n\t\t\t\t\tstate.collection[id] = {\n\t\t\t\t\t\t...currentElement,\n\t\t\t\t\t\t...fields\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tdelete: (state, payload: {id: string}) => {\n\t\t\t\tdelete state.collection[payload.id];\n\t\t\t},\n\n\t\t\taddActiveCall: (state, payload) => {\n\t\t\t\tstate.activeCalls.push(payload);\n\t\t\t},\n\n\t\t\tupdateActiveCall: (state, payload) => {\n\t\t\t\tstate.activeCalls[payload.index] = {\n\t\t\t\t\t...state.activeCalls[payload.index],\n\t\t\t\t\t...payload.fields\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tdeleteActiveCall: (state, payload) => {\n\t\t\t\tstate.activeCalls.splice(payload.index, 1);\n\t\t\t},\n\n\t\t\tsetOptions: (state, payload) => {\n\t\t\t\tstate.options[payload.option] = payload.value;\n\t\t\t}\n\t\t};\n\t}\n\n\tvalidate(fields: Object)\n\t{\n\t\tconst result = {\n\t\t\toptions: {}\n\t\t};\n\n\t\tif (Type.isNumber(fields.id))\n\t\t{\n\t\t\tresult.dialogId = fields.id.toString();\n\t\t}\n\t\tif (Type.isStringFilled(fields.id))\n\t\t{\n\t\t\tresult.dialogId = fields.id;\n\t\t}\n\n\t\tif (Type.isNumber(fields.dialogId))\n\t\t{\n\t\t\tresult.dialogId = fields.dialogId.toString();\n\t\t}\n\t\tif (Type.isStringFilled(fields.dialogId))\n\t\t{\n\t\t\tresult.dialogId = fields.dialogId;\n\t\t}\n\n\t\tif (Type.isPlainObject(fields.message))\n\t\t{\n\t\t\tresult.message = this.prepareMessage(fields);\n\t\t}\n\n\t\tif (Type.isPlainObject(fields.draft))\n\t\t{\n\t\t\tresult.draft = this.prepareDraft(fields);\n\t\t}\n\n\t\tif (Type.isBoolean(fields.unread))\n\t\t{\n\t\t\tresult.unread = fields.unread;\n\t\t}\n\n\t\tif (Type.isBoolean(fields.pinned))\n\t\t{\n\t\t\tresult.pinned = fields.pinned;\n\t\t}\n\n\t\tif (Type.isBoolean(fields.liked))\n\t\t{\n\t\t\tresult.liked = fields.liked;\n\t\t}\n\n\t\tif (Type.isPlainObject(fields.invited))\n\t\t{\n\t\t\tresult.invitation = {\n\t\t\t\tisActive: true,\n\t\t\t\toriginator: fields.invited.originator_id,\n\t\t\t\tcanResend: fields.invited.can_resend\n\t\t\t};\n\t\t\tresult.options.defaultUserRecord = true;\n\t\t}\n\t\telse if (fields.invited === false)\n\t\t{\n\t\t\tresult.invitation = {\n\t\t\t\tisActive: false,\n\t\t\t\toriginator: 0,\n\t\t\t\tcanResend: false\n\t\t\t};\n\t\t\tresult.options.defaultUserRecord = true;\n\t\t}\n\n\t\tif (Type.isPlainObject(fields.options))\n\t\t{\n\t\t\tif (!result.options)\n\t\t\t{\n\t\t\t\tresult.options = {};\n\t\t\t}\n\n\t\t\tif (Type.isBoolean(fields.options.default_user_record))\n\t\t\t{\n\t\t\t\tfields.options.defaultUserRecord = fields.options.default_user_record;\n\t\t\t}\n\n\t\t\tif (Type.isBoolean(fields.options.defaultUserRecord))\n\t\t\t{\n\t\t\t\tresult.options.defaultUserRecord = fields.options.defaultUserRecord;\n\t\t\t}\n\n\t\t\tif (Type.isBoolean(fields.options.birthdayPlaceholder))\n\t\t\t{\n\t\t\t\tresult.options.birthdayPlaceholder = fields.options.birthdayPlaceholder;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tprepareChatType(fields: Object): string\n\t{\n\t\tif (fields.type === ChatTypes.user)\n\t\t{\n\t\t\treturn ChatTypes.user;\n\t\t}\n\n\t\tif (fields.chat)\n\t\t{\n\t\t\treturn fields.chat.type;\n\t\t}\n\n\t\treturn fields.type;\n\t}\n\n\tprepareMessage(fields: Object): Object\n\t{\n\t\tconst {message} = this.getElementState();\n\t\tif (Type.isNumber(fields.message.id))\n\t\t{\n\t\t\tmessage.id = fields.message.id;\n\t\t}\n\t\tif (Type.isString(fields.message.text))\n\t\t{\n\t\t\tconst textOptions = {};\n\t\t\tif (fields.message.withAttach || fields.message.attach)\n\t\t\t{\n\t\t\t\ttextOptions.WITH_ATTACH = true;\n\t\t\t}\n\t\t\telse if (fields.message.withFile || fields.message.file)\n\t\t\t{\n\t\t\t\ttextOptions.WITH_FILE = true;\n\t\t\t}\n\t\t\tmessage.text = this.prepareText(fields.message.text, textOptions);\n\t\t}\n\n\t\tif (Type.isDate(fields.message.date) || Type.isString(fields.message.date))\n\t\t{\n\t\t\tmessage.date = Utils.date.cast(fields.message.date);\n\t\t}\n\n\t\tif (Type.isNumber(fields.message.author_id))\n\t\t{\n\t\t\tmessage.senderId = fields.message.author_id;\n\t\t}\n\t\tif (Type.isNumber(fields.message.senderId))\n\t\t{\n\t\t\tmessage.senderId = fields.message.senderId;\n\t\t}\n\t\tif (Type.isStringFilled(fields.message.status))\n\t\t{\n\t\t\tmessage.status = fields.message.status;\n\t\t}\n\n\t\treturn message;\n\t}\n\n\tprepareDraft(fields: Object): Object\n\t{\n\t\tconst {draft} = this.getElementState();\n\n\t\tif (Type.isString(fields.draft.text))\n\t\t{\n\t\t\tdraft.text = this.prepareText(fields.draft.text, {});\n\t\t}\n\n\t\tif (Type.isStringFilled(draft.text))\n\t\t{\n\t\t\tdraft.date = new Date();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tdraft.date = null;\n\t\t}\n\n\t\treturn draft;\n\t}\n\n\tprepareText(text: string, options: Object): string\n\t{\n\t\tlet result = text.trim();\n\n\t\tif (result.startsWith('/me'))\n\t\t{\n\t\t\tresult = result.slice(4);\n\t\t}\n\t\telse if (result.startsWith('/loud'))\n\t\t{\n\t\t\tresult = result.slice(6);\n\t\t}\n\n\t\tresult = result.replace(/<br><br \\/>/gi, '<br />');\n\t\tresult = result.replace(/<br \\/><br>/gi, '<br />');\n\n\t\tconst codeReplacement = [];\n\t\tresult = result.replace(/\\[code]\\n?([\\0-\\uFFFF]*?)\\[\\/code]/gi, (whole, group) => {\n\t\t\tconst id = codeReplacement.length;\n\t\t\tcodeReplacement.push(group);\n\t\t\treturn `####REPLACEMENT_CODE_${id}####`;\n\t\t});\n\n\t\tresult = result.replace(/\\[put(?:=.+?)?](?:.+?)?\\[\\/put]/gi, (match) => {\n\t\t\treturn match.replace(/\\[put(?:=(.+))?](.+?)?\\[\\/put]/gi, (whole, command, textToPut) => {\n\t\t\t\treturn textToPut || command;\n\t\t\t});\n\t\t});\n\n\t\tresult = result.replace(/\\[send(?:=.+?)?](?:.+?)?\\[\\/send]/gi, (match) => {\n\t\t\treturn match.replace(/\\[send(?:=(.+))?](.+?)?\\[\\/send]/gi, (whole, command, textToSend) => {\n\t\t\t\treturn textToSend || command;\n\t\t\t});\n\t\t});\n\n\t\tresult = result.replace(/\\[[bisu]](.*?)\\[\\/[bisu]]/gi, '$1');\n\t\tresult = result.replace(/\\[url](.*?)\\[\\/url]/gi, '$1');\n\t\tresult = result.replace(/\\[url=(.*?)](.*?)\\[\\/url]/gi, '$2');\n\t\tresult = result.replace(/\\[rating=([1-5])]/gi, () => `[${Loc.getMessage('IM_UTILS_TEXT_RATING')}] `);\n\t\tresult = result.replace(/\\[attach=(\\d+)]/gi, () => `[${Loc.getMessage('IM_UTILS_TEXT_ATTACH')}] `);\n\t\tresult = result.replace(/\\[dialog=(chat\\d+|\\d+)(?: message=(\\d+))?](.*?)\\[\\/dialog]/gi, (whole, dialogId, messageId, message) => message);\n\t\tresult = result.replace(/\\[chat=(\\d+)](.*?)\\[\\/chat]/gi, '$2');\n\t\tresult = result.replace(/\\[send(?:=.+?)?](.+?)?\\[\\/send]/gi, '$1');\n\t\tresult = result.replace(/\\[put(?:=.+?)?](.+?)?\\[\\/put]/gi, '$1');\n\t\tresult = result.replace(/\\[call(?:=.+?)?](.*?)\\[\\/call]/gi, '$1');\n\t\tresult = result.replace(/\\[pch=(\\d+)](.*?)\\[\\/pch]/gi, '$2');\n\t\tresult = result.replace(/<img.*?data-code=\"([^\"]*)\".*?>/gi, '$1');\n\t\tresult = result.replace(/<span.*?title=\"([^\"]*)\".*?>.*?<\\/span>/gi, '($1)');\n\t\tresult = result.replace(/<img.*?title=\"([^\"]*)\".*?>/gi, '($1)');\n\t\tresult = result.replace(/<s>([^\"]*)<\\/s>/gi, ' ');\n\t\tresult = result.replace(/\\[s]([^\"]*)\\[\\/s]/gi, ' ');\n\t\tresult = result.replace(/\\[icon=([^\\]]*)]/gi, this.prepareIconCode);\n\n\t\tcodeReplacement.forEach((element, index) => {\n\t\t\tresult = result.replace(`####REPLACEMENT_CODE_${index}####`, element);\n\t\t});\n\n\t\tresult = result.replace(/-{54}(.*?)-{54}/gims, `[${Loc.getMessage('IM_UTILS_TEXT_QUOTE')}] `);\n\t\tresult = result.replace(/^(>>(.*)(\\n)?)/gim, `[${Loc.getMessage('IM_UTILS_TEXT_QUOTE')}] `);\n\n\t\tif (options.WITH_ATTACH && result.length === 0)\n\t\t{\n\t\t\tresult = `[${Loc.getMessage('IM_UTILS_TEXT_ATTACH')}] ${result}`;\n\t\t}\n\t\telse if (options.WITH_FILE && result.length === 0)\n\t\t{\n\t\t\tresult = `[${Loc.getMessage('IM_UTILS_TEXT_FILE')}] ${result}`;\n\t\t}\n\n\t\tresult = result.replace(/\\n/gi, ' ').trim();\n\n\t\tconst SPLIT_INDEX = 24;\n\t\tconst UNSEEN_SPACE = '\\u200B';\n\n\t\tif (result.length > SPLIT_INDEX)\n\t\t{\n\t\t\tlet firstPart = result.slice(0, SPLIT_INDEX + 1);\n\t\t\tconst secondPart = result.slice(SPLIT_INDEX + 1);\n\t\t\tconst hasWhitespace = /\\s/.test(firstPart);\n\t\t\tconst hasUserCode = /\\[user=(\\d+)](.*?)\\[\\/user]/i.test(result);\n\t\t\tif (firstPart.length === SPLIT_INDEX + 1 && !hasWhitespace && !hasUserCode)\n\t\t\t{\n\t\t\t\tfirstPart += UNSEEN_SPACE;\n\t\t\t}\n\t\t\tresult = firstPart + secondPart;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tprepareIconCode(wholeMatch: string): string\n\t{\n\t\tlet title = wholeMatch.match(/title=(.*[^\\s\\]])/i);\n\t\tif (title && title[1])\n\t\t{\n\t\t\t// eslint-disable-next-line prefer-destructuring\n\t\t\ttitle = title[1];\n\t\t\tif (title.includes('width='))\n\t\t\t{\n\t\t\t\ttitle = title.slice(0, Math.max(0, title.indexOf('width=')));\n\t\t\t}\n\t\t\tif (title.includes('height='))\n\t\t\t{\n\t\t\t\ttitle = title.slice(0, Math.max(0, title.indexOf('height=')));\n\t\t\t}\n\t\t\tif (title.includes('size='))\n\t\t\t{\n\t\t\t\ttitle = title.slice(0, Math.max(0, title.indexOf('size=')));\n\t\t\t}\n\t\t\tif (title)\n\t\t\t{\n\t\t\t\ttitle = `(${title.trim()})`;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttitle = `(${Loc.getMessage('IM_UTILS_TEXT_ICON')})`;\n\t\t}\n\t\treturn title;\n\t}\n\n\tprepareActiveCall(call)\n\t{\n\t\treturn {...this.getActiveCallDefaultState(), ...this.validateActiveCall(call)};\n\t}\n\n\tvalidateActiveCall(fields)\n\t{\n\t\tconst result = {};\n\n\t\tif (Type.isStringFilled(fields.dialogId) || Type.isNumber(fields.dialogId))\n\t\t{\n\t\t\tresult.dialogId = fields.dialogId;\n\t\t}\n\n\t\tif (Type.isStringFilled(fields.name))\n\t\t{\n\t\t\tresult.name = fields.name;\n\t\t}\n\n\t\tif (Type.isObjectLike(fields.call))\n\t\t{\n\t\t\tresult.call = fields.call;\n\n\t\t\tif (fields.call?.associatedEntity?.avatar === '/bitrix/js/im/images/blank.gif')\n\t\t\t{\n\t\t\t\tresult.call.associatedEntity.avatar = '';\n\t\t\t}\n\t\t}\n\n\t\tif (RecentCallStatus[fields.state])\n\t\t{\n\t\t\tresult.state = fields.state;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tvalidateOptions(fields)\n\t{\n\t\tconst result = {};\n\n\t\tif (Type.isBoolean(fields.showBirthday))\n\t\t{\n\t\t\tresult.showBirthday = fields.showBirthday;\n\t\t}\n\n\t\tif (Type.isBoolean(fields.showInvited))\n\t\t{\n\t\t\tresult.showInvited = fields.showInvited;\n\t\t}\n\n\t\tif (Type.isBoolean(fields.showLastMessage))\n\t\t{\n\t\t\tresult.showLastMessage = fields.showLastMessage;\n\t\t}\n\n\t\treturn result;\n\t}\n}"],"names":["ApplicationModel","BuilderModel","getName","getState","common","host","getVariable","location","protocol","siteId","userId","languageId","dialog","dialogId","chatId","diskFolderId","messageLimit","enableReadMessages","messageExtraCount","disk","enabled","maxFileSize","call","serverEnabled","maxParticipants","mobile","keyboardShow","device","type","DeviceType","desktop","orientation","DeviceOrientation","portrait","options","quoteEnable","quoteFromRight","autoplayVideo","darkTheme","showSmiles","error","active","code","description","getStateSaveException","Object","assign","getGetters","getOption","state","optionName","Settings","getActions","set","store","payload","commit","validate","hideSmiles","setOptions","Type","isPlainObject","validateOptions","entries","forEach","option","value","getMutations","hasChange","group","hasOwnProperty","field","isSaveNeeded","saveState","increaseDialogExtraCount","count","decreaseDialogExtraCount","newCounter","clearDialogExtraCount","fields","result","toString","startsWith","substr","parseInt","isNaN","isUndefined","isStringFilled","BX","MessengerProxy","isDarkTheme","IntersectionType","empty","equal","none","found","foundReverse","MessagesModel","created","collection","mutationType","saveMessageList","saveFileList","saveUserList","getElementState","templateId","templateType","placeholderType","id","authorId","date","Date","text","textConverted","params","TYPE","COMPONENT_ID","push","unread","sending","retry","blink","getMutationType","initialType","MutationType","appliedType","getLastId","length","lastId","i","element","getMessage","messageId","index","get","getBlank","getSaveFileList","getSaveUserList","add","countMessages","message","getTime","dispatch","actionStart","test","nextTick","actionError","actionFinish","Array","map","prepareMessage","insertType","data","addPlaceholders","placeholders","requestMode","setBefore","setAfter","reverse","clearPlaceholders","updatePlaceholders","update","findIndex","el","setTimeout","delete","elements","clear","keepPlaceholders","applyMutationType","readMessages","readId","unreadMessages","unreadId","initCollection","sort","a","b","Logger","warn","filter","firstPlaceholderId","firstMessage","firstPlaceholderIndex","splice","amount","chats","chatsSave","isPush","getPayloadWithTempMessages","StorageLimit","messages","includes","intersection","manageCacheBeforeSet","foundElements","removeIntersectionCacheElements","localMessage","isTemporaryMessage","unshift","getters","Set","every","EventEmitter","emit","EventType","messagesSet","readVisibleMessages","isSaveState","clearMessages","applied","scrollStickToTop","scrollMessageId","saveNeeded","updateSubordinateStates","cache","recursive","noneElements","reverseResult","updateSaveLists","isSaveAvailable","readCounter","slice","FILE_ID","concat","getSaveTimeout","storedState","Utils","isUuidV4","uuid","chat_id","cast","textOriginal","convertToHtml","isConverted","text_converted","senderId","author_id","system","validateParams","Vue","isComponent","like","decodeAttach","e","hasResultElements","quote","image","enableBigSmile","trim","replace","quoteSign","indexOf","textPrepare","split","join","decodeBbCode","whole","p1","p2","p3","p4","offset","changed","aInner","match","doubleSmileSize","start","width","middle","height","end","textOnly","item","isArray","arrayElement","prop","htmlspecialcharsback","putReplacement","sendReplacement","codeReplacement","link","tag","document","createElement","href","target","allowList","outerHTML","open","inner","close","openlines","number","htmlspecialchars","historyId","textElementSize","url","attrs","size","title","attributes","name","command","html","hideErrorImage","parentNode","innerHTML","src","payloadData","platform","isBitrixMobile","payloadChatId","existsInPayload","doesTaskExist","find","payloadMessage","foundUploadTasks","fileId","window","imDialogUploadTasks","task","taskId","foundMessageTask","imDialogMessagesTasks","WRITING_STATUS_TIME","DialoguesModel","writingStatusTimers","chatOptions","ChatTypes","chat","avatar","color","extranet","counter","userCounter","messageCounter","lastMessageId","managerList","readList","writingList","muteList","textareaMessage","quoteId","editId","owner","entityType","entityId","dateCreate","public","getByChatId","Number","values","getChatOption","chatType","getQuoteId","getEditId","areUnreadMessagesLoaded","messagesCollection","lastElementId","lastElement","isNumber","existingItem","startWriting","timerId","alreadyWriting","some","clearTimeout","setWritingStatusTimeout","newItem","userName","newWritingList","actionName","stopWriting","addToReadList","removeFromReadList","increaseCounter","increasedCounter","previousCounter","decreaseCounter","decreasedCounter","increaseMessageCounter","mute","currentUserId","application","unmute","setChatOptions","validateChatOptions","dialog_id","user_counter","message_count","unread_id","last_message_id","ownerId","isString","prepareAvatar","isBoolean","entity_type","entity_id","date_create","readed_list","prepareReadList","writing_list","prepareWritingList","manager_list","mute_list","prepareMuteList","endsWith","encodeURI","user_id","user_name","message_id","key","typeOptions","newType","convertSnakeToCamelCase","toLowerCase","newKey","UsersModel","onlineList","mobileOnlineList","absentList","botList","firstName","lastName","workPosition","gender","network","bot","connector","externalAuthId","status","idle","lastActivityDate","mobileLastDate","isOnline","isMobileOnline","birthday","isBirthday","absent","isAbsent","departments","phones","workPhone","personalMobile","personalPhone","innerPhone","getTemporary","user","getList","userList","hasBirthday","getStatus","UserStatus","mobileOnline","getLastOnline","getLastDateText","getPosition","Loc","getBotType","botType","BotType","existingUser","setBotList","addToOnlineList","addToMobileOnlineList","isBirthdayToday","getTimeToNextMidnight","addToAbsentList","startOnlineCheckInterval","startAbsentCheckInterval","isDate","first_name","last_name","work_position","external_auth_id","last_activity_date","mobile_last_date","departmentId","preparePhones","work_phone","personal_mobile","personal_phone","inner_phone","users","absentCheckInterval","TIME_TO_NEXT_DAY","setInterval","currentTime","now","absentEnd","onlineCheckInterval","ONE_MINUTE","FilesModel","extension","icon","FileStatus","done","progress","authorName","urlPreview","urlShow","urlDownload","init","viewerAttrs","file","getLoadedState","db","list","getIconType","maxDiskFileSize","getType","FileType","video","audio","RecentModel","activeCalls","showBirthday","showInvited","showLastMessage","MessageStatus","received","draft","pinned","liked","invitation","isActive","originator","canResend","getActiveCallDefaultState","RecentCallStatus","waiting","getCollection","getSortedCollection","collectionAsArray","isBirthdayPlaceholder","birthdayPlaceholder","isInvitedUser","defaultUserRecord","getItemText","currentItem","needsBirthdayPlaceholder","hasTodayMessage","isToday","getMessageDate","getStartOfTheDay","hasActiveCall","joined","RecentSettings","itemsToUpdate","itemsToAdd","action","pin","isLastMessage","isExactMessageLiked","addActiveCall","existingIndex","validateActiveCall","prepareActiveCall","updateActiveCall","deleteActiveCall","defaultUserElement","currentElement","prepareDraft","invited","originator_id","can_resend","default_user_record","prepareChatType","textOptions","withAttach","attach","WITH_ATTACH","withFile","WITH_FILE","prepareText","textToPut","textToSend","prepareIconCode","SPLIT_INDEX","UNSEEN_SPACE","firstPart","secondPart","hasWhitespace","hasUserCode","wholeMatch","Math","max","isObjectLike","associatedEntity"],"mappings":"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"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.26 |
proxy
|
phpinfo
|
Settings