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/event-handler/dist/ |
Upload File : |
{"version":3,"file":"event-handler.bundle.js","sources":["../src/send-message-handler.js","../src/reading-handler.js","../src/reaction-handler.js","../src/quote-handler.js","../src/textarea-handler.js","../src/textarea-upload-handler.js","../src/textarea-drag-handler.js","../src/dialog-action-handler.js","../src/registry.js"],"sourcesContent":["import { EventEmitter } from 'main.core.events';\nimport { EventType, RestMethod, RestMethod as ImRestMethod, RestMethodHandler } from 'im.const';\nimport { Logger } from 'im.lib.logger';\nimport { Utils } from 'im.lib.utils';\nimport { Clipboard } from \"im.lib.clipboard\";\n\nexport class SendMessageHandler\n{\n\tmessagesToSend: Array<Object> = [];\n\tstore: Object = null;\n\trestClient: Object = null;\n\tloc: Object = null;\n\n\tconstructor($Bitrix)\n\t{\n\t\tthis.controller = $Bitrix.Data.get('controller');\n\t\tthis.store = this.controller.store;\n\t\tthis.restClient = $Bitrix.RestClient.get();\n\t\tthis.loc = $Bitrix.Loc.messages;\n\n\t\tthis.onSendMessageHandler = this.onSendMessage.bind(this);\n\t\tthis.onClickOnMessageRetryHandler = this.onClickOnMessageRetry.bind(this);\n\t\tthis.onClickOnCommandHandler = this.onClickOnCommand.bind(this);\n\t\tthis.onClickOnKeyboardHandler = this.onClickOnKeyboard.bind(this);\n\n\t\tEventEmitter.subscribe(EventType.textarea.sendMessage, this.onSendMessageHandler);\n\t\tEventEmitter.subscribe(EventType.dialog.clickOnMessageRetry, this.onClickOnMessageRetryHandler);\n\t\tEventEmitter.subscribe(EventType.dialog.clickOnCommand, this.onClickOnCommandHandler);\n\t\tEventEmitter.subscribe(EventType.dialog.clickOnKeyboardButton, this.onClickOnKeyboardHandler);\n\t}\n\n\tonSendMessage({data})\n\t{\n\t\tif (!data.text && !data.file)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.sendMessage(data.text, data.file);\n\t}\n\t//endregion events\n\n\t// entry point for sending message\n\tsendMessage(text = '', file = null)\n\t{\n\t\tif (!text && !file)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\t// quote handling\n\t\tconst quoteId = this.store.getters['dialogues/getQuoteId'](this.getDialogId());\n\t\tif (quoteId)\n\t\t{\n\t\t\tconst quoteMessage = this.store.getters['messages/getMessage'](this.getChatId(), quoteId);\n\t\t\tif (quoteMessage)\n\t\t\t{\n\t\t\t\ttext = this.getMessageTextWithQuote(quoteMessage, text);\n\t\t\t\tEventEmitter.emit(EventType.dialog.quotePanelClose);\n\t\t\t}\n\t\t}\n\n\t\tif (!this.controller.application.isUnreadMessagesLoaded())\n\t\t{\n\t\t\t// not all messages are loaded, adding message only on server\n\t\t\tthis.sendMessageToServer({\n\t\t\t\tid: 0,\n\t\t\t\tchatId: this.getChatId(),\n\t\t\t\tdialogId: this.getDialogId(),\n\t\t\t\ttext,\n\t\t\t\tfile\n\t\t\t});\n\n\t\t\tthis.processQueue();\n\n\t\t\treturn true;\n\t\t}\n\n\t\tconst params = {};\n\t\tif (file)\n\t\t{\n\t\t\tparams.FILE_ID = [file.id];\n\t\t}\n\n\t\tthis.addMessageToModel({\n\t\t\ttext,\n\t\t\tparams,\n\t\t\tsending: !file\n\t\t}).then(messageId => {\n\t\t\tEventEmitter.emit(EventType.dialog.scrollToBottom, {\n\t\t\t\tchatId: this.getChatId(),\n\t\t\t\tcancelIfScrollChange: true\n\t\t\t});\n\n\t\t\tthis.addMessageToQueue({messageId, text, file});\n\t\t\tthis.processQueue();\n\t\t});\n\t}\n\n\t/**\n\t * Goes through messages queue:\n\t * - For messages with file sends event to uploader\n\t * - For common messages sends them to server\n\t */\n\tprocessQueue()\n\t{\n\t\tthis.messagesToSend.filter(element => !element.sending).forEach(element => {\n\t\t\tthis.deleteFromQueue(element.id);\n\t\t\telement.sending = true;\n\t\t\tif (element.file)\n\t\t\t{\n\t\t\t\tEventEmitter.emit(EventType.textarea.stopWriting);\n\t\t\t\tEventEmitter.emit(EventType.uploader.addMessageWithFile, element);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.sendMessageToServer(element);\n\t\t\t}\n\t\t});\n\t}\n\n\taddMessageToModel({text, params, sending}): Promise\n\t{\n\t\treturn this.store.dispatch('messages/add', {\n\t\t\tchatId: this.getChatId(),\n\t\t\tauthorId: this.getUserId(),\n\t\t\ttext,\n\t\t\tparams,\n\t\t\tsending\n\t\t});\n\t}\n\n\taddMessageToQueue({messageId, text, file})\n\t{\n\t\tthis.messagesToSend.push({\n\t\t\tid: messageId,\n\t\t\tchatId: this.getChatId(),\n\t\t\tdialogId: this.getDialogId(),\n\t\t\ttext,\n\t\t\tfile,\n\t\t\tsending: false\n\t\t});\n\t}\n\n\tsendMessageToServer(element)\n\t{\n\t\tEventEmitter.emit(EventType.textarea.stopWriting);\n\n\t\tthis.restClient.callMethod(ImRestMethod.imMessageAdd, {\n\t\t\t'TEMPLATE_ID': element.id,\n\t\t\t'DIALOG_ID': element.dialogId,\n\t\t\t'MESSAGE': element.text\n\t\t}, null, null).then(response => {\n\t\t\tthis.controller.executeRestAnswer(RestMethodHandler.imMessageAdd, response, element);\n\t\t}).catch(error => {\n\t\t\tthis.controller.executeRestAnswer(RestMethodHandler.imMessageAdd, error, element);\n\t\t\tLogger.warn('SendMessageHandler: error during adding message', error);\n\t\t});\n\t}\n\n\tonClickOnMessageRetry({data: event})\n\t{\n\t\tthis.retrySendMessage(event.message);\n\t}\n\n\tretrySendMessage(message)\n\t{\n\t\tthis.addMessageToQueue({messageId: message.id, text: message.text, file: null});\n\t\tthis.setSendingMessageFlag(message.id);\n\t\tthis.processQueue();\n\t}\n\n\tsetSendingMessageFlag(messageId)\n\t{\n\t\tthis.store.dispatch('messages/actionStart', {\n\t\t\tid: messageId,\n\t\t\tchatId: this.getChatId()\n\t\t});\n\t}\n\n\tdeleteFromQueue(messageId)\n\t{\n\t\tthis.messagesToSend = this.messagesToSend.filter(element => element.id !== messageId);\n\t}\n\n\tonClickOnCommand({data: event})\n\t{\n\t\tif (event.type === 'put')\n\t\t{\n\t\t\tthis.handlePutAction(event.value);\n\t\t}\n\t\telse if (event.type === 'send')\n\t\t{\n\t\t\tthis.handleSendAction(event.value);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tLogger.warn('SendMessageHandler: Unprocessed command', event);\n\t\t}\n\t}\n\n\tonClickOnKeyboard({data: event})\n\t{\n\t\tif (event.action === 'ACTION')\n\t\t{\n\t\t\tconst {action, value} = event.params;\n\t\t\tthis.handleKeyboardAction(action, value);\n\t\t}\n\n\t\tif (event.action === 'COMMAND')\n\t\t{\n\t\t\tconst {dialogId, messageId, botId, command, params} = event.params;\n\n\t\t\tthis.restClient.callMethod(RestMethod.imMessageCommand, {\n\t\t\t\t'MESSAGE_ID': messageId,\n\t\t\t\t'DIALOG_ID': dialogId,\n\t\t\t\t'BOT_ID': botId,\n\t\t\t\t'COMMAND': command,\n\t\t\t\t'COMMAND_PARAMS': params,\n\t\t\t}).catch(error => console.error('SendMessageHandler: command processing error', error));\n\t\t}\n\t}\n\n\thandleKeyboardAction(action, value)\n\t{\n\t\tswitch (action)\n\t\t{\n\t\t\tcase 'SEND':\n\t\t\t{\n\t\t\t\tthis.handleSendAction(value);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'PUT':\n\t\t\t{\n\t\t\t\tthis.handlePutAction(value);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'CALL':\n\t\t\t{\n\t\t\t\t//this.openPhoneMenu(value);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'COPY':\n\t\t\t{\n\t\t\t\tClipboard.copy(value);\n\t\t\t\tBX.UI.Notification.Center.notify({\n\t\t\t\t\tcontent: this.loc['IM_DIALOG_CLIPBOARD_COPY_SUCCESS'],\n\t\t\t\t\tautoHideDelay: 4000\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'DIALOG':\n\t\t\t{\n\t\t\t\t//this.openDialog(value);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t{\n\t\t\t\tconsole.error('SendMessageHandler: unknown keyboard action');\n\t\t\t}\n\t\t}\n\t}\n\n\thandlePutAction(text)\n\t{\n\t\tEventEmitter.emit(EventType.textarea.insertText, { text: `${text} ` });\n\t}\n\n\thandleSendAction(text)\n\t{\n\t\tthis.sendMessage(text);\n\t\tsetTimeout(\n\t\t\t() => {\n\t\t\t\tEventEmitter.emit(EventType.dialog.scrollToBottom, {\n\t\t\t\t\tchatId: this.getChatId(),\n\t\t\t\t\tduration: 300,\n\t\t\t\t\tcancelIfScrollChange: false\n\t\t\t\t});\n\t\t\t},\n\t\t\t300);\n\t}\n\n\t// region helpers\n\tgetMessageTextWithQuote(quoteMessage, text): string\n\t{\n\t\tlet user = null;\n\t\tif (quoteMessage.authorId)\n\t\t{\n\t\t\tuser = this.store.getters['users/get'](quoteMessage.authorId);\n\t\t}\n\n\t\tconst files = this.store.getters['files/getList'](this.getChatId());\n\n\t\tconst quoteDelimiter = '-'.repeat(54);\n\t\tconst quoteTitle = (user && user.name) ? user.name: this.loc['IM_QUOTE_PANEL_DEFAULT_TITLE'];\n\t\tconst quoteDate = Utils.date.format(quoteMessage.date, null, this.loc);\n\t\tconst quoteContent = Utils.text.quote(quoteMessage.text, quoteMessage.params, files, this.loc);\n\n\t\tconst message = [];\n\t\tmessage.push(quoteDelimiter);\n\t\tmessage.push(`${quoteTitle} [${quoteDate}]`);\n\t\tmessage.push(quoteContent);\n\t\tmessage.push(quoteDelimiter);\n\t\tmessage.push(text);\n\n\t\treturn message.join(\"\\n\");\n\t}\n\n\tgetChatId(): number\n\t{\n\t\treturn this.store.state.application.dialog.chatId;\n\t}\n\n\tgetDialogId(): number | string\n\t{\n\t\treturn this.store.state.application.dialog.dialogId;\n\t}\n\n\tgetUserId(): number\n\t{\n\t\treturn this.store.state.application.common.userId;\n\t}\n\t// endregion helpers\n\n\tdestroy()\n\t{\n\t\tEventEmitter.unsubscribe(EventType.textarea.sendMessage, this.onSendMessageHandler);\n\t\tEventEmitter.unsubscribe(EventType.dialog.clickOnMessageRetry, this.onClickOnMessageRetryHandler);\n\t\tEventEmitter.unsubscribe(EventType.dialog.clickOnCommand, this.onClickOnCommandHandler);\n\t\tEventEmitter.unsubscribe(EventType.dialog.clickOnKeyboardButton, this.onClickOnKeyboardHandler);\n\t}\n}","import {Timer} from \"im.lib.timer\";\nimport {Logger} from \"im.lib.logger\";\nimport {EventType, RestMethod} from \"im.const\";\nimport {EventEmitter} from \"main.core.events\";\n\nexport class ReadingHandler\n{\n\tmessagesToRead: Object = {}; // {<chatId>: [<messageId>]}\n\ttimer: Timer = null;\n\tstore: Object = null;\n\trestClient: Object = null;\n\n\tconstructor($Bitrix)\n\t{\n\t\tthis.store = $Bitrix.Data.get('controller').store;\n\t\tthis.restClient = $Bitrix.RestClient.get();\n\t\tthis.timer = new Timer();\n\n\t\tthis.onReadMessageHandler = this.onReadMessage.bind(this);\n\t\tEventEmitter.subscribe(EventType.dialog.readMessage, this.onReadMessageHandler);\n\t}\n\n\tonReadMessage({data: {id = null, skipTimer = false, skipAjax = false}}): Promise\n\t{\n\t\treturn this.readMessage(id, skipTimer, skipAjax);\n\t}\n\n\treadMessage(messageId, skipTimer = false, skipAjax = false): Promise\n\t{\n\t\tconst chatId = this.getChatId();\n\t\tif (messageId)\n\t\t{\n\t\t\tif (!this.messagesToRead[chatId])\n\t\t\t{\n\t\t\t\tthis.messagesToRead[chatId] = [];\n\t\t\t}\n\t\t\tthis.messagesToRead[chatId].push(Number.parseInt(messageId, 10));\n\t\t}\n\n\t\tthis.timer.stop('readMessage', chatId, true);\n\t\tthis.timer.stop('readMessageServer', chatId, true);\n\n\t\tif (skipTimer)\n\t\t{\n\t\t\treturn this.processMessagesToRead(chatId, skipAjax);\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.timer.start('readMessage', chatId, 0.1, () => {\n\t\t\t\tthis.processMessagesToRead(chatId, skipAjax).then(result => resolve(result)).catch(reject);\n\t\t\t});\n\t\t});\n\t}\n\n\tprocessMessagesToRead(chatId, skipAjax = false): Promise\n\t{\n\t\tconst lastMessageToRead = this.getMaxMessageIdFromQueue(chatId);\n\t\tdelete this.messagesToRead[chatId];\n\t\tif (lastMessageToRead <= 0)\n\t\t{\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.readMessageOnClient(chatId, lastMessageToRead).then(readResult => {\n\t\t\t\treturn this.decreaseChatCounter(chatId, readResult.count);\n\t\t\t}).then(() => {\n\t\t\t\tif (skipAjax)\n\t\t\t\t{\n\t\t\t\t\treturn resolve({chatId, lastId: lastMessageToRead});\n\t\t\t\t}\n\n\t\t\t\tthis.timer.start('readMessageServer', chatId, 0.5, () => {\n\t\t\t\t\tthis.readMessageOnServer(chatId, lastMessageToRead).then(() => {\n\t\t\t\t\t\tresolve({chatId, lastId: lastMessageToRead});\n\t\t\t\t\t}).catch(reject);\n\t\t\t\t});\n\t\t\t}).catch(error => {\n\t\t\t\tLogger.error('Reading messages error', error);\n\t\t\t\treject();\n\t\t\t});\n\t\t});\n\t}\n\n\tgetMaxMessageIdFromQueue(chatId): number\n\t{\n\t\tlet maxMessageId = 0;\n\t\tif (!this.messagesToRead[chatId])\n\t\t{\n\t\t\treturn maxMessageId;\n\t\t}\n\n\t\tthis.messagesToRead[chatId].forEach(messageId => {\n\t\t\tif (maxMessageId < messageId)\n\t\t\t{\n\t\t\t\tmaxMessageId = messageId;\n\t\t\t}\n\t\t});\n\n\t\treturn maxMessageId;\n\t}\n\n\treadMessageOnClient(chatId, lastMessageToRead): Promise\n\t{\n\t\treturn this.store.dispatch('messages/readMessages', {\n\t\t\tchatId: chatId,\n\t\t\treadId: lastMessageToRead\n\t\t});\n\t}\n\n\treadMessageOnServer(chatId, lastMessageToRead): Promise\n\t{\n\t\treturn this.restClient.callMethod(RestMethod.imDialogRead, {\n\t\t\t'DIALOG_ID': this.getDialogIdByChatId(chatId),\n\t\t\t'MESSAGE_ID': lastMessageToRead\n\t\t});\n\t}\n\n\tdecreaseChatCounter(chatId, counter)\n\t{\n\t\treturn this.store.dispatch('dialogues/decreaseCounter', {\n\t\t\tdialogId: this.getDialogIdByChatId(chatId),\n\t\t\tcount: counter\n\t\t});\n\t}\n\n\tgetChatId(): number\n\t{\n\t\treturn this.store.state.application.dialog.chatId;\n\t}\n\n\tgetDialogIdByChatId(chatId): number\n\t{\n\t\tconst dialog = this.store.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\tgetDialogId(): number | string\n\t{\n\t\treturn this.store.state.application.dialog.dialogId;\n\t}\n\n\tdestroy()\n\t{\n\t\tEventEmitter.unsubscribe(EventType.dialog.readMessage, this.onReadMessageHandler);\n\t}\n}","import { EventType, RestMethod } from \"im.const\";\nimport {Logger} from \"im.lib.logger\";\nimport { EventEmitter } from \"main.core.events\";\n\nexport class ReactionHandler\n{\n\tstatic types = {\n\t\tnone: 'none',\n\t\tlike: 'like',\n\t\tkiss: 'kiss',\n\t\tlaugh: 'laugh',\n\t\twonder: 'wonder',\n\t\tcry: 'cry',\n\t\tangry: 'angry'\n\t};\n\n\tstatic actions = {\n\t\tauto: 'auto',\n\t\tplus: 'plus',\n\t\tminus: 'minus',\n\t\tset: 'set'\n\t};\n\n\tconstructor($Bitrix)\n\t{\n\t\tthis.store = $Bitrix.Data.get('controller').store;\n\t\tthis.restClient = $Bitrix.RestClient.get();\n\n\t\tthis.onSetMessageReactionHandler = this.onSetMessageReaction.bind(this);\n\t\tthis.onOpenMessageReactionListHandler = this.onOpenMessageReactionList.bind(this);\n\t\tEventEmitter.subscribe(EventType.dialog.setMessageReaction, this.onSetMessageReactionHandler);\n\t\tEventEmitter.subscribe(EventType.dialog.openMessageReactionList, this.onOpenMessageReactionListHandler);\n\t}\n\n\tonSetMessageReaction({data})\n\t{\n\t\tthis.reactToMessage(data.message.id, data.reaction);\n\t}\n\n\tonOpenMessageReactionList({data})\n\t{\n\t\tthis.openMessageReactionList(data.message.id, data.values);\n\t}\n\n\treactToMessage(messageId, reaction)\n\t{\n\t\t// let type = reaction.type || ReactionHandler.types.like;\n\t\tlet action = reaction.action || ReactionHandler.actions.auto;\n\t\tif (action !== ReactionHandler.actions.auto)\n\t\t{\n\t\t\taction = action === ReactionHandler.actions.set ? ReactionHandler.actions.plus : ReactionHandler.actions.minus;\n\t\t}\n\t\tthis.restClient.callMethod(RestMethod.imMessageLike, {\n\t\t\t'MESSAGE_ID': messageId,\n\t\t\t'ACTION': action\n\t\t});\n\t}\n\n\topenMessageReactionList(messageId, values)\n\t{\n\t\tLogger.warn('Message reaction list not implemented yet!', messageId, values);\n\t}\n\n\tdestroy()\n\t{\n\t\tEventEmitter.unsubscribe(EventType.dialog.setMessageReaction, this.onSetMessageReactionHandler);\n\t\tEventEmitter.unsubscribe(EventType.dialog.openMessageReactionList, this.onOpenMessageReactionListHandler);\n\t}\n}","import { EventEmitter } from \"main.core.events\";\nimport { EventType } from \"im.const\";\n\nexport class QuoteHandler\n{\n\tconstructor($Bitrix)\n\t{\n\t\tthis.store = $Bitrix.Data.get('controller').store;\n\n\t\tthis.onQuoteMessageHandler = this.onQuoteMessage.bind(this);\n\t\tthis.onQuotePanelCloseHandler = this.onQuotePanelClose.bind(this);\n\t\tEventEmitter.subscribe(EventType.dialog.quoteMessage, this.onQuoteMessageHandler);\n\t\tEventEmitter.subscribe(EventType.dialog.quotePanelClose, this.onQuotePanelCloseHandler);\n\t}\n\n\tonQuoteMessage({data})\n\t{\n\t\tthis.quoteMessage(data.message.id);\n\t}\n\n\tonQuotePanelClose()\n\t{\n\t\tthis.clearQuote();\n\t}\n\n\tquoteMessage(messageId)\n\t{\n\t\tthis.store.dispatch('dialogues/update', {\n\t\t\tdialogId: this.getDialogId(),\n\t\t\tfields: {\n\t\t\t\tquoteId: messageId\n\t\t\t}\n\t\t});\n\t}\n\n\tclearQuote()\n\t{\n\t\tthis.store.dispatch('dialogues/update', {\n\t\t\tdialogId: this.getDialogId(),\n\t\t\tfields: {\n\t\t\t\tquoteId: 0\n\t\t\t}\n\t\t});\n\t}\n\n\tgetDialogId(): number | string\n\t{\n\t\treturn this.store.state.application.dialog.dialogId;\n\t}\n\n\tdestroy()\n\t{\n\t\tEventEmitter.unsubscribe(EventType.dialog.quoteMessage, this.onQuoteMessageHandler);\n\t\tEventEmitter.unsubscribe(EventType.dialog.quotePanelClose, this.onQuotePanelCloseHandler);\n\t}\n}","import { EventEmitter } from \"main.core.events\";\nimport { EventType, RestMethod } from \"im.const\";\nimport { Timer } from \"im.lib.timer\";\nimport { Utils } from \"im.lib.utils\";\n\nexport class TextareaHandler\n{\n\tstore: Object = null;\n\trestClient: Object = null;\n\ttimer: Timer = null;\n\n\tconstructor($Bitrix)\n\t{\n\t\tthis.store = $Bitrix.Data.get('controller').store;\n\t\tthis.restClient = $Bitrix.RestClient.get();\n\t\tthis.timer = new Timer();\n\n\t\tthis.subscribeToEvents();\n\t}\n\n\t// region events\n\tsubscribeToEvents()\n\t{\n\t\tthis.onStartWritingHandler = this.onStartWriting.bind(this);\n\t\tthis.onStopWritingHandler = this.onStopWriting.bind(this);\n\t\tthis.onAppButtonClickHandler = this.onAppButtonClick.bind(this);\n\t\tthis.onFocusHandler = this.onFocus.bind(this);\n\t\tthis.onBlurHandler = this.onBlur.bind(this);\n\t\tthis.onKeyUpHandler = this.onKeyUp.bind(this);\n\t\tthis.onEditHandler = this.onEdit.bind(this);\n\n\t\tEventEmitter.subscribe(EventType.textarea.startWriting, this.onStartWritingHandler);\n\t\tEventEmitter.subscribe(EventType.textarea.stopWriting, this.onStopWritingHandler);\n\t\tEventEmitter.subscribe(EventType.textarea.appButtonClick, this.onAppButtonClickHandler);\n\t\tEventEmitter.subscribe(EventType.textarea.focus, this.onFocusHandler);\n\t\tEventEmitter.subscribe(EventType.textarea.blur, this.onBlurHandler);\n\t\tEventEmitter.subscribe(EventType.textarea.keyUp, this.onKeyUpHandler);\n\t\tEventEmitter.subscribe(EventType.textarea.edit, this.onEditHandler);\n\t}\n\n\tonStartWriting()\n\t{\n\t\tthis.startWriting();\n\t}\n\n\tonStopWriting()\n\t{\n\t\tthis.stopWriting();\n\t}\n\n\tonAppButtonClick()\n\t{\n\t\t//\n\t}\n\n\tonFocus()\n\t{\n\t\t//\n\t}\n\n\tonBlur()\n\t{\n\t\t//\n\t}\n\n\tonKeyUp()\n\t{\n\t\t//\n\t}\n\n\tonEdit()\n\t{\n\t\t//\n\t}\n\t//endregion events\n\n\t// region writing\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, () => {\n\t\t\tthis.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\t// endregion writing\n\n\t// region helpers\n\tgetChatId(): number\n\t{\n\t\treturn this.store.state.application.dialog.chatId;\n\t}\n\n\tgetDialogId(): number | string\n\t{\n\t\treturn this.store.state.application.dialog.dialogId;\n\t}\n\n\tgetUserId(): number\n\t{\n\t\treturn this.store.state.application.common.userId;\n\t}\n\n\tgetDiskFolderId()\n\t{\n\t\treturn this.store.state.application.dialog.diskFolderId;\n\t}\n\t// endregion helpers\n\n\tdestroy()\n\t{\n\t\tEventEmitter.unsubscribe(EventType.textarea.startWriting, this.onStartWritingHandler);\n\t\tEventEmitter.unsubscribe(EventType.textarea.stopWriting, this.onStopWritingHandler);\n\t\tEventEmitter.unsubscribe(EventType.textarea.appButtonClick, this.onAppButtonClickHandler);\n\t\tEventEmitter.unsubscribe(EventType.textarea.focus, this.onFocusHandler);\n\t\tEventEmitter.unsubscribe(EventType.textarea.blur, this.onBlurHandler);\n\t\tEventEmitter.unsubscribe(EventType.textarea.keyUp, this.onKeyUpHandler);\n\t\tEventEmitter.unsubscribe(EventType.textarea.edit, this.onEditHandler);\n\t}\n}","import { EventEmitter } from 'main.core.events';\nimport { EventType, FileStatus, RestMethod as ImRestMethod, RestMethodHandler as ImRestMethodHandler } from 'im.const';\nimport { Uploader } from 'im.lib.uploader';\nimport { Logger } from 'im.lib.logger';\nimport { Type } from 'main.core';\n\n/**\n * @notice define getActionUploadChunk and getActionCommitFile methods for custom upload methods (e.g. videoconference)\n * @notice redefine addMessageWithFile for custom headers (e.g. videoconference)\n */\nexport class TextareaUploadHandler\n{\n\tcontroller: Object = null;\n\trestClient: Object = null;\n\tuploader: Uploader = null;\n\tisRequestingDiskFolderId: boolean = false;\n\n\tconstructor($Bitrix)\n\t{\n\t\tthis.controller = $Bitrix.Data.get('controller');\n\t\tthis.restClient = $Bitrix.RestClient.get();\n\n\t\tthis.initUploader();\n\n\t\tthis.onTextareaFileSelectedHandler = this.onTextareaFileSelected.bind(this);\n\t\tthis.addMessageWithFileHandler = this.addMessageWithFile.bind(this);\n\t\tthis.onClickOnUploadCancelHandler = this.onClickOnUploadCancel.bind(this);\n\n\t\tEventEmitter.subscribe(EventType.textarea.fileSelected, this.onTextareaFileSelectedHandler);\n\t\tEventEmitter.subscribe(EventType.uploader.addMessageWithFile, this.addMessageWithFileHandler);\n\t\tEventEmitter.subscribe(EventType.dialog.clickOnUploadCancel, this.onClickOnUploadCancelHandler);\n\t}\n\n\tinitUploader()\n\t{\n\t\tthis.uploader = new Uploader({\n\t\t\tgeneratePreview: true,\n\t\t\tsender: this.getUploaderSenderOptions()\n\t\t});\n\n\t\tthis.uploader.subscribe('onStartUpload', this.onStartUploadHandler.bind(this));\n\t\tthis.uploader.subscribe('onProgress', this.onProgressHandler.bind(this));\n\t\tthis.uploader.subscribe('onSelectFile', this.onSelectFileHandler.bind(this));\n\t\tthis.uploader.subscribe('onComplete', this.onCompleteHandler.bind(this));\n\t\tthis.uploader.subscribe('onUploadFileError', this.onUploadFileErrorHandler.bind(this));\n\t\tthis.uploader.subscribe('onCreateFileError', this.onCreateFileErrorHandler.bind(this));\n\t}\n\n\tcommitFile(params, message)\n\t{\n\t\tthis.restClient.callMethod(ImRestMethod.imDiskFileCommit, {\n\t\t\tchat_id: params.chatId,\n\t\t\tupload_id: params.uploadId,\n\t\t\tmessage: params.messageText,\n\t\t\ttemplate_id: params.messageId,\n\t\t\tfile_template_id: params.fileId,\n\t\t}, null, null).then(response => {\n\t\t\tthis.controller.executeRestAnswer(ImRestMethodHandler.imDiskFileCommit, response, message);\n\t\t}).catch(error => {\n\t\t\tthis.controller.executeRestAnswer(ImRestMethodHandler.imDiskFileCommit, error, message);\n\t\t});\n\n\t\treturn true;\n\t}\n\n\tsetUploadError(chatId, fileId, messageId = 0)\n\t{\n\t\tthis.controller.store.dispatch('files/update', {\n\t\t\tchatId: chatId,\n\t\t\tid: fileId,\n\t\t\tfields: {\n\t\t\t\tstatus: FileStatus.error,\n\t\t\t\tprogress: 0\n\t\t\t}\n\t\t});\n\t\tif (messageId)\n\t\t{\n\t\t\tthis.controller.store.dispatch('messages/actionError', {\n\t\t\t\tchatId: chatId,\n\t\t\t\tid: messageId,\n\t\t\t\tretry: false,\n\t\t\t});\n\t\t}\n\t}\n\n\tonTextareaFileSelected({data: event})\n\t{\n\t\tconst fileInput = event && event.fileChangeEvent && event.fileChangeEvent.target.files.length > 0 ? event.fileChangeEvent : '';\n\t\tif (!fileInput)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.uploadFile(fileInput);\n\t}\n\n\taddMessageWithFile(event)\n\t{\n\t\tconst message = event.getData();\n\t\tif (!this.getDiskFolderId())\n\t\t{\n\t\t\tthis.requestDiskFolderId(message.chatId).then(() => {\n\t\t\t\tthis.addMessageWithFile(event);\n\t\t\t}).catch(error => {\n\t\t\t\tLogger.error('addMessageWithFile error', error);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.uploader.addTask({\n\t\t\ttaskId: message.file.id,\n\t\t\tfileData: message.file.source.file,\n\t\t\tfileName: message.file.source.file.name,\n\t\t\tgenerateUniqueName: true,\n\t\t\tdiskFolderId: this.getDiskFolderId(),\n\t\t\tpreviewBlob: message.file.previewBlob,\n\t\t});\n\t}\n\n\tuploadFile(event)\n\t{\n\t\tif (!event)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.uploader.addFilesFromEvent(event);\n\t}\n\n\tdestroy()\n\t{\n\t\tif (this.uploader)\n\t\t{\n\t\t\tthis.uploader.unsubscribeAll();\n\t\t}\n\t\tEventEmitter.unsubscribe(EventType.textarea.fileSelected, this.onTextareaFileSelectedHandler);\n\t\tEventEmitter.unsubscribe(EventType.uploader.addMessageWithFile, this.addMessageWithFileHandler);\n\t\tEventEmitter.unsubscribe(EventType.dialog.clickOnUploadCancel, this.onClickOnUploadCancelHandler);\n\t}\n\n\tgetChatId()\n\t{\n\t\treturn this.controller.store.state.application.dialog.chatId;\n\t}\n\n\tgetDialogId()\n\t{\n\t\treturn this.controller.store.state.application.dialog.dialogId;\n\t}\n\n\tgetDiskFolderId()\n\t{\n\t\treturn this.controller.store.state.application.dialog.diskFolderId;\n\t}\n\n\tgetCurrentUser()\n\t{\n\t\treturn this.controller.store.getters['users/get'](this.controller.store.state.application.common.userId, true);\n\t}\n\n\tgetMessageByFileId(fileId, eventData)\n\t{\n\t\tconst chatMessages = this.controller.store.getters['messages/get'](this.getChatId());\n\t\tconst messageWithFile = chatMessages.find(message => {\n\t\t\tif (Type.isArray(message.params?.FILE_ID))\n\t\t\t{\n\t\t\t\treturn message.params.FILE_ID.includes(fileId);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\n\t\tif (!messageWithFile)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\treturn {\n\t\t\tid: messageWithFile.id,\n\t\t\tchatId: messageWithFile.chatId,\n\t\t\tdialogId: this.getDialogId(),\n\t\t\ttext: messageWithFile.text,\n\t\t\tfile: {id: fileId, source: eventData, previewBlob: eventData.previewData},\n\t\t\tsending: true\n\t\t};\n\t}\n\n\trequestDiskFolderId(chatId)\n\t{\n\t\treturn new Promise((resolve, reject) =>\n\t\t{\n\t\t\tif (this.isRequestingDiskFolderId || this.getDiskFolderId())\n\t\t\t{\n\t\t\t\tthis.isRequestingDiskFolderId = false;\n\t\t\t\tresolve();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isRequestingDiskFolderId = true;\n\n\t\t\tthis.restClient.callMethod(ImRestMethod.imDiskFolderGet, {chat_id: chatId}).then(response => {\n\t\t\t\tthis.isRequestingDiskFolderId = false;\n\t\t\t\tthis.controller.executeRestAnswer(ImRestMethodHandler.imDiskFolderGet, response);\n\t\t\t\tresolve();\n\t\t\t}).catch(error => {\n\t\t\t\tthis.isRequestingDiskFolderId = false;\n\t\t\t\tthis.controller.executeRestAnswer(ImRestMethodHandler.imDiskFolderGet, error);\n\t\t\t\treject(error);\n\t\t\t});\n\t\t});\n\t}\n\n\t// Uploader handlers\n\tonStartUploadHandler(event)\n\t{\n\t\tconst eventData = event.getData();\n\t\tLogger.log('Uploader: onStartUpload', eventData);\n\n\t\tthis.controller.store.dispatch('files/update', {\n\t\t\tchatId: this.getChatId(),\n\t\t\tid: eventData.id,\n\t\t\tfields: {\n\t\t\t\tstatus: FileStatus.upload,\n\t\t\t\tprogress: 0\n\t\t\t}\n\t\t});\n\t}\n\n\tonProgressHandler(event)\n\t{\n\t\tconst eventData = event.getData();\n\t\tLogger.log('Uploader: onProgress', eventData);\n\n\t\tthis.controller.store.dispatch('files/update', {\n\t\t\tchatId: this.getChatId(),\n\t\t\tid: eventData.id,\n\t\t\tfields: {\n\t\t\t\tstatus: FileStatus.upload,\n\t\t\t\tprogress: (eventData.progress === 100 ? 99 : eventData.progress),\n\t\t\t}\n\t\t});\n\t}\n\n\tonSelectFileHandler(event)\n\t{\n\t\tconst eventData = event.getData();\n\t\tconst file = eventData.file;\n\t\tLogger.log('Uploader: onSelectFile', eventData);\n\n\t\tlet fileType = 'file';\n\t\tif (file.type.toString().startsWith('image'))\n\t\t{\n\t\t\tfileType = 'image';\n\t\t}\n\t\telse if (file.type.toString().startsWith('video'))\n\t\t{\n\t\t\tfileType = 'video';\n\t\t}\n\n\t\tthis.controller.store.dispatch('files/add', {\n\t\t\tchatId: this.getChatId(),\n\t\t\tauthorId: this.getCurrentUser().id,\n\t\t\tname: file.name,\n\t\t\ttype: fileType,\n\t\t\textension: file.name.split('.').splice(-1)[0],\n\t\t\tsize: file.size,\n\t\t\timage: !eventData.previewData? false: {\n\t\t\t\twidth: eventData.previewDataWidth,\n\t\t\t\theight: eventData.previewDataHeight,\n\t\t\t},\n\t\t\tstatus: FileStatus.progress,\n\t\t\tprogress: 0,\n\t\t\tauthorName: this.getCurrentUser().name,\n\t\t\turlPreview: eventData.previewData ? URL.createObjectURL(eventData.previewData) : '',\n\t\t}).then(fileId => {\n\t\t\tEventEmitter.emit(EventType.textarea.sendMessage, {\n\t\t\t\ttext: '',\n\t\t\t\tfile: { id: fileId, source: eventData, previewBlob: eventData.previewData }\n\t\t\t});\n\t\t});\n\t}\n\n\tonCompleteHandler(event)\n\t{\n\t\tconst eventData = event.getData();\n\t\tLogger.log('Uploader: onComplete', eventData);\n\n\t\tthis.controller.store.dispatch('files/update', {\n\t\t\tchatId: this.getChatId(),\n\t\t\tid: eventData.id,\n\t\t\tfields: {\n\t\t\t\tstatus: FileStatus.wait,\n\t\t\t\tprogress: 100\n\t\t\t}\n\t\t});\n\n\t\tconst messageWithFile = this.getMessageByFileId(eventData.id, eventData);\n\t\tconst fileType = this.controller.store.getters['files/get'](this.getChatId(), messageWithFile.file.id, true).type;\n\n\t\tthis.commitFile({\n\t\t\tchatId: this.getChatId(),\n\t\t\tuploadId: eventData.result.data.file.id,\n\t\t\tmessageText: messageWithFile.text,\n\t\t\tmessageId: messageWithFile.id,\n\t\t\tfileId: messageWithFile.file.id,\n\t\t\tfileType\n\t\t}, messageWithFile);\n\t}\n\n\tonUploadFileErrorHandler(event)\n\t{\n\t\tconst eventData = event.getData();\n\t\tLogger.log('Uploader: onUploadFileError', eventData);\n\n\t\tconst messageWithFile = this.getMessageByFileId(eventData.id, eventData);\n\t\tif (messageWithFile)\n\t\t{\n\t\t\tthis.setUploadError(this.getChatId(), messageWithFile.file.id, messageWithFile.id);\n\t\t}\n\t}\n\n\tonCreateFileErrorHandler(event)\n\t{\n\t\tconst eventData = event.getData();\n\t\tLogger.log('Uploader: onCreateFileError', eventData);\n\n\t\tconst messageWithFile = this.getMessageByFileId(eventData.id, eventData);\n\t\tif (messageWithFile)\n\t\t{\n\t\t\tthis.setUploadError(this.getChatId(), messageWithFile.file.id, messageWithFile.id);\n\t\t}\n\t}\n\n\tonClickOnUploadCancel({data: event})\n\t{\n\t\tconst fileId = event.file.id;\n\t\tconst fileData = event.file;\n\t\tconst messageWithFile = this.getMessageByFileId(fileId, fileData);\n\n\t\tif (!messageWithFile)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.uploader.deleteTask(fileId);\n\n\t\tthis.controller.store.dispatch('messages/delete', {\n\t\t\tchatId: this.getChatId(),\n\t\t\tid: messageWithFile.id,\n\t\t}).then(() => {\n\t\t\tthis.controller.store.dispatch('files/delete', {\n\t\t\t\tchatId: this.getChatId(),\n\t\t\t\tid: messageWithFile.file.id,\n\t\t\t});\n\t\t});\n\t}\n\n\tgetActionCommitFile(): ?string\n\t{\n\t\treturn null;\n\t}\n\n\tgetActionUploadChunk(): ?string\n\t{\n\t\treturn null;\n\t}\n\n\tgetUploaderSenderOptions()\n\t{\n\t\treturn {\n\t\t\tactionUploadChunk: this.getActionUploadChunk(),\n\t\t\tactionCommitFile: this.getActionCommitFile(),\n\t\t};\n\t}\n}","import {EventEmitter} from \"main.core.events\";\nimport {Utils} from \"im.lib.utils\";\nimport {Type} from \"main.core\";\n\nexport class TextareaDragHandler extends EventEmitter\n{\n\tstatic events = {\n\t\tonHeightChange: 'onHeightChange',\n\t\tonStopDrag: 'onStopDrag'\n\t};\n\n\tisDragging: boolean = false;\n\tminimumHeight: number = 120;\n\tmaximumHeight: number = 400;\n\n\tconstructor(events)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.IM.TextareaDragHandler');\n\t\tthis.subscribeToEvents(events);\n\n\t\tif (Utils.device.isMobile())\n\t\t{\n\t\t\tthis.maximumHeight = 200;\n\t\t}\n\t}\n\n\tsubscribeToEvents(configEvents)\n\t{\n\t\tconst events = Type.isObject(configEvents) ? configEvents : {};\n\t\tObject.entries(events).forEach(([name, callback]) => {\n\t\t\tif (Type.isFunction(callback))\n\t\t\t{\n\t\t\t\tthis.subscribe(name, callback);\n\t\t\t}\n\t\t});\n\t}\n\n\tonStartDrag(event, currentHeight)\n\t{\n\t\tif (this.isDragging)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isDragging = true;\n\n\t\tevent = event.changedTouches ? event.changedTouches[0] : event;\n\n\t\tthis.textareaDragCursorStartPoint = event.clientY;\n\t\tthis.textareaDragHeightStartPoint = currentHeight;\n\n\t\tthis.addTextareaDragEvents();\n\t}\n\n\tonTextareaContinueDrag(event)\n\t{\n\t\tif (!this.isDragging)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tevent = event.changedTouches ? event.changedTouches[0] : event;\n\n\t\tthis.textareaDragCursorControlPoint = event.clientY;\n\n\t\tconst maxPoint = Math.min(this.textareaDragHeightStartPoint + this.textareaDragCursorStartPoint - this.textareaDragCursorControlPoint, this.maximumHeight);\n\t\tconst newTextareaHeight = Math.max(maxPoint, this.minimumHeight);\n\n\t\tthis.emit(TextareaDragHandler.events.onHeightChange, {newHeight: newTextareaHeight});\n\t}\n\n\tonTextareaStopDrag()\n\t{\n\t\tif (!this.isDragging)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isDragging = false;\n\t\tthis.removeTextareaDragEvents();\n\n\t\tthis.emit(TextareaDragHandler.events.onStopDrag);\n\t}\n\n\taddTextareaDragEvents()\n\t{\n\t\tthis.onContinueDragHandler = this.onTextareaContinueDrag.bind(this);\n\t\tthis.onStopDragHandler = this.onTextareaStopDrag.bind(this);\n\t\tdocument.addEventListener('mousemove', this.onContinueDragHandler);\n\t\tdocument.addEventListener('touchmove', this.onContinueDragHandler);\n\t\tdocument.addEventListener('touchend', this.onStopDragHandler);\n\t\tdocument.addEventListener('mouseup', this.onStopDragHandler);\n\t\tdocument.addEventListener('mouseleave', this.onStopDragHandler);\n\t}\n\n\tremoveTextareaDragEvents()\n\t{\n\t\tdocument.removeEventListener('mousemove', this.onContinueDragHandler);\n\t\tdocument.removeEventListener('touchmove', this.onContinueDragHandler);\n\t\tdocument.removeEventListener('touchend', this.onStopDragHandler);\n\t\tdocument.removeEventListener('mouseup', this.onStopDragHandler);\n\t\tdocument.removeEventListener('mouseleave', this.onStopDragHandler);\n\t}\n\n\tdestroy()\n\t{\n\t\tthis.removeTextareaDragEvents();\n\t}\n}","import { EventEmitter } from \"main.core.events\";\nimport { EventType, RestMethod } from \"im.const\";\nimport { Logger } from \"im.lib.logger\";\n\nexport class DialogActionHandler\n{\n\trestClient: Object = null;\n\n\tconstructor($Bitrix)\n\t{\n\t\tthis.restClient = $Bitrix.RestClient.get();\n\n\t\tthis.subscribeToEvents();\n\t}\n\n\tsubscribeToEvents()\n\t{\n\t\tthis.clickOnMentionHandler = this.onClickOnMention.bind(this);\n\t\tthis.clickOnUserNameHandler = this.onClickOnUserName.bind(this);\n\t\tthis.clickOnMessageMenuHandler = this.onClickOnMessageMenu.bind(this);\n\t\tthis.clickOnReadListHandler = this.onClickOnReadList.bind(this);\n\t\tthis.clickOnChatTeaserHandler = this.onClickOnChatTeaser.bind(this);\n\t\tthis.clickOnDialogHandler = this.onClickOnDialog.bind(this);\n\t\tEventEmitter.subscribe(EventType.dialog.clickOnMention, this.clickOnMentionHandler);\n\t\tEventEmitter.subscribe(EventType.dialog.clickOnUserName, this.clickOnUserNameHandler);\n\t\tEventEmitter.subscribe(EventType.dialog.clickOnMessageMenu, this.clickOnMessageMenuHandler);\n\t\tEventEmitter.subscribe(EventType.dialog.clickOnReadList, this.clickOnReadListHandler);\n\t\tEventEmitter.subscribe(EventType.dialog.clickOnChatTeaser, this.clickOnChatTeaserHandler);\n\t\tEventEmitter.subscribe(EventType.dialog.clickOnDialog, this.clickOnDialogHandler);\n\t}\n\n\tonClickOnMention({data: event})\n\t{\n\t\tif (event.type === 'USER')\n\t\t{\n\t\t\tLogger.warn('DialogActionHandler: open user profile', event);\n\t\t}\n\t\telse if (event.type === 'CHAT')\n\t\t{\n\t\t\tLogger.warn('DialogActionHandler: open dialog from mention click', event);\n\t\t}\n\t\telse if (event.type === 'CALL')\n\t\t{\n\t\t\tLogger.warn('DialogActionHandler: open phone menu', event);\n\t\t}\n\t}\n\n\tonClickOnUserName({data: event})\n\t{\n\t\tEventEmitter.emit(EventType.textarea.insertText, {\n\t\t\ttext: `${event.user.name}, `\n\t\t});\n\t}\n\n\tonClickOnMessageMenu({data: event})\n\t{\n\t\tLogger.warn('DialogActionHandler: open message menu', event);\n\t}\n\n\tonClickOnReadList({data: event})\n\t{\n\t\tLogger.warn('DialogActionHandler: open read list', event);\n\t}\n\n\tonClickOnChatTeaser({data: event})\n\t{\n\t\tthis.joinParentChat(event.message.id, `chat${event.message.params.CHAT_ID}`)\n\t\t\t.then((dialogId) => {\n\t\t\t\tLogger.warn('DialogActionHandler: open dialog from teaser click', dialogId);\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.error('DialogActionHandler: error joining parent chat', error);\n\t\t\t});\n\t}\n\n\tonClickOnDialog()\n\t{\n\t\tLogger.warn('DialogActionHandler: click on dialog');\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\t// TODO: what is this for\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.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\n\t\t\t\treturn resolve(dialogId);\n\t\t\t}).catch(() => {\n\t\t\t\tthis.tempJoinChat['wait'] = false;\n\n\t\t\t\treturn reject();\n\t\t\t});\n\t\t});\n\t}\n\n\tunsubscribeEvents()\n\t{\n\t\tEventEmitter.unsubscribe(EventType.dialog.clickOnMention, this.clickOnMentionHandler);\n\t\tEventEmitter.unsubscribe(EventType.dialog.clickOnUserName, this.clickOnUserNameHandler);\n\t\tEventEmitter.unsubscribe(EventType.dialog.clickOnMessageMenu, this.clickOnMessageMenuHandler);\n\t\tEventEmitter.unsubscribe(EventType.dialog.clickOnReadList, this.clickOnReadListHandler);\n\t\tEventEmitter.unsubscribe(EventType.dialog.clickOnChatTeaser, this.clickOnChatTeaserHandler);\n\t\tEventEmitter.unsubscribe(EventType.dialog.clickOnDialog, this.clickOnDialogHandler);\n\t}\n\n\tdestroy()\n\t{\n\t\tthis.unsubscribeEvents();\n\t}\n}","import {SendMessageHandler} from \"./send-message-handler\";\nimport {ReadingHandler} from \"./reading-handler\";\nimport {ReactionHandler} from \"./reaction-handler\";\nimport {QuoteHandler} from \"./quote-handler\";\nimport {TextareaHandler} from \"./textarea-handler\";\nimport {TextareaUploadHandler} from \"./textarea-upload-handler\";\nimport {TextareaDragHandler} from \"./textarea-drag-handler\";\nimport {DialogActionHandler} from \"./dialog-action-handler\";\nimport {Reflection} from 'main.core';\n\nexport {\n\tTextareaHandler, TextareaDragHandler, TextareaUploadHandler,\n\tSendMessageHandler, ReadingHandler, ReactionHandler, QuoteHandler,\n\tDialogActionHandler\n};\n\n// fix for compatible with mobile, bug #169468\nconst namespace = Reflection.getClass('BX.Messenger');\nif (namespace)\n{\n\tnamespace.ReadingHandler = ReadingHandler;\n\tnamespace.ReactionHandler = ReactionHandler;\n\tnamespace.QuoteHandler = QuoteHandler;\n}"],"names":["SendMessageHandler","$Bitrix","controller","Data","get","store","restClient","RestClient","loc","Loc","messages","onSendMessageHandler","onSendMessage","bind","onClickOnMessageRetryHandler","onClickOnMessageRetry","onClickOnCommandHandler","onClickOnCommand","onClickOnKeyboardHandler","onClickOnKeyboard","EventEmitter","subscribe","EventType","textarea","sendMessage","dialog","clickOnMessageRetry","clickOnCommand","clickOnKeyboardButton","data","text","file","quoteId","getters","getDialogId","quoteMessage","getChatId","getMessageTextWithQuote","emit","quotePanelClose","application","isUnreadMessagesLoaded","sendMessageToServer","id","chatId","dialogId","processQueue","params","FILE_ID","addMessageToModel","sending","then","messageId","scrollToBottom","cancelIfScrollChange","addMessageToQueue","messagesToSend","filter","element","forEach","deleteFromQueue","stopWriting","uploader","addMessageWithFile","dispatch","authorId","getUserId","push","callMethod","ImRestMethod","imMessageAdd","response","executeRestAnswer","RestMethodHandler","error","Logger","warn","event","retrySendMessage","message","setSendingMessageFlag","type","handlePutAction","value","handleSendAction","action","handleKeyboardAction","botId","command","RestMethod","imMessageCommand","console","Clipboard","copy","BX","UI","Notification","Center","notify","content","autoHideDelay","insertText","setTimeout","duration","user","files","quoteDelimiter","repeat","quoteTitle","name","quoteDate","Utils","date","format","quoteContent","quote","join","state","common","userId","unsubscribe","ReadingHandler","timer","Timer","onReadMessageHandler","onReadMessage","readMessage","skipTimer","skipAjax","messagesToRead","Number","parseInt","stop","processMessagesToRead","Promise","resolve","reject","start","result","lastMessageToRead","getMaxMessageIdFromQueue","readMessageOnClient","readResult","decreaseChatCounter","count","lastId","readMessageOnServer","maxMessageId","readId","imDialogRead","getDialogIdByChatId","counter","ReactionHandler","onSetMessageReactionHandler","onSetMessageReaction","onOpenMessageReactionListHandler","onOpenMessageReactionList","setMessageReaction","openMessageReactionList","reactToMessage","reaction","values","actions","auto","set","plus","minus","imMessageLike","none","like","kiss","laugh","wonder","cry","angry","QuoteHandler","onQuoteMessageHandler","onQuoteMessage","onQuotePanelCloseHandler","onQuotePanelClose","clearQuote","fields","TextareaHandler","subscribeToEvents","onStartWritingHandler","onStartWriting","onStopWritingHandler","onStopWriting","onAppButtonClickHandler","onAppButtonClick","onFocusHandler","onFocus","onBlurHandler","onBlur","onKeyUpHandler","onKeyUp","onEditHandler","onEdit","startWriting","appButtonClick","focus","blur","keyUp","edit","isEmptyDialogId","has","imDialogWriting","diskFolderId","TextareaUploadHandler","initUploader","onTextareaFileSelectedHandler","onTextareaFileSelected","addMessageWithFileHandler","onClickOnUploadCancelHandler","onClickOnUploadCancel","fileSelected","clickOnUploadCancel","Uploader","generatePreview","sender","getUploaderSenderOptions","onStartUploadHandler","onProgressHandler","onSelectFileHandler","onCompleteHandler","onUploadFileErrorHandler","onCreateFileErrorHandler","imDiskFileCommit","chat_id","upload_id","uploadId","messageText","template_id","file_template_id","fileId","ImRestMethodHandler","status","FileStatus","progress","retry","fileInput","fileChangeEvent","target","length","uploadFile","getData","getDiskFolderId","requestDiskFolderId","addTask","taskId","fileData","source","fileName","generateUniqueName","previewBlob","addFilesFromEvent","unsubscribeAll","eventData","chatMessages","messageWithFile","find","Type","isArray","includes","previewData","isRequestingDiskFolderId","imDiskFolderGet","log","upload","fileType","toString","startsWith","getCurrentUser","extension","split","splice","size","image","width","previewDataWidth","height","previewDataHeight","authorName","urlPreview","URL","createObjectURL","wait","getMessageByFileId","commitFile","setUploadError","deleteTask","actionUploadChunk","getActionUploadChunk","actionCommitFile","getActionCommitFile","TextareaDragHandler","events","setEventNamespace","device","isMobile","maximumHeight","configEvents","isObject","Object","entries","callback","isFunction","currentHeight","isDragging","changedTouches","textareaDragCursorStartPoint","clientY","textareaDragHeightStartPoint","addTextareaDragEvents","textareaDragCursorControlPoint","maxPoint","Math","min","newTextareaHeight","max","minimumHeight","onHeightChange","newHeight","removeTextareaDragEvents","onStopDrag","onContinueDragHandler","onTextareaContinueDrag","onStopDragHandler","onTextareaStopDrag","document","addEventListener","removeEventListener","DialogActionHandler","clickOnMentionHandler","onClickOnMention","clickOnUserNameHandler","onClickOnUserName","clickOnMessageMenuHandler","onClickOnMessageMenu","clickOnReadListHandler","onClickOnReadList","clickOnChatTeaserHandler","onClickOnChatTeaser","clickOnDialogHandler","onClickOnDialog","clickOnMention","clickOnUserName","clickOnMessageMenu","clickOnReadList","clickOnChatTeaser","clickOnDialog","joinParentChat","CHAT_ID","tempJoinChat","imChatParentJoin","unsubscribeEvents","namespace","Reflection","getClass"],"mappings":"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"}