Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/im/controller/dist/ |
Upload File : |
{"version":3,"file":"controller.bundle.js","sources":["../src/application.js","../src/core.js"],"sourcesContent":["/**\n * Bitrix Messenger\n * Application controller\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2020 Bitrix\n */\n\nimport {Timer} from 'im.lib.timer';\nimport {DialogCrmType, DialogType, RestMethod} from \"im.const\";\nimport {Utils} from \"im.lib.utils\";\nimport {Vue} from \"ui.vue\";\n\nexport class ApplicationController\n{\n\tconstructor()\n\t{\n\t\tthis.controller = null;\n\n\t\tthis.timer = new Timer();\n\n\t\tthis._prepareFilesBeforeSave = params => { return params };\n\n\t\tthis.defaultMessageLimit = 50;\n\t\tthis.requestMessageLimit = this.getDefaultMessageLimit();\n\n\t\tthis.messageLastReadId = {};\n\t\tthis.messageReadQueue = {};\n\t}\n\n\tsetCoreController(controller)\n\t{\n\t\tthis.controller = controller;\n\t}\n\n\tgetSiteId()\n\t{\n\t\treturn this.controller.getStore().state.application.common.siteId;\n\t}\n\n\tgetUserId()\n\t{\n\t\treturn this.controller.getStore().state.application.common.userId;\n\t}\n\n\tgetLanguageId()\n\t{\n\t\treturn this.controller.getStore().state.application.common.languageId;\n\t}\n\n\tgetCurrentUser()\n\t{\n\t\treturn this.controller.getStore().getters['users/get'](this.controller.getStore().state.application.common.userId, true);\n\t}\n\n\tgetChatId()\n\t{\n\t\treturn this.controller.getStore().state.application.dialog.chatId;\n\t}\n\n\tgetDialogId()\n\t{\n\t\treturn this.controller.getStore().state.application.dialog.dialogId;\n\t}\n\n\tgetData()\n\t{\n\t\treturn this.controller.getStore().state.application;\n\t}\n\n\tgetDialogData(dialogId = this.getDialogId())\n\t{\n\t\tif (this.controller.getStore().state.dialogues.collection[dialogId])\n\t\t{\n\t\t\treturn this.controller.getStore().state.dialogues.collection[dialogId];\n\t\t}\n\n\t\treturn this.controller.getStore().getters['dialogues/getBlank']();\n\t}\n\n\tgetDialogCrmData(dialogId = this.getDialogId())\n\t{\n\t\tlet result = {\n\t\t\tenabled: false,\n\t\t\tentityType: DialogCrmType.none,\n\t\t\tentityId: 0\n\t\t};\n\n\t\tlet dialogData = this.getDialogData(dialogId);\n\t\tif (dialogData.type === DialogType.call)\n\t\t{\n\t\t\tif (dialogData.entityData1 && typeof dialogData.entityData1 === 'string')\n\t\t\t{\n\t\t\t\tlet [enabled, entityType, entityId] = dialogData.entityData1.split('|');\n\t\t\t\tif (enabled)\n\t\t\t\t{\n\t\t\t\t\tentityType = entityType? entityType.toString().toLowerCase(): DialogCrmType.none;\n\t\t\t\t\tresult = {enabled, entityType, entityId};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (dialogData.type === DialogType.crm)\n\t\t{\n\t\t\tlet [entityType, entityId] = dialogData.entityId.split('|');\n\t\t\tentityType = entityType? entityType.toString().toLowerCase(): DialogCrmType.none;\n\t\t\tresult = {enabled: true, entityType, entityId};\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tgetDialogIdByChatId(chatId)\n\t{\n\t\tif (this.getDialogId() === 'chat'+chatId)\n\t\t{\n\t\t\treturn this.getDialogId();\n\t\t}\n\n\t\tlet dialog = this.controller.getStore().getters['dialogues/getByChatId'](chatId);\n\t\tif (!dialog)\n\t\t{\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn dialog.dialogId;\n\t}\n\n\tgetDiskFolderId()\n\t{\n\t\treturn this.controller.getStore().state.application.dialog.diskFolderId;\n\t}\n\n\tgetDefaultMessageLimit()\n\t{\n\t\treturn this.defaultMessageLimit;\n\t}\n\n\tgetRequestMessageLimit()\n\t{\n\t\treturn this.requestMessageLimit;\n\t}\n\n\tmuteDialog(action = null, dialogId = this.getDialogId())\n\t{\n\t\tif (Utils.dialog.isEmptyDialogId(dialogId))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (action === null)\n\t\t{\n\t\t\taction = !this.isDialogMuted();\n\t\t}\n\n\t\tthis.timer.start('muteDialog', dialogId, .3, (id) => {\n\t\t\tthis.controller.restClient.callMethod(RestMethod.imChatMute, {\n\t\t\t\t'DIALOG_ID': dialogId,\n\t\t\t\t'ACTION': action? 'Y': 'N'\n\t\t\t})\n\t\t});\n\n\t\tlet muteList = [];\n\t\tif (action)\n\t\t{\n\t\t\tmuteList = this.getDialogData().muteList;\n\t\t\tmuteList.push(this.getUserId());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmuteList = this.getDialogData().muteList.filter(userId => userId !== this.getUserId());\n\t\t}\n\n\t\tthis.controller.getStore().dispatch('dialogues/update', {\n\t\t\tdialogId,\n\t\t\tfields: {muteList},\n\t\t});\n\n\t\treturn true;\n\t}\n\n\tisDialogMuted(dialogId = this.getDialogId())\n\t{\n\t\treturn this.getDialogData().muteList.includes(this.getUserId());\n\t}\n\n\tisUnreadMessagesLoaded()\n\t{\n\t\tlet dialog = this.controller.getStore().state.dialogues.collection[this.getDialogId()];\n\t\tif (!dialog)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tif (dialog.lastMessageId <= 0)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tlet collection = this.controller.getStore().state.messages.collection[this.getChatId()];\n\t\tif (!collection || collection.length <= 0)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tlet lastElementId = 0;\n\t\tfor (let index = collection.length-1; index >= 0; index--)\n\t\t{\n\t\t\tlet lastElement = collection[index];\n\t\t\tif (typeof lastElement.id === \"number\")\n\t\t\t{\n\t\t\t\tlastElementId = lastElement.id;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn lastElementId >= dialog.lastMessageId;\n\t}\n\n\tprepareFilesBeforeSave(files)\n\t{\n\t\treturn this._prepareFilesBeforeSave(files);\n\t}\n\n\tsetPrepareFilesBeforeSaveFunction(func)\n\t{\n\t\tthis._prepareFilesBeforeSave = func.bind(this);\n\t}\n\n\tshowSmiles()\n\t{\n\t\tthis.store.dispatch('application/showSmiles');\n\t}\n\n\thideSmiles()\n\t{\n\t\tthis.store.dispatch('application/hideSmiles');\n\t}\n\n\tstartOpponentWriting(params)\n\t{\n\t\tlet {dialogId, userId, userName} = params;\n\n\t\tthis.controller.getStore().dispatch('dialogues/updateWriting', {\n\t\t\tdialogId,\n\t\t\tuserId,\n\t\t\tuserName,\n\t\t\taction : true\n\t\t});\n\n\t\tthis.timer.start('writingEnd', dialogId+'|'+userId, 35, (id, params) => {\n\t\t\tlet {dialogId, userId} = params;\n\t\t\tthis.controller.getStore().dispatch('dialogues/updateWriting', {\n\t\t\t\tdialogId,\n\t\t\t\tuserId,\n\t\t\t\taction: false\n\t\t\t});\n\t\t}, {dialogId, userId});\n\n\t\treturn true;\n\t}\n\n\tstopOpponentWriting(params = {})\n\t{\n\t\tlet {dialogId, userId, userName} = params;\n\n\t\tthis.timer.stop('writingStart', dialogId+'|'+userId, true);\n\t\tthis.timer.stop('writingEnd', dialogId+'|'+userId);\n\n\t\treturn true;\n\t}\n\n\tstartWriting(dialogId = this.getDialogId())\n\t{\n\t\tif (Utils.dialog.isEmptyDialogId(dialogId) || this.timer.has('writes', dialogId))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.timer.start('writes', dialogId, 28);\n\t\tthis.timer.start('writesSend', dialogId, 5, (id) => {\n\t\t\tthis.controller.restClient.callMethod(RestMethod.imDialogWriting, {\n\t\t\t\t'DIALOG_ID': dialogId\n\t\t\t}).catch(() => {\n\t\t\t\tthis.timer.stop('writes', dialogId);\n\t\t\t});\n\t\t});\n\t}\n\n\tstopWriting(dialogId = this.getDialogId())\n\t{\n\t\tthis.timer.stop('writes', dialogId, true);\n\t\tthis.timer.stop('writesSend', dialogId, true);\n\t}\n\n\tjoinParentChat(messageId, dialogId)\n\t{\n\t\treturn new Promise((resolve, reject) =>\n\t\t{\n\t\t\tif (!messageId || !dialogId)\n\t\t\t{\n\t\t\t\treturn reject();\n\t\t\t}\n\n\t\t\tif (typeof this.tempJoinChat === 'undefined')\n\t\t\t{\n\t\t\t\tthis.tempJoinChat = {};\n\t\t\t}\n\t\t\telse if (this.tempJoinChat['wait'])\n\t\t\t{\n\t\t\t\treturn reject();\n\t\t\t}\n\n\t\t\tthis.tempJoinChat['wait'] = true;\n\n\t\t\tthis.controller.restClient.callMethod(RestMethod.imChatParentJoin, {\n\t\t\t\t'DIALOG_ID': dialogId,\n\t\t\t\t'MESSAGE_ID': messageId\n\t\t\t}).then(() => {\n\t\t\t\tthis.tempJoinChat['wait'] = false;\n\t\t\t\tthis.tempJoinChat[dialogId] = true;\n\t\t\t\treturn resolve(dialogId);\n\t\t\t}).catch(() => {\n\t\t\t\tthis.tempJoinChat['wait'] = false;\n\t\t\t\treturn reject();\n\t\t\t});\n\t\t});\n\n\t};\n\n\tsetTextareaMessage(params)\n\t{\n\t\tlet {\n\t\t\tmessage = '',\n\t\t\tdialogId = this.getDialogId()\n\t\t} = params;\n\n\t\tthis.controller.getStore().dispatch('dialogues/update', {\n\t\t\tdialogId,\n\t\t\tfields: {\n\t\t\t\ttextareaMessage: message\n\t\t\t},\n\t\t});\n\t}\n\n\tsetSendingMessageFlag(messageId)\n\t{\n\t\tthis.controller.getStore().dispatch('messages/actionStart', {\n\t\t\tid: messageId,\n\t\t\tchatId: this.getChatId()\n\t\t});\n\t}\n\n\treactMessage(messageId, type = 'like', action = 'auto')\n\t{\n\t\tthis.controller.restClient.callMethod(RestMethod.imMessageLike, {\n\t\t\t'MESSAGE_ID': messageId,\n\t\t\t'ACTION': action === 'auto'? 'auto': (action === 'set'? 'plus': 'minus')\n\t\t});\n\t}\n\n\treadMessage(messageId = null, force = false, skipAjax = false)\n\t{\n\t\tlet chatId = this.getChatId();\n\n\t\tif (typeof this.messageLastReadId[chatId] === 'undefined')\n\t\t{\n\t\t\tthis.messageLastReadId[chatId] = null;\n\t\t}\n\t\tif (typeof this.messageReadQueue[chatId] === 'undefined')\n\t\t{\n\t\t\tthis.messageReadQueue[chatId] = [];\n\t\t}\n\n\t\tif (messageId)\n\t\t{\n\t\t\tthis.messageReadQueue[chatId].push(parseInt(messageId));\n\t\t}\n\n\t\tthis.timer.stop('readMessage', chatId, true);\n\t\tthis.timer.stop('readMessageServer', chatId, true);\n\n\t\tif (force)\n\t\t{\n\t\t\treturn this.readMessageExecute(chatId, skipAjax);\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.timer.start('readMessage', chatId, .1, (chatId, params) => this.readMessageExecute(chatId, skipAjax).then((result) => resolve(result)));\n\t\t});\n\t}\n\n\treadMessageExecute(chatId, skipAjax = false)\n\t{\n\t\treturn new Promise((resolve, reject) =>\n\t\t{\n\t\t\tif (this.messageReadQueue[chatId])\n\t\t\t{\n\t\t\t\tthis.messageReadQueue[chatId] = this.messageReadQueue[chatId].filter(elementId => {\n\t\t\t\t\tif (!this.messageLastReadId[chatId])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.messageLastReadId[chatId] = elementId;\n\t\t\t\t\t}\n\t\t\t\t\telse if (this.messageLastReadId[chatId] < elementId)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.messageLastReadId[chatId] = elementId;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlet dialogId = this.getDialogIdByChatId(chatId);\n\t\t\tlet lastId = this.messageLastReadId[chatId] || 0;\n\t\t\tif (lastId <= 0)\n\t\t\t{\n\t\t\t\tresolve({dialogId, lastId: 0});\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tthis.controller.getStore().dispatch('messages/readMessages', {\n\t\t\t\tchatId: chatId,\n\t\t\t\treadId: lastId\n\t\t\t}).then(result =>\n\t\t\t{\n\t\t\t\tthis.controller.getStore().dispatch('dialogues/decreaseCounter', {\n\t\t\t\t\tdialogId,\n\t\t\t\t\tcount: result.count\n\t\t\t\t});\n\n\t\t\t\tif (this.getChatId() === chatId && this.controller.getStore().getters['dialogues/canSaveChat'])\n\t\t\t\t{\n\t\t\t\t\tlet dialog = this.controller.getStore().getters['dialogues/get'](dialogId);\n\t\t\t\t\tif (dialog.counter <= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.controller.getStore().commit('application/clearDialogExtraCount');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (skipAjax)\n\t\t\t\t{\n\t\t\t\t\tresolve({dialogId, lastId});\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.timer.start('readMessageServer', chatId, .5, () => {\n\t\t\t\t\t\tthis.controller.restClient.callMethod(RestMethod.imDialogRead, {\n\t\t\t\t\t\t\t'DIALOG_ID': dialogId,\n\t\t\t\t\t\t\t'MESSAGE_ID': lastId\n\t\t\t\t\t\t}).then(() => resolve({dialogId, lastId})).catch(() => resolve({dialogId, lastId}));\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t}).catch(() => {\n\t\t\t\tresolve();\n\t\t\t});\n\t\t});\n\t}\n\n\tunreadMessage(messageId = null, skipAjax = false)\n\t{\n\t\tlet chatId = this.getChatId();\n\n\t\tif (typeof this.messageLastReadId[chatId] === 'undefined')\n\t\t{\n\t\t\tthis.messageLastReadId[chatId] = null;\n\t\t}\n\t\tif (typeof this.messageReadQueue[chatId] === 'undefined')\n\t\t{\n\t\t\tthis.messageReadQueue[chatId] = [];\n\t\t}\n\n\t\tif (messageId)\n\t\t{\n\t\t\tthis.messageReadQueue[chatId] = this.messageReadQueue[chatId].filter(id => id < messageId);\n\t\t}\n\n\t\tthis.timer.stop('readMessage', chatId, true);\n\t\tthis.timer.stop('readMessageServer', chatId, true);\n\n\t\tthis.messageLastReadId[chatId] = messageId;\n\n\t\tthis.controller.getStore().dispatch('messages/unreadMessages', {\n\t\t\tchatId: chatId,\n\t\t\tunreadId: this.messageLastReadId[chatId]\n\t\t}).then(result => {\n\n\t\t\tlet dialogId = this.getDialogIdByChatId(chatId);\n\n\t\t\tthis.controller.getStore().dispatch('dialogues/update', {\n\t\t\t\tdialogId,\n\t\t\t\tfields: {\n\t\t\t\t\tunreadId: messageId\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tthis.controller.getStore().dispatch('dialogues/increaseCounter', {\n\t\t\t\tdialogId,\n\t\t\t\tcount: result.count\n\t\t\t});\n\n\t\t\tif (!skipAjax)\n\t\t\t{\n\t\t\t\tthis.controller.restClient.callMethod(RestMethod.imDialogUnread, {\n\t\t\t\t\t'DIALOG_ID': dialogId,\n\t\t\t\t\t'MESSAGE_ID': this.messageLastReadId[chatId]\n\t\t\t\t});\n\t\t\t}\n\n\t\t}).catch(() => {});\n\t}\n\n\tshareMessage(messageId, type, date = null)\n\t{\n\t\tthis.controller.restClient.callMethod(RestMethod.imMessageShare, {\n\t\t\t'DIALOG_ID': this.getDialogId(),\n\t\t\t'MESSAGE_ID': messageId,\n\t\t\t'TYPE': type,\n\t\t});\n\n\t\treturn true;\n\t}\n\n\treplyToUser(userId, user)\n\t{\n\t\treturn true;\n\t}\n\n\topenMessageReactionList(messageId, values)\n\t{\n\t\treturn true;\n\t}\n\n\temit(eventName, ...args)\n\t{\n\t\tVue.event.$emit(eventName, ...args)\n\t}\n\n\tlisten(event, callback)\n\t{\n\t\tVue.event.$on(event, callback);\n\t}\n}","/**\n * Bitrix im\n * Core controller class\n *\n * @package bitrix\n * @subpackage mobile\n * @copyright 2001-2020 Bitrix\n */\n\nimport {PullClient, PULL as Pull} from \"pull.client\";\nimport {RestClient, rest as Rest} from \"rest.client\";\n\n// ui\nimport {BitrixVue} from \"ui.vue\";\nimport {VuexBuilder} from \"ui.vue.vuex\";\n\n// messenger files\nimport {ApplicationModel, MessagesModel, DialoguesModel, UsersModel, FilesModel, RecentModel, NotificationsModel} from 'im.model';\nimport {DeviceType, DeviceOrientation} from 'im.const';\nimport {Utils} from \"im.lib.utils\";\nimport {ImBasePullHandler} from \"im.provider.pull\";\nimport {CoreRestHandler} from \"im.provider.rest\";\nimport {ApplicationController} from \"./application\";\nimport {Logger} from \"im.lib.logger\";\n\nexport class Controller\n{\n\t/* region 01. Initialize and store data */\n\n\tconstructor(params = {})\n\t{\n\t\tthis.inited = false;\n\t\tthis.initPromise = new Promise((resolve, reject) => {\n\t\t\tthis.initPromiseResolver = resolve;\n\t\t});\n\n\t\tthis.offline = false;\n\n\t\tthis.restAnswerHandler = [];\n\t\tthis.vuexAdditionalModel = [];\n\n\t\tthis.store = null;\n\t\tthis.storeBuilder = null;\n\n\t\tthis.init()\n\t\t\t.then(() => this.prepareParams(params))\n\t\t\t.then(() => this.initController())\n\t\t\t.then(() => this.initLocalStorage())\n\t\t\t.then(() => this.initStorage())\n\t\t\t.then(() => this.initRestClient())\n\t\t\t.then(() => this.initPullClient())\n\t\t\t.then(() => this.initEnvironment())\n\t\t\t.then(() => this.initComplete())\n\t\t\t.catch(error => {\n\t\t\t\tLogger.error('error initializing core controller', error);\n\t\t\t})\n\t\t;\n\t}\n\n\tinit()\n\t{\n\t\treturn Promise.resolve();\n\t}\n\n\tprepareParams(params)\n\t{\n\t\tif (typeof params.localize !== 'undefined')\n\t\t{\n\t\t\tthis.localize = params.localize;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (typeof BX !== 'undefined')\n\t\t\t{\n\t\t\t\tthis.localize = {...BX.message};\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.localize = {};\n\t\t\t}\n\t\t}\n\n\t\tif (typeof params.host !== 'undefined')\n\t\t{\n\t\t\tthis.host = params.host;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.host = location.origin;\n\t\t}\n\n\t\tif (typeof params.userId !== 'undefined')\n\t\t{\n\t\t\tconst parsedUserId = parseInt(params.userId);\n\t\t\tif (!isNaN(parsedUserId))\n\t\t\t{\n\t\t\t\tthis.userId = parsedUserId;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.userId = 0;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tlet userId = this.getLocalize('USER_ID');\n\t\t\tthis.userId = userId? parseInt(userId): 0;\n\t\t}\n\n\t\tif (typeof params.siteId !== 'undefined')\n\t\t{\n\t\t\tif (typeof params.siteId === 'string' && params.siteId !== '')\n\t\t\t{\n\t\t\t\tthis.siteId = params.siteId;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.siteId = 's1';\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.siteId = this.getLocalize('SITE_ID') || 's1';\n\t\t}\n\n\t\tif (typeof params.siteDir !== 'undefined')\n\t\t{\n\t\t\tif (typeof params.siteDir === 'string' && params.siteDir !== '')\n\t\t\t{\n\t\t\t\tthis.siteDir = params.siteDir;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.siteDir = 's1';\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.siteDir = this.getLocalize('SITE_DIR') || 's1';\n\t\t}\n\n\t\tif (typeof params.languageId !== 'undefined')\n\t\t{\n\t\t\tif (typeof params.languageId === 'string' && params.languageId !== '')\n\t\t\t{\n\t\t\t\tthis.languageId = params.languageId;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.languageId = 'en';\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.languageId = this.getLocalize('LANGUAGE_ID') || 'en';\n\t\t}\n\n\t\tthis.pullInstance = PullClient;\n\t\tthis.pullClient = Pull;\n\n\t\tif (typeof params.pull !== 'undefined')\n\t\t{\n\t\t\tif (typeof params.pull.instance !== 'undefined')\n\t\t\t{\n\t\t\t\tthis.pullInstance = params.pull.instance;\n\t\t\t}\n\t\t\tif (typeof params.pull.client !== 'undefined')\n\t\t\t{\n\t\t\t\tthis.pullClient = params.pull.client;\n\t\t\t}\n\t\t}\n\n\n\t\tthis.restInstance = RestClient;\n\t\tthis.restClient = Rest;\n\n\t\tif (typeof params.rest !== 'undefined')\n\t\t{\n\t\t\tif (typeof params.rest.instance !== 'undefined')\n\t\t\t{\n\t\t\t\tthis.restInstance = params.rest.instance;\n\t\t\t}\n\t\t\tif (typeof params.rest.client !== 'undefined')\n\t\t\t{\n\t\t\t\tthis.restClient = params.rest.client;\n\t\t\t}\n\t\t}\n\n\n\t\tthis.vuexBuilder = {\n\t\t\tdatabase: false,\n\t\t\tdatabaseName: 'desktop/im',\n\t\t\tdatabaseType: VuexBuilder.DatabaseType.indexedDb\n\t\t};\n\n\t\tif (typeof params.vuexBuilder !== 'undefined')\n\t\t{\n\t\t\tif (typeof params.vuexBuilder.database !== 'undefined')\n\t\t\t{\n\t\t\t\tthis.vuexBuilder.database = params.vuexBuilder.database;\n\t\t\t}\n\t\t\tif (typeof params.vuexBuilder.databaseName !== 'undefined')\n\t\t\t{\n\t\t\t\tthis.vuexBuilder.databaseName = params.vuexBuilder.databaseName;\n\t\t\t}\n\t\t\tif (typeof params.vuexBuilder.databaseType !== 'undefined')\n\t\t\t{\n\t\t\t\tthis.vuexBuilder.databaseType = params.vuexBuilder.databaseType;\n\t\t\t}\n\t\t\tif (typeof params.vuexBuilder.models !== 'undefined')\n\t\t\t{\n\t\t\t\tparams.vuexBuilder.models.forEach(model => {\n\t\t\t\t\tthis.addVuexModel(model);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn Promise.resolve();\n\t}\n\n\tinitController()\n\t{\n\t\tthis.application = new ApplicationController();\n\t\tthis.application.setCoreController(this);\n\n\t\treturn new Promise((resolve, reject) => resolve());\n\t}\n\n\tinitLocalStorage()\n\t{\n\t\treturn new Promise((resolve, reject) => resolve());\n\t}\n\n\tinitStorage()\n\t{\n\t\tlet applicationVariables = {\n\t\t\tcommon: {\n\t\t\t\thost: this.getHost(),\n\t\t\t\tuserId: this.getUserId(),\n\t\t\t\tsiteId: this.getSiteId(),\n\t\t\t\tlanguageId: this.getLanguageId(),\n\t\t\t},\n\t\t\tdialog: {\n\t\t\t\tmessageLimit: this.application.getDefaultMessageLimit(),\n\t\t\t\tenableReadMessages: true,\n\t\t\t},\n\t\t\tdevice: {\n\t\t\t\ttype: Utils.device.isMobile()? DeviceType.mobile: DeviceType.desktop,\n\t\t\t\torientation: Utils.device.getOrientation(),\n\t\t\t},\n\t\t};\n\n\t\tlet builder = new VuexBuilder()\n\t\t\t.addModel(ApplicationModel.create().useDatabase(false).setVariables(applicationVariables))\n\t\t\t.addModel(MessagesModel.create().useDatabase(this.vuexBuilder.database).setVariables({host: this.getHost()}))\n\t\t\t.addModel(DialoguesModel.create().useDatabase(this.vuexBuilder.database).setVariables({host: this.getHost()}))\n\t\t\t.addModel(FilesModel.create().useDatabase(this.vuexBuilder.database).setVariables({host: this.getHost(), default: {name: 'File is deleted'}}))\n\t\t\t.addModel(UsersModel.create().useDatabase(this.vuexBuilder.database).setVariables({host: this.getHost(), default: {name: 'Anonymous'}}))\n\t\t\t.addModel(RecentModel.create().useDatabase(false).setVariables({host: this.getHost()}))\n\t\t\t.addModel(NotificationsModel.create().useDatabase(false).setVariables({host: this.getHost()}))\n\t\t;\n\n\t\tthis.vuexAdditionalModel.forEach(model => {\n\t\t\tbuilder.addModel(model);\n\t\t});\n\n\t\tbuilder.setDatabaseConfig({\n\t\t\tname: this.vuexBuilder.databaseName,\n\t\t\ttype: this.vuexBuilder.databaseType,\n\t\t\tsiteId: this.getSiteId(),\n\t\t\tuserId: this.getUserId(),\n\t\t});\n\n\t\treturn builder.build().then(result => {\n\t\t\tthis.store = result.store;\n\t\t\tthis.storeBuilder = result.builder;\n\t\t\treturn new Promise((resolve, reject) => resolve());\n\t\t})\n\t}\n\n\tinitRestClient(result)\n\t{\n\t\tthis.addRestAnswerHandler(\n\t\t\tCoreRestHandler.create({\n\t\t\t\tstore: this.store,\n\t\t\t\tcontroller: this,\n\t\t\t})\n\t\t);\n\n\t\treturn new Promise((resolve, reject) => resolve());\n\t}\n\n\tinitPullClient()\n\t{\n\t\tif (!this.pullClient)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.pullClient.subscribe(\n\t\t\tthis.pullBaseHandler = new ImBasePullHandler({\n\t\t\t\tstore: this.store,\n\t\t\t\tcontroller: this,\n\t\t\t})\n\t\t);\n\n\t\tthis.pullClient.subscribe({\n\t\t\ttype: this.pullInstance.SubscriptionType.Status,\n\t\t\tcallback: this.eventStatusInteraction.bind(this)\n\t\t});\n\n\t\tthis.pullClient.subscribe({\n\t\t\ttype: this.pullInstance.SubscriptionType.Online,\n\t\t\tcallback: this.eventOnlineInteraction.bind(this)\n\t\t});\n\n\t\treturn new Promise((resolve, reject) => resolve());\n\t}\n\n\tinitEnvironment(result)\n\t{\n\t\twindow.addEventListener('orientationchange', () =>\n\t\t{\n\t\t\tif (!this.store)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.store.commit('application/set', {device: {\n\t\t\t\torientation: Utils.device.getOrientation()\n\t\t\t}});\n\n\t\t\tif (\n\t\t\t\tthis.store.state.application.device.type === DeviceType.mobile\n\t\t\t\t&& this.store.state.application.device.orientation === DeviceOrientation.horizontal\n\t\t\t)\n\t\t\t{\n\t\t\t\tdocument.activeElement.blur();\n\t\t\t}\n\t\t});\n\n\t\treturn new Promise((resolve, reject) => resolve());\n\t}\n\n\tinitComplete()\n\t{\n\t\tthis.inited = true;\n\t\tthis.initPromiseResolver(this);\n\t}\n\n/* endregion 01. Initialize and store data */\n\n/* region 02. Push & Pull */\n\n\teventStatusInteraction(data)\n\t{\n\t\tif (data.status === this.pullInstance.PullStatus.Online)\n\t\t{\n\t\t\tthis.offline = false;\n\n\t\t\t//this.pullBaseHandler.option.skip = true;\n\t\t\t// this.getDialogUnread().then(() => {\n\t\t\t// \tthis.pullBaseHandler.option.skip = false;\n\t\t\t// \tthis.processSendMessages();\n\t\t\t// \tthis.emit(EventType.dialog.sendReadMessages);\n\t\t\t// }).catch(() => {\n\t\t\t// \tthis.pullBaseHandler.option.skip = false;\n\t\t\t// \tthis.processSendMessages();\n\t\t\t// });\n\t\t}\n\t\telse if (data.status === this.pullInstance.PullStatus.Offline)\n\t\t{\n\t\t\tthis.offline = true;\n\t\t}\n\t}\n\n\teventOnlineInteraction(data)\n\t{\n\t\tif (data.command === 'list' || data.command === 'userStatus')\n\t\t{\n\t\t\tfor (let userId in data.params.users)\n\t\t\t{\n\t\t\t\tif (!data.params.users.hasOwnProperty(userId))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tthis.store.dispatch('users/update', {\n\t\t\t\t\tid: data.params.users[userId].id,\n\t\t\t\t\tfields: data.params.users[userId]\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n/* endregion 02. Push & Pull */\n\n/* region 03. Rest */\n\n\texecuteRestAnswer(command, result, extra)\n\t{\n\t\tLogger.warn('Core.controller.executeRestAnswer', command, result, extra);\n\n\t\tthis.restAnswerHandler.forEach(handler => {\n\t\t\thandler.execute(command, result, extra);\n\t\t});\n\t}\n\n/* endregion 03. Rest */\n\n/* region 04. Template engine */\n\n\tcreateVue(application, config = {})\n\t{\n\t\tconst controller = this;\n\n\t\tlet beforeCreateFunction = () => {};\n\t\tif (config.beforeCreate)\n\t\t{\n\t\t\tbeforeCreateFunction = config.beforeCreate;\n\t\t}\n\n\t\tlet destroyedFunction = () => {};\n\t\tif (config.destroyed)\n\t\t{\n\t\t\tdestroyedFunction = config.destroyed;\n\t\t}\n\n\t\tlet createdFunction = () => {};\n\t\tif (config.created)\n\t\t{\n\t\t\tcreatedFunction = config.created;\n\t\t}\n\n\t\tlet initConfig = {\n\t\t\tstore: this.store,\n\t\t\tbeforeCreate()\n\t\t\t{\n\t\t\t\tthis.$bitrix.Data.set('controller', controller);\n\n\t\t\t\tthis.$bitrix.Application.set(application);\n\t\t\t\tthis.$bitrix.Loc.setMessage(controller.localize);\n\n\t\t\t\tif (controller.restClient)\n\t\t\t\t{\n\t\t\t\t\tthis.$bitrix.RestClient.set(controller.restClient);\n\t\t\t\t}\n\t\t\t\tif (controller.pullClient)\n\t\t\t\t{\n\t\t\t\t\tthis.$bitrix.PullClient.set(controller.pullClient);\n\t\t\t\t}\n\n\t\t\t\tbeforeCreateFunction.bind(this)();\n\t\t\t},\n\t\t\tcreated()\n\t\t\t{\n\t\t\t\tcreatedFunction.bind(this)();\n\t\t\t},\n\t\t\tdestroyed()\n\t\t\t{\n\t\t\t\tdestroyedFunction.bind(this)();\n\t\t\t}\n\t\t};\n\n\t\tif (config.el)\n\t\t{\n\t\t\tinitConfig.el = config.el;\n\t\t}\n\n\t\tif (config.template)\n\t\t{\n\t\t\tinitConfig.template = config.template;\n\t\t}\n\n\t\tif (config.computed)\n\t\t{\n\t\t\tinitConfig.computed = config.computed;\n\t\t}\n\n\t\tif (config.data)\n\t\t{\n\t\t\tinitConfig.data = config.data;\n\t\t}\n\n\t\tconst initConfigCreatedFunction = initConfig.created;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tinitConfig.created = function() {\n\t\t\t\tinitConfigCreatedFunction.bind(this)();\n\t\t\t\tresolve(this);\n\t\t\t};\n\t\t\tBitrixVue.createApp(initConfig);\n\t\t});\n\t}\n\n/* endregion 04. Template engine */\n\n/* region 05. Core methods */\n\tgetHost()\n\t{\n\t\treturn this.host;\n\t}\n\n\tsetHost(host)\n\t{\n\t\tthis.host = host;\n\n\t\tthis.store.commit('application/set', {\n\t\t\tcommon: {host},\n\t\t});\n\t}\n\n\tgetUserId()\n\t{\n\t\treturn this.userId;\n\t}\n\n\tsetUserId(userId)\n\t{\n\t\tconst parsedUserId = parseInt(userId);\n\t\tif (!isNaN(parsedUserId))\n\t\t{\n\t\t\tthis.userId = parsedUserId;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.userId = 0;\n\t\t}\n\n\t\tthis.store.commit('application/set', {\n\t\t\tcommon: {userId},\n\t\t});\n\t}\n\n\tgetSiteId()\n\t{\n\t\treturn this.siteId;\n\t}\n\n\tsetSiteId(siteId)\n\t{\n\t\tif (typeof siteId === 'string' && siteId !== '')\n\t\t{\n\t\t\tthis.siteId = siteId;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.siteId = 's1';\n\t\t}\n\n\t\tthis.store.commit('application/set', {\n\t\t\tcommon: {siteId: this.siteId},\n\t\t});\n\t}\n\n\tgetLanguageId()\n\t{\n\t\treturn this.languageId;\n\t}\n\n\tsetLanguageId(languageId)\n\t{\n\t\tif (typeof languageId === 'string' && languageId !== '')\n\t\t{\n\t\t\tthis.languageId = languageId;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.languageId = 'en';\n\t\t}\n\n\t\tthis.store.commit('application/set', {\n\t\t\tcommon: {languageId: this.languageId},\n\t\t});\n\t}\n\n\tgetStore()\n\t{\n\t\treturn this.store;\n\t}\n\n\tgetStoreBuilder()\n\t{\n\t\treturn this.storeBuilder;\n\t}\n\n\taddRestAnswerHandler(handler)\n\t{\n\t\tthis.restAnswerHandler.push(handler);\n\t}\n\n\taddVuexModel(model)\n\t{\n\t\tthis.vuexAdditionalModel.push(model);\n\t}\n\n\tisOnline()\n\t{\n\t\treturn !this.offline;\n\t}\n\n\tready()\n\t{\n\t\tif (this.inited)\n\t\t{\n\t\t\treturn Promise.resolve(this);\n\t\t}\n\n\t\treturn this.initPromise;\n\t}\n\n/* endregion 05. Methods */\n\n/* region 06. Interaction and utils */\n\n\tsetError(code = '', description = '')\n\t{\n\t\tLogger.error(`Messenger.Application.error: ${code} (${description})`);\n\n\t\tlet localizeDescription = '';\n\t\tif (code.endsWith('LOCALIZED'))\n\t\t{\n\t\t\tlocalizeDescription = description;\n\t\t}\n\n\t\tthis.store.commit('application/set', {error: {\n\t\t\tactive: true,\n\t\t\tcode,\n\t\t\tdescription: localizeDescription\n\t\t}});\n\t}\n\n\tclearError()\n\t{\n\t\tthis.store.commit('application/set', {error: {\n\t\t\tactive: false,\n\t\t\tcode: '',\n\t\t\tdescription: ''}\n\t\t});\n\t}\n\n\taddLocalize(phrases)\n\t{\n\t\tif (typeof phrases !== \"object\" || !phrases)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (let name in phrases)\n\t\t{\n\t\t\tif (phrases.hasOwnProperty(name))\n\t\t\t{\n\t\t\t\tthis.localize[name] = phrases[name];\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tgetLocalize(name)\n\t{\n\t\tlet phrase = '';\n\t\tif (typeof name === 'undefined')\n\t\t{\n\t\t\treturn this.localize;\n\t\t}\n\t\telse if (typeof this.localize[name.toString()] === 'undefined')\n\t\t{\n\t\t\tLogger.warn(`Controller.Core.getLocalize: message with code '${name.toString()}' is undefined.`);\n\t\t\t//Logger.trace();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tphrase = this.localize[name];\n\t\t}\n\n\t\treturn phrase;\n\t}\n\n/* endregion 06. Interaction and utils */\n}\n"],"names":["ApplicationController","controller","timer","Timer","_prepareFilesBeforeSave","params","defaultMessageLimit","requestMessageLimit","getDefaultMessageLimit","messageLastReadId","messageReadQueue","getStore","state","application","common","siteId","userId","languageId","getters","dialog","chatId","dialogId","getDialogId","dialogues","collection","result","enabled","entityType","DialogCrmType","none","entityId","dialogData","getDialogData","type","DialogType","call","entityData1","split","toString","toLowerCase","crm","diskFolderId","action","Utils","isEmptyDialogId","isDialogMuted","start","id","restClient","callMethod","RestMethod","imChatMute","muteList","push","getUserId","filter","dispatch","fields","includes","lastMessageId","messages","getChatId","length","lastElementId","index","lastElement","files","func","bind","store","userName","stop","has","imDialogWriting","messageId","Promise","resolve","reject","tempJoinChat","imChatParentJoin","then","message","textareaMessage","imMessageLike","force","skipAjax","parseInt","readMessageExecute","elementId","getDialogIdByChatId","lastId","readId","count","counter","commit","imDialogRead","unreadId","imDialogUnread","imMessageShare","user","values","eventName","args","Vue","event","$emit","callback","$on","Controller","inited","initPromise","initPromiseResolver","offline","restAnswerHandler","vuexAdditionalModel","storeBuilder","init","prepareParams","initController","initLocalStorage","initStorage","initRestClient","initPullClient","initEnvironment","initComplete","error","Logger","localize","BX","host","location","origin","parsedUserId","isNaN","getLocalize","siteDir","pullInstance","PullClient","pullClient","Pull","pull","instance","client","restInstance","RestClient","Rest","rest","vuexBuilder","database","databaseName","databaseType","VuexBuilder","DatabaseType","indexedDb","models","forEach","model","addVuexModel","setCoreController","applicationVariables","getHost","getSiteId","getLanguageId","messageLimit","enableReadMessages","device","isMobile","DeviceType","mobile","desktop","orientation","getOrientation","builder","addModel","ApplicationModel","create","useDatabase","setVariables","MessagesModel","DialoguesModel","FilesModel","name","UsersModel","RecentModel","NotificationsModel","setDatabaseConfig","build","addRestAnswerHandler","CoreRestHandler","subscribe","pullBaseHandler","ImBasePullHandler","SubscriptionType","Status","eventStatusInteraction","Online","eventOnlineInteraction","window","addEventListener","DeviceOrientation","horizontal","document","activeElement","blur","data","status","PullStatus","Offline","command","users","hasOwnProperty","extra","warn","handler","execute","config","beforeCreateFunction","beforeCreate","destroyedFunction","destroyed","createdFunction","created","initConfig","$bitrix","Data","set","Application","Loc","setMessage","el","template","computed","initConfigCreatedFunction","BitrixVue","createApp","code","description","localizeDescription","endsWith","active","phrases","phrase"],"mappings":"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"}