File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/js/im/v2/component/old-chat-embedding/recent-list/dist/recent-list.bundle.js.map
Back
{"version":3,"file":"recent-list.bundle.js","sources":["../src/components/new-user-popup.js","../src/components/recent-item.js","../src/components/active-call.js","../src/settings-manager.js","../src/broadcast-manager.js","../src/call-manager.js","../src/draft-manager.js","../src/event-handler.js","../src/recent-list.js"],"sourcesContent":["import {EventEmitter} from 'main.core.events';\nimport {EventType} from 'im.v2.const';\n\n// @vue/component\nexport const NewUserPopup = {\n\tname: 'NewUserPopup',\n\tprops: {\n\t\ttitle: {type: String, required: true},\n\t\ttext: {type: String, required: true}\n\t},\n\temits: ['click', 'close'],\n\tmounted()\n\t{\n\t\tBX.MessengerProxy.playNewUserSound();\n\t\tthis.setCloseTimer(5000);\n\n\t\tthis.onClosePopupHandler = this.onClosePopup.bind(this);\n\t\tEventEmitter.subscribe(EventType.dialog.closePopup, this.onClosePopupHandler);\n\t},\n\tbeforeUnmount()\n\t{\n\t\tEventEmitter.unsubscribe(EventType.dialog.closePopup, this.onClosePopupHandler);\n\t},\n\tmethods:\n\t{\n\t\tonClick()\n\t\t{\n\t\t\tthis.$emit('click');\n\t\t\tthis.$emit('close');\n\t\t},\n\t\tonMouseOver()\n\t\t{\n\t\t\tclearTimeout(this.closeTimeout);\n\t\t},\n\t\tonMouseLeave()\n\t\t{\n\t\t\tthis.setCloseTimer(2000);\n\t\t},\n\t\tsetCloseTimer(time: number)\n\t\t{\n\t\t\tthis.closeTimeout = setTimeout(() => {\n\t\t\t\tthis.$emit('close');\n\t\t\t}, time);\n\t\t},\n\t\tonClosePopup()\n\t\t{\n\t\t\tthis.$emit('close');\n\t\t}\n\t},\n\t// language=Vue\n\ttemplate: `\n\t\t<Transition name=\"bx-im-recent-new-user-popup\">\n\t\t\t<div @click=\"onClick\" @mouseover=\"onMouseOver\" @mouseleave=\"onMouseLeave\" class=\"bx-im-recent-new-user-popup\">\n\t\t\t\t<div class=\"bx-im-recent-new-user-popup-title\">{{ title }}</div>\n\t\t\t\t<div class=\"bx-im-recent-new-user-popup-text\">{{ text }}</div>\n\t\t\t</div>\n\t\t</Transition>\n\t`\n};","import 'main.date';\nimport {PopupManager} from 'main.popup';\nimport {EventEmitter} from 'main.core.events';\nimport {MessageStatus, ChatTypes, RecentSettings, EventType, AvatarSize, OpenTarget} from 'im.v2.const';\nimport {Avatar, ChatTitle} from 'im.v2.component.old-chat-embedding.elements';\n\nimport {NewUserPopup} from './new-user-popup';\n\ntype RecentListItem = {\n\tdialogId: number,\n\tmessage: {\n\t\tid: number,\n\t\ttext: string,\n\t\tdate: string,\n\t\tsenderId: number,\n\t\tstatus: MessageStatus.received | MessageStatus.delivered | MessageStatus.error\n\t},\n\tdraft: {\n\t\ttext: string,\n\t\tdate: Date | null,\n\t},\n\tunread: boolean,\n\tpinned: boolean,\n\tliked: boolean,\n\tinvitation: {\n\t\tisActive: boolean,\n\t\toriginator: number,\n\t\tcanResend: boolean\n\t}\n}\n\n// @vue/component\nexport const RecentItem = {\n\tname: 'RecentItem',\n\tcomponents: {Avatar, ChatTitle, NewUserPopup},\n\tprops: {\n\t\titem: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tcompactMode: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t},\n\t\tisVisibleOnScreen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true\n\t\t}\n\t},\n\tdata()\n\t{\n\t\treturn {\n\t\t\tshowNewUserPopup: false\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t\tformattedDate(): string\n\t\t{\n\t\t\tif (this.needsBirthdayPlaceholder)\n\t\t\t{\n\t\t\t\treturn this.$Bitrix.Loc.getMessage('IM_RECENT_BIRTHDAY_DATE');\n\t\t\t}\n\n\t\t\treturn this.formatDate(this.item.message.date);\n\t\t},\n\n\t\tmessageText(): string\n\t\t{\n\t\t\tif (!this.item.message || !this.item.message.text)\n\t\t\t{\n\t\t\t\treturn this.isUser ? this.$store.getters['users/getPosition'](this.item.dialogId) : this.hiddenMessageText;\n\t\t\t}\n\n\t\t\treturn this.$store.getters['recent/getItemText'](this.item.dialogId);\n\t\t},\n\n\t\thiddenMessageText(): string\n\t\t{\n\t\t\tif (this.isUser)\n\t\t\t{\n\t\t\t\treturn this.$store.getters['users/getPosition'](this.item.dialogId);\n\t\t\t}\n\n\t\t\tif (this.dialog.type === ChatTypes.open)\n\t\t\t{\n\t\t\t\treturn this.$Bitrix.Loc.getMessage('IM_RECENT_CHAT_TYPE_OPEN');\n\t\t\t}\n\n\t\t\treturn this.$Bitrix.Loc.getMessage('IM_RECENT_CHAT_TYPE_GROUP');\n\t\t},\n\n\t\tstatusIcon(): string\n\t\t{\n\t\t\tif (!this.isLastMessageAuthor || this.isBot || this.needsBirthdayPlaceholder || !this.item.message)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tif (this.isSelfChat)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tif (this.item.message.status === MessageStatus.error)\n\t\t\t{\n\t\t\t\treturn 'error';\n\t\t\t}\n\n\t\t\tif (this.item.liked)\n\t\t\t{\n\t\t\t\treturn 'like';\n\t\t\t}\n\n\t\t\tif (this.item.message.status === MessageStatus.delivered)\n\t\t\t{\n\t\t\t\treturn 'read';\n\t\t\t}\n\n\t\t\treturn 'unread';\n\t\t},\n\n\t\tformattedCounter()\n\t\t{\n\t\t\treturn this.dialog.counter > 99 ? '99+' : this.dialog.counter;\n\t\t},\n\n\t\tuser()\n\t\t{\n\t\t\treturn this.$store.getters['users/get'](this.item.dialogId, true);\n\t\t},\n\n\t\tdialog()\n\t\t{\n\t\t\treturn this.$store.getters['dialogues/get'](this.item.dialogId, true);\n\t\t},\n\n\t\tcurrentUserId()\n\t\t{\n\t\t\treturn this.$store.state.application.common.userId;\n\t\t},\n\n\t\tisUser()\n\t\t{\n\t\t\treturn this.dialog.type === ChatTypes.user;\n\t\t},\n\n\t\tisChat()\n\t\t{\n\t\t\treturn !this.isUser;\n\t\t},\n\n\t\tisSelfChat()\n\t\t{\n\t\t\treturn this.isUser && this.user.id === this.currentUserId;\n\t\t},\n\n\t\tisBot()\n\t\t{\n\t\t\tif (this.isUser)\n\t\t\t{\n\t\t\t\treturn this.user.bot;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tisLastMessageAuthor()\n\t\t{\n\t\t\tif (!this.item.message)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.currentUserId === this.item.message.senderId;\n\t\t},\n\n\t\tlastMessageAuthorAvatar()\n\t\t{\n\t\t\tconst authorDialog = this.$store.getters['dialogues/get'](this.item.message.senderId);\n\n\t\t\tif (!authorDialog)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn authorDialog.avatar;\n\t\t},\n\n\t\tlastMessageAuthorAvatarStyle()\n\t\t{\n\t\t\treturn {backgroundImage: `url('${this.lastMessageAuthorAvatar}')`};\n\t\t},\n\n\t\tisChatMuted()\n\t\t{\n\t\t\tif (this.isUser)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst isMuted = this.dialog.muteList.find(element => {\n\t\t\t\treturn element === this.currentUserId;\n\t\t\t});\n\n\t\t\treturn !!isMuted;\n\t\t},\n\n\t\tneedsBirthdayPlaceholder()\n\t\t{\n\t\t\tif (!this.isUser)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.$store.getters['recent/needsBirthdayPlaceholder'](this.item.dialogId);\n\t\t},\n\n\t\tshowBirthdays()\n\t\t{\n\t\t\treturn this.$store.getters['recent/getOption'](RecentSettings.showBirthday);\n\t\t},\n\n\t\tshowLastMessage()\n\t\t{\n\t\t\treturn this.$store.getters['recent/getOption'](RecentSettings.showLastMessage);\n\t\t},\n\n\t\tinvitation()\n\t\t{\n\t\t\treturn this.item.invitation;\n\t\t},\n\n\t\tnewUserPopupContainer()\n\t\t{\n\t\t\treturn `#popup-window-content-bx-im-recent-welcome-${this.item.dialogId}`;\n\t\t},\n\t},\n\twatch:\n\t{\n\t\tinvitation(newValue, oldValue)\n\t\t{\n\t\t\tif (!this.compactMode)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// invitation accepted, user logged in\n\t\t\tif (oldValue.isActive === true && newValue.isActive === false)\n\t\t\t{\n\t\t\t\tthis.openNewUserPopup();\n\t\t\t}\n\t\t}\n\t},\n\tmethods:\n\t{\n\t\topenNewUserPopup()\n\t\t{\n\t\t\tif (!this.isVisibleOnScreen || BX.MessengerProxy.isSliderOpened())\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.newUserPopup = this.getNewUserPopup();\n\t\t\tthis.newUserPopup.show();\n\t\t\tthis.showNewUserPopup = true;\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.newUserPopup.setOffset({\n\t\t\t\t\toffsetTop: -this.newUserPopup.popupContainer.offsetHeight + 1,\n\t\t\t\t\toffsetLeft: -this.newUserPopup.popupContainer.offsetWidth + 13\n\t\t\t\t});\n\t\t\t\tthis.newUserPopup.adjustPosition();\n\t\t\t});\n\t\t},\n\t\tgetNewUserPopup()\n\t\t{\n\t\t\treturn PopupManager.create({\n\t\t\t\tid: `bx-im-recent-welcome-${this.item.dialogId}`,\n\t\t\t\tbindElement: this.$refs.container,\n\t\t\t\tbindOptions: {forceBindPosition: true},\n\t\t\t\tclassName: 'bx-im-recent-welcome',\n\t\t\t\tcacheable: false,\n\t\t\t\tanimation: {\n\t\t\t\t\tshowClassName: 'bx-im-recent-new-user-popup-show',\n\t\t\t\t\tcloseClassName: 'bx-im-recent-new-user-popup-hide',\n\t\t\t\t\tcloseAnimationType: 'animation'\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tonNewUserPopupClick(event)\n\t\t{\n\t\t\tconst target = !this.compactMode || event.altKey? OpenTarget.current: OpenTarget.auto;\n\n\t\t\tEventEmitter.emit(EventType.dialog.open, {\n\t\t\t\t...this.item,\n\t\t\t\ttarget\n\t\t\t});\n\t\t},\n\t\tonNewUserPopupClose()\n\t\t{\n\t\t\tthis.newUserPopup.close();\n\t\t\tthis.newUserPopup = null;\n\t\t\tthis.showNewUserPopup = false;\n\t\t},\n\t\tformatDate(date)\n\t\t{\n\t\t\tconst format = [\n\t\t\t\t['today', 'H:i'],\n\t\t\t\t['d7', 'D'],\n\t\t\t\t['', 'd.m.Y']\n\t\t\t];\n\n\t\t\treturn BX.date.format(format, date);\n\t\t},\n\t},\n\t// language=Vue\n\ttemplate: `\n\t\t<div :data-id=\"item.dialogId\" class=\"bx-im-recent-item-wrap\">\n\t\t<div v-if=\"!compactMode\" :class=\"{'bx-im-recent-item-no-text': !showLastMessage, 'bx-im-recent-item-pinned': item.pinned}\" class=\"bx-im-recent-item\">\n\t\t\t<div class=\"bx-im-recent-avatar-wrap\">\n\t\t\t\t<Avatar :dialogId=\"item.dialogId\" :size=\"AvatarSize.L\" :withTyping=\"true\"/>\n\t\t\t</div>\n\t\t\t<div class=\"bx-im-recent-item-content\">\n\t\t\t\t<div class=\"bx-im-recent-item-content-header\">\n\t\t\t\t\t<ChatTitle :dialogId=\"item.dialogId\" :withMute=\"true\" />\n\t\t\t\t\t<div class=\"bx-im-recent-date\">\n\t\t\t\t\t\t<div v-if=\"statusIcon\" :class=\"'bx-im-recent-status-icon bx-im-recent-status-icon-' + statusIcon\"></div>\n\t\t\t\t\t\t{{ formattedDate }}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bx-im-recent-item-content-bottom\">\n\t\t\t\t\t<div class=\"bx-im-recent-message-text-wrap\">\n\t\t\t\t\t\t<!-- Message text -->\n\t\t\t\t\t\t<span class=\"bx-im-recent-message-text\">\n\t\t\t\t\t\t\t<template v-if=\"item.draft.text && dialog.counter === 0\">\n\t\t\t\t\t\t\t\t<span class=\"bx-im-recent-draft-prefix\">{{ $Bitrix.Loc.getMessage('IM_RECENT_MESSAGE_DRAFT_2', {'#TEXT#': ''}) }}</span>\n\t\t\t\t\t\t\t\t<span>{{ item.draft.text }}</span>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<template v-else-if=\"item.invitation.isActive\">\n\t\t\t\t\t\t\t\t<span class=\"bx-im-recent-message-text-invitation\">{{ $Bitrix.Loc.getMessage('IM_RECENT_INVITATION_NOT_ACCEPTED') }}</span>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<template v-else-if=\"needsBirthdayPlaceholder\">\n\t\t\t\t\t\t\t\t{{ $Bitrix.Loc.getMessage('IM_RECENT_BIRTHDAY') }}\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<template v-else-if=\"!showLastMessage\">\n\t\t\t\t\t\t\t\t{{ hiddenMessageText }}\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t\t\t<span v-if=\"isLastMessageAuthor\" class=\"bx-im-recent-last-message-author-icon-self\"></span>\n\t\t\t\t\t\t\t\t<template v-else-if=\"isChat && item.message.senderId\">\n\t\t\t\t\t\t\t\t\t<span v-if=\"lastMessageAuthorAvatar\" :style=\"lastMessageAuthorAvatarStyle\" class=\"bx-im-recent-last-message-author-icon-user\"></span>\n\t\t\t\t\t\t\t\t\t<span v-else class=\"bx-im-recent-last-message-author-icon-user bx-im-recent-last-message-author-icon-user-default\"></span>\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t<span>{{ messageText }}</span>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<!-- End message text -->\n\t\t\t\t\t</div>\n\t\t\t\t\t<div :class=\"{'bx-im-recent-counter-static-wrap-extended': dialog.counter > 99}\" class=\"bx-im-recent-counter-static-wrap\">\n\t\t\t\t\t\t<div v-if=\"item.unread || item.pinned || dialog.counter > 0\" class=\"bx-im-recent-counter-wrap\">\n\t\t\t\t\t\t\t<div v-if=\"item.pinned && dialog.counter === 0 && !item.unread\" class=\"bx-im-recent-pinned-icon\"></div>\n\t\t\t\t\t\t\t<div v-if=\"dialog.counter > 0 && !isSelfChat\" :class=\"{'bx-im-recent-counter-muted': isChatMuted}\" class=\"bx-im-recent-counter\">\n\t\t\t\t\t\t\t\t{{ formattedCounter }}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div v-else-if=\"item.unread\" :class=\"{'bx-im-recent-counter-muted': isChatMuted}\" class=\"bx-im-recent-counter bx-im-recent-counter-unread\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"compactMode\" class=\"bx-im-recent-item\" :class=\"{'bx-im-recent-item-pinned': item.pinned, 'bx-im-recent-item-no-counter': dialog.counter === 0}\" ref=\"container\">\n\t\t\t<div class=\"bx-im-recent-avatar-wrap\">\n\t\t\t\t<Avatar\n\t\t\t\t\t:dialogId=\"item.dialogId\"\n\t\t\t\t\t:size=\"AvatarSize.M\"\n\t\t\t\t\t:withStatus=\"false\"\n\t\t\t\t\t:withCounter=\"true\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<template v-if=\"showNewUserPopup\">\n\t\t\t\t<Teleport :to=\"newUserPopupContainer\">\n\t\t\t\t\t<NewUserPopup :title=\"dialog.name\" :text=\"$Bitrix.Loc.getMessage('IM_RECENT_NEW_USER_POPUP_TEXT')\" @click=\"onNewUserPopupClick\" @close=\"onNewUserPopupClose\"/>\n\t\t\t\t</Teleport>\n\t\t\t</template>\n\t\t</div>\n\t\t</div>\n\t`\n};","import {mapState} from 'ui.vue3.vuex';\nimport {MenuManager} from 'main.popup';\nimport {Loc} from 'main.core';\nimport {RecentCallStatus, DialogType, AvatarSize} from 'im.v2.const';\nimport {Utils} from 'im.v2.lib.utils';\nimport {Avatar} from 'im.v2.component.old-chat-embedding.elements';\n\n// @vue/component\nexport const ActiveCall = {\n\tname: 'ActiveCall',\n\tcomponents: {Avatar},\n\tprops: {\n\t\titem: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tcompactMode: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\temits: ['click', 'contextmenu'],\n\tcomputed: {\n\t\tRecentCallStatus: () => RecentCallStatus,\n\t\tAvatarSize: () => AvatarSize,\n\t\tchatData()\n\t\t{\n\t\t\treturn this.item.call.associatedEntity;\n\t\t},\n\t\tisUser()\n\t\t{\n\t\t\treturn this.chatData.advanced.chatType === DialogType.private;\n\t\t},\n\t\tisTabWithActiveCall()\n\t\t{\n\t\t\treturn this.getCallController().hasActiveCall();\n\t\t},\n\t\tavatarStyle()\n\t\t{\n\t\t\treturn {backgroundImage: `url(${this.chatData.avatar})`};\n\t\t},\n\t\tavatarText()\n\t\t{\n\t\t\treturn Utils.text.getFirstLetters(this.item.name);\n\t\t},\n\t\tisDarkTheme()\n\t\t{\n\t\t\treturn this.application.options.darkTheme;\n\t\t},\n\t\tformattedName()\n\t\t{\n\t\t\treturn Utils.text.htmlspecialcharsback(this.item.name);\n\t\t},\n\t\t...mapState({\n\t\t\tapplication: state => state.application\n\t\t})\n\t},\n\tmethods:\n\t{\n\t\tonJoinClick(event)\n\t\t{\n\t\t\tif (this.joinMenu)\n\t\t\t{\n\t\t\t\tthis.joinMenu.destroy();\n\t\t\t}\n\t\t\tthis.joinMenu = this.getJoinMenu(event);\n\t\t\tthis.joinMenu.show();\n\t\t},\n\t\tonHangupClick()\n\t\t{\n\t\t\tthis.getCallController().leaveCurrentCall();\n\t\t},\n\t\tonClick(event)\n\t\t{\n\t\t\tif (this.item.state === RecentCallStatus.joined)\n\t\t\t{\n\t\t\t\tthis.getCallController().unfold();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst item = this.$store.getters['recent/get'](this.item.dialogId);\n\t\t\tif (!item)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.$emit('click', {item, $event: event});\n\t\t},\n\t\tonRightClick()\n\t\t{\n\t\t\tconst item = this.$store.getters['recent/get'](this.item.dialogId);\n\t\t\tif (!item)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.$emit('contextmenu', {item, $event: event});\n\t\t},\n\t\tgetJoinMenu(event)\n\t\t{\n\t\t\treturn MenuManager.create({\n\t\t\t\tid: 'im-recent-active-call-join-menu',\n\t\t\t\tbindElement: event.target,\n\t\t\t\tdarkMode: this.isDarkTheme,\n\t\t\t\tcacheable: false,\n\t\t\t\titems: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: Loc.getMessage('IM_RECENT_ACTIVE_CALL_JOIN_VIDEO'),\n\t\t\t\t\t\tonclick: function() {\n\t\t\t\t\t\t\tthis.getCallController().joinCall(this.item.call.id, true);\n\t\t\t\t\t\t\tthis.joinMenu.close();\n\t\t\t\t\t\t}.bind(this)\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: Loc.getMessage('IM_RECENT_ACTIVE_CALL_JOIN_AUDIO'),\n\t\t\t\t\t\tonclick: function() {\n\t\t\t\t\t\t\tthis.getCallController().joinCall(this.item.call.id, false);\n\t\t\t\t\t\t\tthis.joinMenu.close();\n\t\t\t\t\t\t}.bind(this)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t});\n\t\t},\n\t\tgetCallController()\n\t\t{\n\t\t\treturn BX.MessengerProxy.getCallController();\n\t\t}\n\t},\n\ttemplate: `\n\t\t<div :data-id=\"item.dialogId\" class=\"bx-im-recent-item-wrap\">\n\t\t<div v-if=\"!compactMode\" @click=\"onClick\" @click.right.prevent=\"onRightClick\" class=\"bx-im-recent-item bx-im-recent-active-call-item\">\n\t\t\t<div class=\"bx-im-recent-avatar-wrap\">\n\t\t\t\t<Avatar :dialogId=\"item.dialogId\" :size=\"AvatarSize.L\" />\n\t\t\t</div>\n\t\t\t<div class=\"bx-im-recent-item-content\">\n\t\t\t\t<!-- Waiting status -->\n\t\t\t\t<template v-if=\"item.state === RecentCallStatus.waiting\">\n\t\t\t\t\t<!-- 1-on-1 -->\n\t\t\t\t\t<div v-if=\"isUser\" class=\"bx-im-recent-active-call-waiting-content\">\n\t\t\t\t\t\t<div class=\"bx-im-recent-active-call-icon bx-im-recent-active-call-waiting-icon\"></div>\n\t\t\t\t\t\t<div class=\"bx-im-recent-active-call-waiting-title\">\n\t\t\t\t\t\t\t{{ formattedName }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Chat -->\n\t\t\t\t\t<div v-else>\n\t\t\t\t\t\t<div class=\"bx-im-recent-item-content-header\">\n\t\t\t\t\t\t\t<div class=\"bx-im-recent-active-call-icon bx-im-recent-active-call-waiting-icon\"></div>\n\t\t\t\t\t\t\t<span class=\"bx-im-recent-active-call-waiting-title\" :title=\"formattedName\">\n\t\t\t\t\t\t\t\t{{ formattedName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"bx-im-recent-item-content-bottom\">\n\t\t\t\t\t\t\t<div @click.stop=\"onJoinClick\" class=\"bx-im-recent-active-call-button bx-im-recent-active-call-join-button\">\n\t\t\t\t\t\t\t\t{{ $Bitrix.Loc.getMessage('IM_RECENT_ACTIVE_CALL_JOIN') }}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<!-- Joined status -->\n\t\t\t\t<template v-else-if=\"item.state === RecentCallStatus.joined\">\n\t\t\t\t\t<!-- 1-on-1 -->\n\t\t\t\t\t<div v-if=\"isUser || !isTabWithActiveCall\" class=\"bx-im-recent-active-call-joined-content\">\n\t\t\t\t\t\t<div class=\"bx-im-recent-active-call-icon bx-im-recent-active-call-joined-icon\"></div>\n\t\t\t\t\t\t<div class=\"bx-im-recent-active-call-joined-title\">\n\t\t\t\t\t\t\t{{ formattedName }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<!-- Chat -->\n\t\t\t\t\t<div v-else-if=\"!isUser && isTabWithActiveCall\">\n\t\t\t\t\t\t<div class=\"bx-im-recent-item-content-header\">\n\t\t\t\t\t\t\t<div class=\"bx-im-recent-active-call-icon bx-im-recent-active-call-joined-icon\"></div>\n\t\t\t\t\t\t\t<span class=\"bx-im-recent-active-call-joined-title\" :title=\"formattedName\">\n\t\t\t\t\t\t\t\t{{ formattedName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"bx-im-recent-item-content-bottom\">\n\t\t\t\t\t\t\t<div @click.stop=\"onHangupClick\" class=\"bx-im-recent-active-call-button bx-im-recent-active-call-hangup-button\">\n\t\t\t\t\t\t\t\t{{ $Bitrix.Loc.getMessage('IM_RECENT_ACTIVE_CALL_HANGUP') }}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"compactMode\" @click=\"onClick\" @click.right.prevent=\"onRightClick\" class=\"bx-im-recent-item bx-im-recent-active-call-item\">\n\t\t\t<div class=\"bx-im-recent-avatar-wrap\">\n\t\t\t\t<Avatar :dialogId=\"item.dialogId\" :size=\"AvatarSize.M\" />\n\t\t\t\t<div class=\"bx-im-recent-active-call-compact-icon-container\">\n\t\t\t\t\t<div v-if=\"item.state === RecentCallStatus.waiting\" class=\"bx-im-recent-active-call-icon bx-im-recent-active-call-waiting-icon\"></div>\n\t\t\t\t\t<div v-else-if=\"item.state === RecentCallStatus.joined\" class=\"bx-im-recent-active-call-icon bx-im-recent-active-call-joined-icon\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t</div>\n\t`\n};","import {Type} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\nimport {EventType, SettingsMap, RecentSettingsMap} from 'im.v2.const';\nimport {Logger} from 'im.v2.lib.logger';\nimport {Utils} from 'im.v2.lib.utils';\n\nexport class SettingsManager\n{\n\tstatic instance = null;\n\tstore: Object = null;\n\n\tstatic init($Bitrix): void\n\t{\n\t\tif (this.instance)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.instance = new this($Bitrix);\n\t}\n\n\tconstructor($Bitrix)\n\t{\n\t\tthis.store = $Bitrix.Data.get('controller').store;\n\t\tthis.initSettings();\n\n\t\tthis.onSettingsChangeHandler = this.onSettingsChange.bind(this);\n\t\tEventEmitter.subscribe(EventType.dialog.settingsChange, this.onSettingsChangeHandler);\n\n\t\tif (Utils.platform.isBitrixDesktop() && !Type.isUndefined(BX.desktop))\n\t\t{\n\t\t\tBX.desktop.addCustomEvent('bxSaveSettings', (settings) => {\n\t\t\t\tthis.onSettingsChangeHandler({data: settings});\n\t\t\t});\n\t\t}\n\t}\n\n\tinitSettings()\n\t{\n\t\tif (!BX.MessengerProxy)\n\t\t{\n\t\t\tconsole.error('Im.RecentList: SettingsManager: BX.MessengerProxy is not available');\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.initGeneralSettings();\n\t\tthis.initRecentSettings();\n\t}\n\n\tinitGeneralSettings()\n\t{\n\t\tconst initialSettings = {};\n\t\tObject.entries(SettingsMap).forEach(([oldName, name]) => {\n\t\t\tinitialSettings[name] = BX.MessengerProxy.getOption(oldName);\n\t\t});\n\n\t\tthis.store.dispatch('application/setOptions', initialSettings);\n\t}\n\n\tinitRecentSettings()\n\t{\n\t\tconst initialSettings = {};\n\t\tObject.entries(RecentSettingsMap).forEach(([oldName, name]) => {\n\t\t\tinitialSettings[name] = BX.MessengerProxy.getOption(oldName);\n\t\t});\n\n\t\tthis.store.dispatch('recent/setOptions', initialSettings);\n\t}\n\n\tonSettingsChange({data: event})\n\t{\n\t\tLogger.warn('Im.RecentList: SettingsChange', event);\n\t\tconst generalSettings = {};\n\t\tconst recentSettings = {};\n\t\tObject.entries(event).forEach(([name, value]) => {\n\t\t\tif (Object.keys(RecentSettingsMap).includes(name))\n\t\t\t{\n\t\t\t\trecentSettings[RecentSettingsMap[name]] = value;\n\t\t\t}\n\n\t\t\tif (Object.keys(SettingsMap).includes(name))\n\t\t\t{\n\t\t\t\tgeneralSettings[SettingsMap[name]] = value;\n\t\t\t}\n\t\t});\n\n\t\tthis.store.dispatch('application/setOptions', generalSettings);\n\t\tthis.store.dispatch('recent/setOptions', recentSettings);\n\t}\n\n\tdestroy()\n\t{\n\t\tEventEmitter.unsubscribe(EventType.dialog.settingsChange, this.onSettingsChangeHandler);\n\t}\n}","import {EventEmitter} from 'main.core.events';\nimport {Type} from 'main.core';\nimport {Utils} from 'im.v2.lib.utils';\n\nexport class BroadcastManager extends EventEmitter\n{\n\tstatic instance = null;\n\tstatic channelName = 'im-recent';\n\tstatic eventNamespace = 'BX.Messenger.v2.Recent.BroadcastManager';\n\tstatic events = {\n\t\trecentListUpdate: 'recentListUpdate'\n\t};\n\n\tstatic getInstance()\n\t{\n\t\tif (!this.instance)\n\t\t{\n\t\t\tthis.instance = new this();\n\t\t}\n\n\t\treturn this.instance;\n\t}\n\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace(BroadcastManager.eventNamespace);\n\t\tthis.init();\n\t}\n\n\tisSupported()\n\t{\n\t\treturn !Type.isUndefined(window.BroadcastChannel) && !Utils.platform.isBitrixDesktop();\n\t}\n\n\tinit()\n\t{\n\t\tif (!this.isSupported())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.channel = new BroadcastChannel(BroadcastManager.channelName);\n\t\tthis.channel.addEventListener('message', ({data: {type, data}}) => {\n\t\t\tthis.emit(type, data);\n\t\t});\n\t}\n\n\tsendRecentList(recentData: Object)\n\t{\n\t\tif (!this.isSupported())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.channel.postMessage({\n\t\t\ttype: BroadcastManager.events.recentListUpdate,\n\t\t\tdata: recentData\n\t\t});\n\t}\n}","import {EventEmitter} from 'main.core.events';\nimport {RecentCallStatus} from 'im.v2.const';\n\nexport class CallManager\n{\n\tstatic instance = null;\n\tstore: Object = null;\n\n\tstatic init($Bitrix): void\n\t{\n\t\tif (this.instance)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.instance = new this($Bitrix);\n\t}\n\n\tconstructor($Bitrix)\n\t{\n\t\tthis.store = $Bitrix.Data.get('controller').store;\n\n\t\tthis.onCallCreatedHandler = this.onCallCreated.bind(this);\n\t\tEventEmitter.subscribe('CallEvents::callCreated', this.onCallCreatedHandler);\n\t}\n\n\tonCallCreated(event)\n\t{\n\t\tconst {call} = event.getData()[0];\n\t\tcall.addEventListener(BX.Call.Event.onJoin, this.onCallJoin.bind(this));\n\t\tcall.addEventListener(BX.Call.Event.onLeave, this.onCallLeave.bind(this));\n\t\tcall.addEventListener(BX.Call.Event.onDestroy, this.onCallDestroy.bind(this));\n\n\t\tthis.store.dispatch('recent/addActiveCall', {\n\t\t\tdialogId: call.associatedEntity.id,\n\t\t\tname: call.associatedEntity.name,\n\t\t\tcall: call,\n\t\t\tstate: RecentCallStatus.waiting\n\t\t});\n\t}\n\n\tonCallJoin(event)\n\t{\n\t\tthis.store.dispatch('recent/updateActiveCall', {\n\t\t\tdialogId: event.call.associatedEntity.id,\n\t\t\tfields: {\n\t\t\t\tstate: RecentCallStatus.joined\n\t\t\t}\n\t\t});\n\t}\n\n\tonCallLeave(event)\n\t{\n\t\tthis.store.dispatch('recent/updateActiveCall', {\n\t\t\tdialogId: event.call.associatedEntity.id,\n\t\t\tfields: {\n\t\t\t\tstate: RecentCallStatus.waiting\n\t\t\t}\n\t\t});\n\t}\n\n\tonCallDestroy(event)\n\t{\n\t\tthis.store.dispatch('recent/deleteActiveCall', {\n\t\t\tdialogId: event.call.associatedEntity.id\n\t\t});\n\t}\n\n\tdestroy()\n\t{\n\t\tEventEmitter.unsubscribe(window, 'CallEvents::callCreated', this.onCallCreatedHandler);\n\t}\n}","import {EventEmitter} from 'main.core.events';\nimport {EventType} from 'im.v2.const';\n\nexport class DraftManager\n{\n\tstatic instance = null;\n\tstore: Object = null;\n\n\tstatic init($Bitrix): void\n\t{\n\t\tif (this.instance)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.instance = new this($Bitrix);\n\t}\n\n\tconstructor($Bitrix)\n\t{\n\t\tthis.store = $Bitrix.Data.get('controller').store;\n\n\t\tthis.initDraftHistory();\n\n\t\tthis.onSetDraftHandler = this.onSetDraft.bind(this);\n\t\tEventEmitter.subscribe(EventType.recent.setDraftMessage, this.onSetDraftHandler);\n\t}\n\n\tinitDraftHistory()\n\t{\n\t\tconst history = BX.MessengerProxy.getTextareaHistory();\n\t\tObject.entries(history).forEach(([dialogId, text]) => {\n\t\t\tthis.setDraftMessage(dialogId, text);\n\t\t});\n\t}\n\n\tonSetDraft({data: {dialogId, text}})\n\t{\n\t\tthis.setDraftMessage(dialogId, text);\n\t}\n\n\tsetDraftMessage(dialogId, text)\n\t{\n\t\tthis.store.dispatch('recent/draft', {\n\t\t\tid: dialogId,\n\t\t\ttext\n\t\t});\n\t}\n\n\tdestroy()\n\t{\n\t\tEventEmitter.unsubscribe(EventType.recent.setDraftMessage, this.onSetDraftHandler);\n\t}\n}","import {Loc} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\nimport {EventType} from 'im.v2.const';\n\nexport class EventHandler\n{\n\tstatic instance = null;\n\tstore: Object = null;\n\n\tstatic init($Bitrix): void\n\t{\n\t\tif (this.instance)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.instance = new this($Bitrix);\n\t}\n\n\tconstructor($Bitrix)\n\t{\n\t\tthis.store = $Bitrix.Data.get('controller').store;\n\n\t\tthis.subscribeToEvents();\n\t}\n\n\tsubscribeToEvents()\n\t{\n\t\tthis.onSetCounterHandler = this.onSetCounter.bind(this);\n\t\tthis.onSetMessageHandler = this.onSetMessage.bind(this);\n\t\tthis.onHideChatHandler = this.onHideChat.bind(this);\n\t\tthis.onLeaveChatHandler = this.onLeaveChat.bind(this);\n\t\tthis.onClearLikeHandler = this.onClearLike.bind(this);\n\t\tthis.onClearHistoryHandler = this.onClearHistory.bind(this);\n\n\t\tEventEmitter.subscribe(EventType.recent.setCounter, this.onSetCounterHandler);\n\t\tEventEmitter.subscribe(EventType.recent.setMessage, this.onSetMessageHandler);\n\t\tEventEmitter.subscribe(EventType.recent.hideChat, this.onHideChatHandler);\n\t\tEventEmitter.subscribe(EventType.recent.leaveChat, this.onLeaveChatHandler);\n\t\tEventEmitter.subscribe(EventType.recent.clearLike, this.onClearLikeHandler);\n\t\tEventEmitter.subscribe(EventType.dialog.clearHistory, this.onClearHistoryHandler);\n\t}\n\n\tonSetCounter({data: {dialogId, counter}})\n\t{\n\t\tconst recentItem = this.store.getters['recent/get'](dialogId);\n\t\tconst dialog = this.store.getters['dialogues/get'](dialogId);\n\t\tif (!recentItem || !dialog)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.store.dispatch('dialogues/update', {\n\t\t\tdialogId: dialogId,\n\t\t\tfields: {\n\t\t\t\tcounter: counter\n\t\t\t}\n\t\t});\n\t}\n\n\tonSetMessage({data: {id, dialogId, text, date}})\n\t{\n\t\tconst recentItem = this.store.getters['recent/get'](dialogId);\n\t\tconst dialog = this.store.getters['dialogues/get'](dialogId);\n\t\tif (!recentItem || !dialog)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (id && !id.toString().startsWith('temp') && id !== recentItem.message.id)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.store.dispatch('recent/update', {\n\t\t\tid: dialogId,\n\t\t\tfields: {\n\t\t\t\tmessage: {\n\t\t\t\t\tid: id || 0,\n\t\t\t\t\ttext: text,\n\t\t\t\t\tsenderId: this.getCurrentUserId(),\n\t\t\t\t\tstatus: recentItem.message.status,\n\t\t\t\t\tdate: date || recentItem.message.date,\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tonHideChat({data: {dialogId}})\n\t{\n\t\tconst recentItem = this.store.getters['recent/get'](dialogId);\n\t\tif (!recentItem)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.store.dispatch('recent/delete', {\n\t\t\tid: dialogId\n\t\t});\n\t}\n\n\tonLeaveChat({data: {dialogId}})\n\t{\n\t\tthis.onHideChat({data: {dialogId}});\n\t}\n\n\tonClearLike({data: {dialogId}})\n\t{\n\t\tconst recentItem = this.store.getters['recent/get'](dialogId);\n\t\tif (!recentItem || !recentItem.liked)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.store.dispatch('recent/like', {\n\t\t\tid: dialogId,\n\t\t\tliked: false\n\t\t});\n\t}\n\n\tonClearHistory({data: {dialogId}})\n\t{\n\t\tconst recentItem = this.store.getters['recent/get'](dialogId);\n\t\tif (!recentItem)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.store.dispatch('recent/update', {\n\t\t\tid: dialogId,\n\t\t\tfields: {\n\t\t\t\tmessage: {\n\t\t\t\t\t...recentItem.message,\n\t\t\t\t\ttext: Loc.getMessage('IM_RECENT_DELETED_MESSAGE'),\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetCurrentUserId(): number\n\t{\n\t\treturn this.store.state.application.common.userId;\n\t}\n\n\tdestroy()\n\t{\n\t\tthis.unsubscribeEvents();\n\t}\n\n\tunsubscribeEvents()\n\t{\n\t\tEventEmitter.unsubscribe(EventType.recent.setCounter, this.onSetCounterHandler);\n\t\tEventEmitter.unsubscribe(EventType.recent.setMessage, this.onSetMessageHandler);\n\t\tEventEmitter.unsubscribe(EventType.recent.hideChat, this.onHideChatHandler);\n\t\tEventEmitter.unsubscribe(EventType.recent.leaveChat, this.onLeaveChatHandler);\n\t\tEventEmitter.unsubscribe(EventType.recent.clearLike, this.onClearLikeHandler);\n\t}\n}","import 'ui.design-tokens';\n\nimport {EventEmitter} from 'main.core.events';\nimport {mapState} from 'ui.vue3.vuex';\n\nimport {ChatTypes, EventType, RecentSettings, OpenTarget} from 'im.v2.const';\nimport {Utils} from 'im.v2.lib.utils';\nimport {RecentService} from 'im.v2.provider.service';\nimport {RecentLoadingState} from 'im.v2.component.old-chat-embedding.elements';\nimport {RecentMenu} from 'im.v2.lib.old-chat-embedding.menu';\n\nimport {RecentItem} from './components/recent-item';\nimport {ActiveCall} from './components/active-call';\n\nimport {SettingsManager} from './settings-manager';\nimport {BroadcastManager} from './broadcast-manager';\nimport {CallManager} from './call-manager';\nimport {DraftManager} from './draft-manager';\nimport {EventHandler} from './event-handler';\n\nimport './css/recent-list.css';\n\n// @vue/component\nexport const RecentList = {\n\tname: 'RecentList',\n\tcomponents: {LoadingState: RecentLoadingState, RecentItem, ActiveCall},\n\tdirectives:\n\t{\n\t\t'recent-list-observer':\n\t\t{\n\t\t\tmounted(element, binding)\n\t\t\t{\n\t\t\t\tbinding.instance.observer.observe(element);\n\t\t\t}\n\t\t}\n\t},\n\tprops: {\n\t\tcompactMode: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\tdata()\n\t{\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tvisibleElements: new Set()\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tcollection()\n\t\t{\n\t\t\treturn this.$store.getters['recent/getCollection'];\n\t\t},\n\t\tsections()\n\t\t{\n\t\t\treturn [this.pinnedItems, this.generalItems];\n\t\t},\n\t\tpreparedItems()\n\t\t{\n\t\t\tconst filteredCollection = this.collection.filter(item => {\n\t\t\t\tif (!this.showBirthdays && item.options.birthdayPlaceholder)\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'](item.dialogId, true);\n\t\t\t\tconst isUser = dialog.type === ChatTypes.user;\n\t\t\t\tconst hasBirthday = isUser && this.showBirthdays && this.$store.getters['users/hasBirthday'](item.dialogId);\n\t\t\t\tif (!this.showInvited && item.options.defaultUserRecord && !hasBirthday)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\treturn [...filteredCollection].sort((a, b) => {\n\t\t\t\tconst firstDate = this.$store.getters['recent/getMessageDate'](a.dialogId);\n\t\t\t\tconst secondDate = this.$store.getters['recent/getMessageDate'](b.dialogId);\n\n\t\t\t\treturn secondDate - firstDate;\n\t\t\t});\n\t\t},\n\t\tpinnedItems()\n\t\t{\n\t\t\treturn this.preparedItems.filter(item => {\n\t\t\t\treturn item.pinned === true;\n\t\t\t});\n\t\t},\n\t\tgeneralItems()\n\t\t{\n\t\t\treturn this.preparedItems.filter(item => {\n\t\t\t\treturn item.pinned === false;\n\t\t\t});\n\t\t},\n\t\tisDarkTheme()\n\t\t{\n\t\t\treturn this.application.options.darkTheme;\n\t\t},\n\t\tshowBirthdays()\n\t\t{\n\t\t\treturn this.$store.getters['recent/getOption'](RecentSettings.showBirthday);\n\t\t},\n\t\tshowInvited()\n\t\t{\n\t\t\treturn this.$store.getters['recent/getOption'](RecentSettings.showInvited);\n\t\t},\n\t\ttransitionType()\n\t\t{\n\t\t\tif (this.compactMode)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tif (this.isLoading)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn 'bx-messenger-recent-transition';\n\t\t},\n\t\t...mapState({\n\t\t\tactiveCalls: state => state.recent.activeCalls,\n\t\t\tapplication: state => state.application\n\t\t})\n\t},\n\tcreated()\n\t{\n\t\tthis.recentService = RecentService.getInstance(this.$Bitrix);\n\t\tthis.contextMenuManager = new RecentMenu(this.$Bitrix);\n\n\t\tCallManager.init(this.$Bitrix);\n\t\tEventHandler.init(this.$Bitrix);\n\t\tSettingsManager.init(this.$Bitrix);\n\t\tthis.initBroadcastManager();\n\t\tthis.initObserver();\n\n\t\tthis.managePreloadedList();\n\t\tthis.manageChatOptions();\n\t},\n\tmounted()\n\t{\n\t\tthis.isLoading = true;\n\t\tthis.recentService.loadFirstPage().then(() => {\n\t\t\tthis.isLoading = false;\n\t\t\tDraftManager.init(this.$Bitrix);\n\t\t});\n\t\tthis.initBirthdayCheck();\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.contextMenuManager.destroy();\n\t\tthis.clearBirthdayCheck();\n\t\tthis.destroyBroadcastManager();\n\t},\n\tmethods:\n\t{\n\t\tonScroll(event)\n\t\t{\n\t\t\tthis.contextMenuManager.close();\n\t\t\tif (!this.oneScreenRemaining(event) || !this.recentService.hasMoreItemsToLoad)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tthis.recentService.loadNextPage().then(() => {\n\t\t\t\tthis.isLoading = false;\n\t\t\t});\n\t\t},\n\n\t\tonClick(item, event)\n\t\t{\n\t\t\tconst target = !this.compactMode || event.altKey? OpenTarget.current: OpenTarget.auto;\n\n\t\t\tEventEmitter.emit(EventType.dialog.open, {\n\t\t\t\t...item,\n\t\t\t\tchat: this.$store.getters['dialogues/get'](item.dialogId, true),\n\t\t\t\tuser: this.$store.getters['users/get'](item.dialogId, true),\n\t\t\t\ttarget\n\t\t\t});\n\t\t},\n\n\t\tonRightClick(item, event)\n\t\t{\n\t\t\tif (event.altKey && event.shiftKey)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst target = !this.compactMode || event.altKey? OpenTarget.current: OpenTarget.auto;\n\t\t\tconst context = {\n\t\t\t\t...item,\n\t\t\t\tcompactMode: this.compactMode,\n\t\t\t\ttarget\n\t\t\t};\n\n\t\t\tthis.contextMenuManager.openMenu(context, event.currentTarget);\n\n\t\t\tevent.preventDefault();\n\t\t},\n\n\t\tonCallClick({item, $event})\n\t\t{\n\t\t\tthis.onClick(item, $event);\n\t\t},\n\n\t\tonCallRightClick({item, $event})\n\t\t{\n\t\t\tthis.onRightClick(item, $event);\n\t\t},\n\n\t\toneScreenRemaining(event)\n\t\t{\n\t\t\treturn event.target.scrollTop + event.target.clientHeight >= event.target.scrollHeight - event.target.clientHeight;\n\t\t},\n\n\t\tinitObserver()\n\t\t{\n\t\t\tthis.observer = new IntersectionObserver(((entries) => {\n\t\t\t\tentries.forEach(entry => {\n\t\t\t\t\tif (entry.isIntersecting && entry.intersectionRatio === 1)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.visibleElements.add(entry.target.dataset.id);\n\t\t\t\t\t}\n\t\t\t\t\telse if (!entry.isIntersecting)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.visibleElements.delete(entry.target.dataset.id);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}), {threshold: [0, 1]});\n\t\t},\n\n\t\tinitBroadcastManager()\n\t\t{\n\t\t\tthis.onRecentListUpdate = (event) => {\n\t\t\t\tthis.recentService.setPreloadedData(event.data);\n\t\t\t};\n\t\t\tthis.broadcastManager = BroadcastManager.getInstance();\n\t\t\tthis.broadcastManager.subscribe(BroadcastManager.events.recentListUpdate, this.onRecentListUpdate);\n\t\t},\n\n\t\tdestroyBroadcastManager()\n\t\t{\n\t\t\tthis.broadcastManager = BroadcastManager.getInstance();\n\t\t\tthis.broadcastManager.unsubscribe(BroadcastManager.events.recentListUpdate, this.onRecentListUpdate);\n\t\t},\n\n\t\tinitBirthdayCheck()\n\t\t{\n\t\t\tconst fourHours = 60000*60*4;\n\t\t\tconst day = 60000*60*24;\n\t\t\tthis.birthdayCheckTimeout = setTimeout(() => {\n\t\t\t\tthis.recentService.loadFirstPage({ignorePreloadedItems: true});\n\t\t\t\tthis.birthdayCheckInterval = setInterval(() => {\n\t\t\t\t\tthis.recentService.loadFirstPage({ignorePreloadedItems: true});\n\t\t\t\t}, day);\n\t\t\t}, Utils.date.getTimeToNextMidnight() + fourHours);\n\t\t},\n\n\t\tclearBirthdayCheck()\n\t\t{\n\t\t\tclearTimeout(this.birthdayCheckTimeout);\n\t\t\tclearInterval(this.birthdayCheckInterval);\n\t\t},\n\n\t\tmanagePreloadedList()\n\t\t{\n\t\t\tconst {preloadedList} = this.$Bitrix.Application.get().params;\n\t\t\tif (!preloadedList)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.recentService.setPreloadedData(preloadedList);\n\t\t\tthis.broadcastManager.sendRecentList(preloadedList);\n\t\t},\n\n\t\tmanageChatOptions()\n\t\t{\n\t\t\tconst {chatOptions} = this.$Bitrix.Application.get().params;\n\t\t\tif (!chatOptions)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.$store.dispatch('dialogues/setChatOptions', chatOptions);\n\t\t}\n\t},\n\ttemplate: `\n\t\t<div @scroll=\"onScroll\" class=\"bx-messenger-recent-list\" :class=\"{'bx-messenger-recent-compact': compactMode}\" >\n\t\t\t<transition-group :name=\"transitionType\">\n\t\t\t\t<ActiveCall\n\t\t\t\t\tv-for=\"activeCall in activeCalls\"\n\t\t\t\t\t:key=\"'call-' + activeCall.dialogId\"\n\t\t\t\t\t:item=\"activeCall\"\n\t\t\t\t\t:compactMode=\"compactMode\"\n\t\t\t\t\t@click=\"onCallClick\"\n\t\t\t\t\t@click.right=\"onCallRightClick\"\n\t\t\t\t/>\n\t\t\t\t<template v-for=\"section in sections\">\n\t\t\t\t\t<RecentItem\n\t\t\t\t\t\tv-for=\"item in section\"\n\t\t\t\t\t\t:key=\"item.dialogId\"\n\t\t\t\t\t\t:item=\"item\"\n\t\t\t\t\t\t:compactMode=\"compactMode\"\n\t\t\t\t\t\t:isVisibleOnScreen=\"visibleElements.has(item.dialogId)\"\n\t\t\t\t\t\tv-recent-list-observer\n\t\t\t\t\t\t@click=\"onClick(item, $event)\"\n\t\t\t\t\t\t@click.right=\"onRightClick(item, $event)\"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\t\t\t</transition-group>\n\t\t\t<LoadingState v-if=\"isLoading\" :compactMode=\"compactMode\" />\n\t\t\t<template v-if=\"collection.length === 0\">\n\t\t\t\t<div class=\"bx-im-recent-empty\">{{ $Bitrix.Loc.getMessage('IM_RECENT_EMPTY') }}</div>\n\t\t\t</template>\n\t\t</div>\n\t`\n};"],"names":["NewUserPopup","name","props","title","type","String","required","text","emits","mounted","BX","MessengerProxy","playNewUserSound","setCloseTimer","onClosePopupHandler","onClosePopup","bind","EventEmitter","subscribe","EventType","dialog","closePopup","beforeUnmount","unsubscribe","methods","onClick","$emit","onMouseOver","clearTimeout","closeTimeout","onMouseLeave","time","setTimeout","template","RecentItem","components","Avatar","ChatTitle","item","Object","compactMode","Boolean","default","isVisibleOnScreen","data","showNewUserPopup","computed","AvatarSize","formattedDate","needsBirthdayPlaceholder","$Bitrix","Loc","getMessage","formatDate","message","date","messageText","isUser","$store","getters","dialogId","hiddenMessageText","ChatTypes","open","statusIcon","isLastMessageAuthor","isBot","isSelfChat","status","MessageStatus","error","liked","delivered","formattedCounter","counter","user","currentUserId","state","application","common","userId","isChat","id","bot","senderId","lastMessageAuthorAvatar","authorDialog","avatar","lastMessageAuthorAvatarStyle","backgroundImage","isChatMuted","isMuted","muteList","find","element","showBirthdays","RecentSettings","showBirthday","showLastMessage","invitation","newUserPopupContainer","watch","newValue","oldValue","isActive","openNewUserPopup","isSliderOpened","newUserPopup","getNewUserPopup","show","$nextTick","setOffset","offsetTop","popupContainer","offsetHeight","offsetLeft","offsetWidth","adjustPosition","PopupManager","create","bindElement","$refs","container","bindOptions","forceBindPosition","className","cacheable","animation","showClassName","closeClassName","closeAnimationType","onNewUserPopupClick","event","target","altKey","OpenTarget","current","auto","emit","onNewUserPopupClose","close","format","ActiveCall","RecentCallStatus","chatData","call","associatedEntity","advanced","chatType","DialogType","private","isTabWithActiveCall","getCallController","hasActiveCall","avatarStyle","avatarText","Utils","getFirstLetters","isDarkTheme","options","darkTheme","formattedName","htmlspecialcharsback","mapState","onJoinClick","joinMenu","destroy","getJoinMenu","onHangupClick","leaveCurrentCall","joined","unfold","$event","onRightClick","MenuManager","darkMode","items","onclick","joinCall","SettingsManager","init","instance","constructor","store","Data","get","initSettings","onSettingsChangeHandler","onSettingsChange","settingsChange","platform","isBitrixDesktop","Type","isUndefined","desktop","addCustomEvent","settings","console","initGeneralSettings","initRecentSettings","initialSettings","entries","SettingsMap","forEach","oldName","getOption","dispatch","RecentSettingsMap","Logger","warn","generalSettings","recentSettings","value","keys","includes","BroadcastManager","getInstance","setEventNamespace","eventNamespace","isSupported","window","BroadcastChannel","channel","channelName","addEventListener","sendRecentList","recentData","postMessage","events","recentListUpdate","CallManager","onCallCreatedHandler","onCallCreated","getData","Call","Event","onJoin","onCallJoin","onLeave","onCallLeave","onDestroy","onCallDestroy","waiting","fields","DraftManager","initDraftHistory","onSetDraftHandler","onSetDraft","recent","setDraftMessage","history","getTextareaHistory","EventHandler","subscribeToEvents","onSetCounterHandler","onSetCounter","onSetMessageHandler","onSetMessage","onHideChatHandler","onHideChat","onLeaveChatHandler","onLeaveChat","onClearLikeHandler","onClearLike","onClearHistoryHandler","onClearHistory","setCounter","setMessage","hideChat","leaveChat","clearLike","clearHistory","recentItem","toString","startsWith","getCurrentUserId","unsubscribeEvents","RecentList","LoadingState","RecentLoadingState","directives","binding","observer","observe","isLoading","visibleElements","Set","collection","sections","pinnedItems","generalItems","preparedItems","filteredCollection","filter","birthdayPlaceholder","hasBirthday","showInvited","defaultUserRecord","sort","a","b","firstDate","secondDate","pinned","transitionType","activeCalls","created","recentService","RecentService","contextMenuManager","RecentMenu","initBroadcastManager","initObserver","managePreloadedList","manageChatOptions","loadFirstPage","then","initBirthdayCheck","clearBirthdayCheck","destroyBroadcastManager","onScroll","oneScreenRemaining","hasMoreItemsToLoad","loadNextPage","chat","shiftKey","context","openMenu","currentTarget","preventDefault","onCallClick","onCallRightClick","scrollTop","clientHeight","scrollHeight","IntersectionObserver","entry","isIntersecting","intersectionRatio","add","dataset","delete","threshold","onRecentListUpdate","setPreloadedData","broadcastManager","fourHours","day","birthdayCheckTimeout","ignorePreloadedItems","birthdayCheckInterval","setInterval","getTimeToNextMidnight","clearInterval","preloadedList","Application","params","chatOptions"],"mappings":"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"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.25 |
proxy
|
phpinfo
|
Settings