403Webshell
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/cvetdv.ru/bitrix/js/im/v2/model/dist/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/js/im/v2/model/dist/registry.bundle.js.map
{"version":3,"file":"registry.bundle.js","sources":["../src/utils/format.js","../src/application/nested-modules/settings/format/format-functions.js","../src/application/nested-modules/settings/format/field-config.js","../src/utils/validate.js","../src/application/nested-modules/settings/settings.js","../src/application/nested-modules/tariff-restrictions/format/field-config.js","../src/application/nested-modules/tariff-restrictions/tariff-restrictions.js","../src/application/application.js","../src/messages/format/format-functions.js","../src/messages/format/field-config.js","../src/messages/nested-modules/pin.js","../src/messages/nested-modules/reactions.js","../src/messages/nested-modules/comments/format/field-config.js","../src/messages/nested-modules/comments/comments.js","../src/messages/nested-modules/select.js","../src/messages/nested-modules/anchors/helpers.js","../src/messages/nested-modules/anchors/anchors.js","../src/messages/messages.js","../src/chats/format/format-functions.js","../src/chats/format/field-config.js","../src/chats/nested-modules/auto-delete/format/fields-config.js","../src/chats/nested-modules/auto-delete/auto-delete.js","../src/chats/nested-modules/collabs/format/field-config.js","../src/chats/nested-modules/collabs/collabs.js","../src/chats/nested-modules/input-actions.js","../src/chats/chats.js","../src/users/format/format-functions.js","../src/users/format/field-config.js","../src/users/nested-modules/bots.js","../src/users/users.js","../src/files/files.js","../src/recent/format/format-functions.js","../src/recent/format/field-config.js","../src/recent/nested-modules/calls.js","../src/recent/recent.js","../src/notifications/notifications.js","../src/sidebar/nested-modules/links/format/field-config.js","../src/sidebar/nested-modules/links/links.js","../src/sidebar/nested-modules/favorites/format/field-config.js","../src/sidebar/nested-modules/favorites/favorites.js","../src/sidebar/nested-modules/members.js","../src/sidebar/nested-modules/message-search/message-search.js","../src/sidebar/nested-modules/tasks/format/field-config.js","../src/sidebar/nested-modules/tasks/tasks.js","../src/sidebar/nested-modules/meeting/format/field-config.js","../src/sidebar/nested-modules/meeting/meeting.js","../src/sidebar/nested-modules/files/format/field-config.js","../src/sidebar/nested-modules/files/files.js","../src/sidebar/nested-modules/multidialog/format/field-config.js","../src/sidebar/nested-modules/multidialog/multidialog.js","../src/sidebar/sidebar.js","../src/market/market.js","../src/counters/counters.js","../src/copilot/format/field-config.js","../src/copilot/nested-modules/chats/field-config.js","../src/copilot/nested-modules/chats/chats.js","../src/copilot/nested-modules/messages/field-config.js","../src/copilot/nested-modules/messages/messages.js","../src/copilot/nested-modules/roles/field-config.js","../src/copilot/nested-modules/roles/roles.js","../src/copilot/copilot.js"],"sourcesContent":["import { Type, Text } from 'main.core';\nimport { Utils } from 'im.v2.lib.utils';\n\nimport type { JsonObject, JsonValue } from 'main.core';\n\nexport const isNumberOrString = (target: JsonValue): boolean => {\n\treturn Type.isNumber(target) || Type.isString(target);\n};\n\nexport const convertToString = (target: JsonValue): string => {\n\treturn target.toString();\n};\n\nexport const convertToNumber = (target: string | number): number => {\n\treturn Number.parseInt(target, 10);\n};\n\nexport const convertToDate = (target: string) => {\n\treturn Utils.date.cast(target, false);\n};\n\nconst SNAKE_CASE_REGEXP = /(_[\\da-z])/gi;\nexport const convertObjectKeysToCamelCase = (targetObject: JsonObject): JsonObject => {\n\tconst resultObject = {};\n\tObject.entries(targetObject).forEach(([key, value]) => {\n\t\tconst newKey = prepareKey(key);\n\t\tif (Type.isPlainObject(value))\n\t\t{\n\t\t\tresultObject[newKey] = convertObjectKeysToCamelCase(value);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (Type.isArray(value))\n\t\t{\n\t\t\tresultObject[newKey] = convertArrayItemsKeysToCamelCase(value);\n\n\t\t\treturn;\n\t\t}\n\t\tresultObject[newKey] = value;\n\t});\n\n\treturn resultObject;\n};\n\nconst prepareKey = (rawKey: string): string => {\n\tlet key = rawKey;\n\tif (key.search(SNAKE_CASE_REGEXP) !== -1)\n\t{\n\t\tkey = key.toLowerCase();\n\t}\n\n\treturn Text.toCamelCase(key);\n};\n\nconst convertArrayItemsKeysToCamelCase = (targetArray: JsonValue[]): JsonValue[] => {\n\treturn targetArray.map((arrayItem) => {\n\t\tif (!Type.isPlainObject(arrayItem))\n\t\t{\n\t\t\treturn arrayItem;\n\t\t}\n\n\t\treturn convertObjectKeysToCamelCase(arrayItem);\n\t});\n};\n","import { NotificationSettingsBlock } from 'im.v2.const';\nimport type { RawNotificationSettingsBlock, NotificationSettingsItem } from 'im.v2.const';\n\ntype PreparedNotificationSettings = {\n\t[block: string]: NotificationSettingsBlock,\n};\n\nconst SortWeight = {\n\tim: 10,\n};\n\nexport const prepareNotificationSettings = (target: RawNotificationSettingsBlock[]): PreparedNotificationSettings => {\n\tconst result = {};\n\n\tconst sortedTarget = sortNotificationSettingsBlock(target);\n\tsortedTarget.forEach((block: RawNotificationSettingsBlock) => {\n\t\tconst preparedItems = {};\n\t\tblock.notices.forEach((item: NotificationSettingsItem) => {\n\t\t\tpreparedItems[item.id] = item;\n\t\t});\n\t\tresult[block.id] = {\n\t\t\tid: block.id,\n\t\t\tlabel: block.label,\n\t\t\titems: preparedItems,\n\t\t};\n\t});\n\n\treturn result;\n};\n\nconst sortNotificationSettingsBlock = (target: RawNotificationSettingsBlock[]): RawNotificationSettingsBlock[] => {\n\treturn [...target].sort((a, b) => {\n\t\tconst weightA = SortWeight[a.id] ?? 0;\n\t\tconst weightB = SortWeight[b.id] ?? 0;\n\n\t\treturn weightB - weightA;\n\t});\n};\n","import { Type } from 'main.core';\n\nimport { Settings } from 'im.v2.const';\n\nimport { convertToNumber, isNumberOrString } from '../../../../utils/format';\nimport { prepareNotificationSettings } from './format-functions';\n\nimport type { FieldsConfig } from '../../../../utils/validate';\n\nexport const settingsFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: Settings.notification.enableSound,\n\t\ttargetFieldName: Settings.notification.enableSound,\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: Settings.notification.enableAutoRead,\n\t\ttargetFieldName: Settings.notification.enableAutoRead,\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: Settings.notification.mode,\n\t\ttargetFieldName: Settings.notification.mode,\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: Settings.notification.enableWeb,\n\t\ttargetFieldName: Settings.notification.enableWeb,\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: Settings.notification.enableMail,\n\t\ttargetFieldName: Settings.notification.enableMail,\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: Settings.notification.enablePush,\n\t\ttargetFieldName: Settings.notification.enablePush,\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'notifications',\n\t\ttargetFieldName: 'notifications',\n\t\tcheckFunction: Type.isArray,\n\t\tformatFunction: prepareNotificationSettings,\n\t},\n\t{\n\t\tfieldName: Settings.message.bigSmiles,\n\t\ttargetFieldName: Settings.message.bigSmiles,\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: Settings.appearance.background,\n\t\ttargetFieldName: Settings.appearance.background,\n\t\tcheckFunction: isNumberOrString,\n\t\tformatFunction: convertToNumber,\n\t},\n\t{\n\t\tfieldName: Settings.appearance.alignment,\n\t\ttargetFieldName: Settings.appearance.alignment,\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: Settings.recent.showBirthday,\n\t\ttargetFieldName: Settings.recent.showBirthday,\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: Settings.recent.showInvited,\n\t\ttargetFieldName: Settings.recent.showInvited,\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: Settings.recent.showLastMessage,\n\t\ttargetFieldName: Settings.recent.showLastMessage,\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: Settings.hotkey.sendByEnter,\n\t\ttargetFieldName: Settings.hotkey.sendByEnter,\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: (target) => {\n\t\t\treturn target === '1';\n\t\t},\n\t},\n\t{\n\t\tfieldName: Settings.hotkey.sendByEnter,\n\t\ttargetFieldName: Settings.hotkey.sendByEnter,\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: Settings.desktop.enableRedirect,\n\t\ttargetFieldName: Settings.desktop.enableRedirect,\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: Settings.user.status,\n\t\ttargetFieldName: Settings.user.status,\n\t\tcheckFunction: Type.isString,\n\t},\n];\n","import { Type } from 'main.core';\n\nimport { convertObjectKeysToCamelCase } from './format';\n\nimport type { JsonObject, JsonValue } from 'main.core';\n\nexport type FieldsConfig = FieldsConfigItem[];\ntype FieldsConfigItem = {\n\tfieldName: string | Array<string>,\n\ttargetFieldName: string,\n\tcheckFunction?: CheckFunction | Array<CheckFunction>, // OR logic\n\tformatFunction?: FormatFunction,\n};\ntype CheckFunction = (target: JsonValue) => boolean;\ntype FormatFunction = (target: JsonValue, currentResult: JsonObject, rawFields: JsonObject) => JsonValue;\n\nexport const formatFieldsWithConfig = (fields: JsonObject, config: FieldsConfig): JsonObject => {\n\tconst resultObject = {};\n\tconst rawFields = convertObjectKeysToCamelCase(fields);\n\n\tconfig.forEach((fieldConfig: FieldsConfigItem) => {\n\t\tconst { fieldName, targetFieldName, checkFunction, formatFunction } = fieldConfig;\n\n\t\t// check if field exists\n\t\tconst foundFieldName = getValidFieldName(rawFields, fieldName);\n\t\tif (!foundFieldName)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\t// validate value\n\t\tif (!isFieldValueValid(rawFields[foundFieldName], checkFunction))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\t// format value\n\t\tresultObject[targetFieldName] = formatFieldValue({\n\t\t\tfieldValue: rawFields[foundFieldName],\n\t\t\tformatFunction,\n\t\t\tcurrentResult: resultObject,\n\t\t\trawFields: fields,\n\t\t});\n\t});\n\n\treturn resultObject;\n};\n\nconst getValidFieldName = (fields: JsonObject, fieldName: string | string[]): string | null => {\n\tlet fieldNameList = fieldName;\n\tif (Type.isStringFilled(fieldNameList))\n\t{\n\t\tfieldNameList = [fieldNameList];\n\t}\n\n\tfor (const singleField of fieldNameList)\n\t{\n\t\tif (!Type.isUndefined(fields[singleField]))\n\t\t{\n\t\t\treturn singleField;\n\t\t}\n\t}\n\n\treturn null;\n};\n\nconst isFieldValueValid = (field: JsonValue, checkFunction: CheckFunction | Array<CheckFunction>): boolean => {\n\tlet checkFunctionList = checkFunction;\n\tif (Type.isUndefined(checkFunctionList))\n\t{\n\t\treturn true;\n\t}\n\n\tif (Type.isFunction(checkFunctionList))\n\t{\n\t\tcheckFunctionList = [checkFunctionList];\n\t}\n\n\treturn checkFunctionList.some((singleFunction) => singleFunction(field));\n};\n\ntype FormatFieldValueParams = {\n\tfieldValue: JsonValue,\n\tformatFunction: FormatFunction,\n\tcurrentResult: JsonObject,\n\trawFields: JsonObject\n};\nconst formatFieldValue = (params: FormatFieldValueParams) => {\n\tconst { fieldValue, formatFunction, currentResult, rawFields } = params;\n\tif (Type.isUndefined(formatFunction))\n\t{\n\t\treturn fieldValue;\n\t}\n\n\treturn formatFunction(fieldValue, currentResult, rawFields);\n};\n","import { BuilderModel, GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\n\nimport { Settings, DialogAlignment, NotificationSettingsMode, NotificationSettingsType, NotificationSettingsBlock } from 'im.v2.const';\nimport { settingsFieldsConfig } from './format/field-config';\nimport { formatFieldsWithConfig } from '../../../utils/validate';\n\nimport type { JsonObject } from 'main.core';\n\ntype SettingsState = {\n\t[settingName: string]: any,\n\tnotifications: {\n\t\t[moduleId: string]: NotificationSettingsBlock\n\t}\n};\ntype NotificationOptionPayload = {\n\tmoduleId: string,\n\toptionName: string,\n\ttype: $Values<typeof NotificationSettingsType>,\n\tvalue: boolean\n};\n\n/* eslint-disable no-param-reassign */\nexport class SettingsModel extends BuilderModel\n{\n\tgetState(): SettingsState\n\t{\n\t\treturn {\n\t\t\t[Settings.appearance.background]: 1,\n\t\t\t[Settings.appearance.alignment]: DialogAlignment.left,\n\n\t\t\t[Settings.notification.enableSound]: true,\n\t\t\t[Settings.notification.enableAutoRead]: true,\n\t\t\t[Settings.notification.mode]: NotificationSettingsMode.simple,\n\t\t\t[Settings.notification.enableWeb]: true,\n\t\t\t[Settings.notification.enableMail]: true,\n\t\t\t[Settings.notification.enablePush]: true,\n\t\t\tnotifications: {},\n\n\t\t\t[Settings.message.bigSmiles]: true,\n\n\t\t\t[Settings.recent.showBirthday]: true,\n\t\t\t[Settings.recent.showInvited]: true,\n\t\t\t[Settings.recent.showLastMessage]: true,\n\n\t\t\t[Settings.desktop.enableRedirect]: true,\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function application/settings/get */\n\t\t\tget: (state: SettingsState) => (key: string): any => {\n\t\t\t\treturn state[key];\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function application/settings/set */\n\t\t\tset: (store, payload: {[settingName: string]: any}) => {\n\t\t\t\tstore.commit('set', this.formatFields(payload));\n\t\t\t},\n\t\t\t/** @function application/settings/setNotificationOption */\n\t\t\tsetNotificationOption: (store, payload: NotificationOptionPayload) => {\n\t\t\t\tstore.commit('setNotificationOption', payload);\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tset: (state: SettingsState, payload: {[settingName: string]: any}) => {\n\t\t\t\tObject.entries(payload).forEach(([key, value]) => {\n\t\t\t\t\tstate[key] = value;\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetNotificationOption: (state: SettingsState, payload: NotificationOptionPayload) => {\n\t\t\t\tconst { moduleId, optionName, type, value } = payload;\n\t\t\t\tconst moduleOptions = state.notifications[moduleId];\n\t\t\t\tif (!moduleOptions?.items?.[optionName])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tmoduleOptions.items[optionName][type] = value;\n\t\t\t},\n\t\t};\n\t}\n\n\tformatFields(fields: JsonObject): JsonObject\n\t{\n\t\treturn formatFieldsWithConfig(fields, settingsFieldsConfig);\n\t}\n}\n","import { Type } from 'main.core';\n\nimport type { FieldsConfig } from '../../../../utils/validate';\n\nexport const tariffRestrictionsFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'fullChatHistory',\n\t\ttargetFieldName: 'fullChatHistory',\n\t\tcheckFunction: Type.isPlainObject,\n\t},\n];\n","import { BuilderModel, GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\n\nimport { tariffRestrictionsFieldsConfig } from './format/field-config';\nimport { formatFieldsWithConfig } from '../../../utils/validate';\n\nimport type { JsonObject } from 'main.core';\n\nexport type TariffRestrictions = {\n\tfullChatHistory: {\n\t\tisAvailable: boolean,\n\t\tlimitDays: number | null,\n\t}\n};\n\n/* eslint-disable no-param-reassign */\nexport class TariffRestrictionsModel extends BuilderModel\n{\n\tgetState(): TariffRestrictions\n\t{\n\t\treturn {\n\t\t\tfullChatHistory: {\n\t\t\t\tisAvailable: true,\n\t\t\t\tlimitDays: null,\n\t\t\t},\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function application/tariffRestrictions/get */\n\t\t\tget: (state: TariffRestrictions): TariffRestrictions => {\n\t\t\t\treturn state;\n\t\t\t},\n\t\t\t/** @function application/tariffRestrictions/isHistoryAvailable */\n\t\t\tisHistoryAvailable: (state: TariffRestrictions): boolean => {\n\t\t\t\treturn state.fullChatHistory?.isAvailable ?? false;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function application/tariffRestrictions/set */\n\t\t\tset: (store, payload: JsonObject) => {\n\t\t\t\tstore.commit('set', this.formatFields(payload));\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tset: (state: TariffRestrictions, payload: JsonObject) => {\n\t\t\t\tObject.entries(payload).forEach(([key, value]) => {\n\t\t\t\t\tstate[key] = value;\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\tformatFields(fields: JsonObject): JsonObject\n\t{\n\t\treturn formatFieldsWithConfig(fields, tariffRestrictionsFieldsConfig);\n\t}\n}\n","import { Type } from 'main.core';\nimport { EventEmitter } from 'main.core.events';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Layout, EventType } from 'im.v2.const';\n\nimport { SettingsModel } from './nested-modules/settings/settings';\nimport { TariffRestrictionsModel } from './nested-modules/tariff-restrictions/tariff-restrictions';\n\nimport type { ActionTree, GetterTree, MutationTree } from 'ui.vue3.vuex';\n\ntype ApplicationState = {\n\tlayout: {\n\t\tname: string,\n\t\tentityId: string,\n\t\tcontextId: number,\n\t},\n};\n\nexport class ApplicationModel extends BuilderModel\n{\n\tgetName(): string\n\t{\n\t\treturn 'application';\n\t}\n\n\tgetNestedModules(): { [moduleName: string]: BuilderModel }\n\t{\n\t\treturn {\n\t\t\tsettings: SettingsModel,\n\t\t\ttariffRestrictions: TariffRestrictionsModel,\n\t\t};\n\t}\n\n\tgetState(): ApplicationState\n\t{\n\t\treturn {\n\t\t\tlayout:\n\t\t\t{\n\t\t\t\tname: Layout.chat.name,\n\t\t\t\tentityId: '',\n\t\t\t\tcontextId: 0,\n\t\t\t},\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function application/getLayout */\n\t\t\tgetLayout: (state) => {\n\t\t\t\treturn state.layout;\n\t\t\t},\n\t\t\t/** @function application/isChatOpen */\n\t\t\tisChatOpen: (state) => (dialogId: string): boolean => {\n\t\t\t\tconst allowedLayouts = [Layout.chat.name, Layout.copilot.name, Layout.channel.name, Layout.collab.name];\n\t\t\t\tif (!allowedLayouts.includes(state.layout.name))\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.layout.entityId === dialogId.toString();\n\t\t\t},\n\t\t\tisLinesChatOpen: (state) => (dialogId: string): boolean => {\n\t\t\t\tif (state.layout.name !== Layout.openlines.name && state.layout.name !== Layout.openlinesV2.name)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.layout.entityId === dialogId.toString();\n\t\t\t},\n\t\t\t/** @function application/areNotificationsOpen */\n\t\t\tareNotificationsOpen: (state) => {\n\t\t\t\treturn state.layout.name === Layout.notification.name;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function application/setLayout */\n\t\t\tsetLayout: (store, payload: {name: string, entityId?: string, contextId?: number}) => {\n\t\t\t\tconst { name, entityId = '', contextId = 0 } = payload;\n\t\t\t\tif (!Type.isStringFilled(name))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst previousLayout = { ...store.state.layout };\n\t\t\t\tconst newLayout = {\n\t\t\t\t\tname: this.validateLayout(name),\n\t\t\t\t\tentityId: this.validateLayoutEntityId(name, entityId),\n\t\t\t\t\tcontextId,\n\t\t\t\t};\n\n\t\t\t\tEventEmitter.emit(EventType.layout.onLayoutChange, {\n\t\t\t\t\tfrom: previousLayout,\n\t\t\t\t\tto: newLayout,\n\t\t\t\t});\n\n\t\t\t\tif (previousLayout.name === newLayout.name && previousLayout.entityId === newLayout.entityId)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('updateLayout', {\n\t\t\t\t\tlayout: newLayout,\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\t/* eslint-disable no-param-reassign */\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tupdateLayout: (state, payload) => {\n\t\t\t\tstate.layout = { ...state.layout, ...payload.layout };\n\t\t\t},\n\t\t};\n\t}\n\n\tvalidateLayout(name: string): string\n\t{\n\t\tif (!Layout[name])\n\t\t{\n\t\t\treturn Layout.chat.name;\n\t\t}\n\n\t\treturn name;\n\t}\n\n\tvalidateLayoutEntityId(name: string, entityId: string): string\n\t{\n\t\tif (!Layout[name])\n\t\t{\n\t\t\treturn '';\n\t\t}\n\n\t\t// TODO check `entityId` by layout name\n\n\t\treturn entityId;\n\t}\n}\n","import { Type, type JsonObject } from 'main.core';\nimport { MessageComponent, type KeyboardButtonConfig } from 'im.v2.const';\n\nimport { convertToNumber } from '../../utils/format';\n\nexport const prepareComponentId = (componentId: string) => {\n\tconst supportedComponents = Object.values(MessageComponent);\n\tif (!supportedComponents.includes(componentId))\n\t{\n\t\treturn MessageComponent.unsupported;\n\t}\n\n\treturn componentId;\n};\n\nexport const prepareAuthorId = (target: number | string, currentResult: JsonObject, rawFields: JsonObject): number => {\n\tif (Type.isString(rawFields.system) && rawFields.system === 'Y')\n\t{\n\t\treturn 0;\n\t}\n\n\tif (Type.isBoolean(rawFields.isSystem) && rawFields.isSystem === true)\n\t{\n\t\treturn 0;\n\t}\n\n\treturn convertToNumber(target);\n};\n\nexport const prepareKeyboard = (rawKeyboardButtons: KeyboardButtonConfig[]): KeyboardButtonConfig[] => {\n\treturn rawKeyboardButtons.map((rawButton) => {\n\t\treturn {\n\t\t\t...rawButton,\n\t\t\tblock: rawButton.block === 'Y',\n\t\t\tdisabled: rawButton.disabled === 'Y',\n\t\t\tvote: rawButton.vote === 'Y',\n\t\t\twait: rawButton.wait === 'Y',\n\t\t};\n\t});\n};\n","import { Type } from 'main.core';\n\nimport { Utils } from 'im.v2.lib.utils';\n\nimport { convertToNumber, convertToString, isNumberOrString } from '../../utils/format';\nimport { prepareComponentId, prepareAuthorId, prepareKeyboard } from './format-functions';\n\nimport type { FieldsConfig } from '../../utils/validate';\n\nexport const messageFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: ['id', 'temporaryId'],\n\t\ttargetFieldName: 'id',\n\t\tcheckFunction: [Type.isNumber, Utils.text.isTempMessage],\n\t},\n\t{\n\t\tfieldName: 'chatId',\n\t\ttargetFieldName: 'chatId',\n\t\tcheckFunction: isNumberOrString,\n\t\tformatFunction: convertToNumber,\n\t},\n\t{\n\t\tfieldName: 'date',\n\t\ttargetFieldName: 'date',\n\t\tcheckFunction: [Type.isString, Type.isDate],\n\t\tformatFunction: Utils.date.cast,\n\t},\n\t{\n\t\tfieldName: 'text',\n\t\ttargetFieldName: 'text',\n\t\tcheckFunction: isNumberOrString,\n\t\tformatFunction: convertToString,\n\t},\n\t{\n\t\tfieldName: ['senderId', 'authorId'],\n\t\ttargetFieldName: 'authorId',\n\t\tcheckFunction: isNumberOrString,\n\t\tformatFunction: prepareAuthorId,\n\t},\n\t{\n\t\tfieldName: 'sending',\n\t\ttargetFieldName: 'sending',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'unread',\n\t\ttargetFieldName: 'unread',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'viewed',\n\t\ttargetFieldName: 'viewed',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'viewedByOthers',\n\t\ttargetFieldName: 'viewedByOthers',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'error',\n\t\ttargetFieldName: 'error',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'componentId',\n\t\ttargetFieldName: 'componentId',\n\t\tcheckFunction: (target): boolean => {\n\t\t\treturn Type.isString(target) && target !== '';\n\t\t},\n\t\tformatFunction: prepareComponentId,\n\t},\n\t{\n\t\tfieldName: 'componentParams',\n\t\ttargetFieldName: 'componentParams',\n\t\tcheckFunction: Type.isPlainObject,\n\t},\n\t{\n\t\tfieldName: ['files', 'fileId'],\n\t\ttargetFieldName: 'files',\n\t\tcheckFunction: Type.isArray,\n\t},\n\t{\n\t\tfieldName: 'attach',\n\t\ttargetFieldName: 'attach',\n\t\tcheckFunction: [Type.isArray, Type.isBoolean, Type.isString],\n\t},\n\t{\n\t\tfieldName: 'keyboard',\n\t\ttargetFieldName: 'keyboard',\n\t\tcheckFunction: Type.isArray,\n\t\tformatFunction: prepareKeyboard,\n\t},\n\t{\n\t\tfieldName: 'keyboard',\n\t\ttargetFieldName: 'keyboard',\n\t\tcheckFunction: (target): boolean => target === 'N',\n\t\tformatFunction: (): [] => [],\n\t},\n\t{\n\t\tfieldName: 'isEdited',\n\t\ttargetFieldName: 'isEdited',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: (target): boolean => target === 'Y',\n\t},\n\t{\n\t\tfieldName: 'isEdited',\n\t\ttargetFieldName: 'isEdited',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'isDeleted',\n\t\ttargetFieldName: 'isDeleted',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: (target): boolean => target === 'Y',\n\t},\n\t{\n\t\tfieldName: 'isDeleted',\n\t\ttargetFieldName: 'isDeleted',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'replyId',\n\t\ttargetFieldName: 'replyId',\n\t\tcheckFunction: isNumberOrString,\n\t\tformatFunction: convertToNumber,\n\t},\n\t{\n\t\tfieldName: 'forward',\n\t\ttargetFieldName: 'forward',\n\t\tcheckFunction: Type.isPlainObject,\n\t},\n];\n","import {BuilderModel} from 'ui.vue3.vuex';\n\nimport {Core} from 'im.v2.application.core';\nimport {Logger} from 'im.v2.lib.logger';\n\nimport type {ImModelMessage} from 'im.v2.model';\n\nexport class PinModel extends BuilderModel\n{\n\tgetState()\n\t{\n\t\treturn {\n\t\t\tcollection: {}\n\t\t};\n\t}\n\n\tgetGetters(): Object\n\t{\n\t\treturn {\n\t\t\tgetPinned: (state: PinState) => (chatId: number): ImModelMessage[] =>\n\t\t\t{\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tconst result = [];\n\t\t\t\t[...state.collection[chatId]].forEach((pinnedMessageId) => {\n\t\t\t\t\tconst message = Core.getStore().getters['messages/getById'](pinnedMessageId);\n\t\t\t\t\tif (message)\n\t\t\t\t\t{\n\t\t\t\t\t\tresult.push(message);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tisPinned: (state: PinState) => (payload: {chatId: number, messageId: number}): boolean =>\n\t\t\t{\n\t\t\t\tconst {chatId, messageId} = payload;\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].has(messageId);\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): Object\n\t{\n\t\treturn {\n\t\t\tsetPinned: (store, payload: {chatId: number, pinnedMessages: number[]}) =>\n\t\t\t{\n\t\t\t\tconst {chatId, pinnedMessages} = payload;\n\t\t\t\tif (pinnedMessages.length === 0)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setPinned', {\n\t\t\t\t\tchatId,\n\t\t\t\t\tpinnedMessageIds: pinnedMessages\n\t\t\t\t});\n\t\t\t},\n\t\t\tset: (store, payload: {chatId: number, messageId: number, action: boolean}) =>\n\t\t\t{\n\t\t\t\tstore.commit('set', payload);\n\t\t\t},\n\t\t\tadd: (store, payload: {chatId: number, messageId: number}) =>\n\t\t\t{\n\t\t\t\tstore.commit('add', payload);\n\t\t\t},\n\t\t\tdelete: (store, payload: {chatId: number, messageId: number}) =>\n\t\t\t{\n\t\t\t\tstore.commit('delete', payload);\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): Object\n\t{\n\t\treturn {\n\t\t\tsetPinned: (state: PinState, payload: {chatId: number, pinnedMessageIds: number[]}) =>\n\t\t\t{\n\t\t\t\tLogger.warn('Messages/pin model: setPinned mutation', payload);\n\t\t\t\tconst {chatId, pinnedMessageIds} = payload;\n\t\t\t\tstate.collection[chatId] = new Set(pinnedMessageIds.reverse());\n\t\t\t},\n\t\t\tadd: (state: PinState, payload: {chatId: number, messageId: number}) =>\n\t\t\t{\n\t\t\t\tLogger.warn('Messages/pin model: add pin mutation', payload);\n\t\t\t\tconst {chatId, messageId} = payload;\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = new Set();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].add(messageId);\n\t\t\t},\n\t\t\tdelete: (state: PinState, payload: {chatId: number, messageId: number}) =>\n\t\t\t{\n\t\t\t\tLogger.warn('Messages/pin model: delete pin mutation', payload);\n\t\t\t\tconst {chatId, messageId} = payload;\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].delete(messageId);\n\t\t\t}\n\t\t};\n\t}\n}\n\ntype PinState = {\n\tcollection: {\n\t\t[chatId: string]: Set\n\t}\n};","import { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\n\nimport type { Store, GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\nimport type { ImModelReactions } from 'im.v2.model';\n\nexport const Reaction = Object.freeze({\n\tlike: 'like',\n\tkiss: 'kiss',\n\tlaugh: 'laugh',\n\twonder: 'wonder',\n\tcry: 'cry',\n\tangry: 'angry',\n\tfacepalm: 'facepalm',\n});\n\ntype ReactionType = $Values<typeof Reaction>;\n\ntype RawReactions = {\n\tmessageId: number,\n\treactionCounters: ReactionCounters,\n\treactionUsers: ReactionUsers,\n\townReactions: ReactionType[]\n};\ntype ReactionCounters = {[reactionType: string]: number};\ntype ReactionUsers = {[reactionType: string]: number[]};\ntype RawReactionsList = RawReactions[];\n\ntype ReactionsState = {\n\tcollection: {\n\t\t[messageId: string]: ImModelReactions\n\t}\n};\n\nconst USERS_TO_SHOW = 5;\n\nexport class ReactionsModel extends BuilderModel\n{\n\tgetState(): ReactionsState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t};\n\t}\n\n\tgetElementState(): ImModelReactions\n\t{\n\t\treturn {\n\t\t\treactionCounters: {},\n\t\t\treactionUsers: {},\n\t\t\townReactions: new Set(),\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\tgetByMessageId: (state: ReactionsState) => (messageId: number): ?ImModelReactions => {\n\t\t\t\treturn state.collection[messageId];\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\tset: (store: Store, payload: RawReactionsList) => {\n\t\t\t\tstore.commit('set', this.prepareSetPayload(payload));\n\t\t\t},\n\t\t\tsetReaction: (\n\t\t\t\tstore: Store,\n\t\t\t\tpayload: {messageId: number, userId: number, reaction: ReactionType},\n\t\t\t) => {\n\t\t\t\tif (!Reaction[payload.reaction])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!store.state.collection[payload.messageId])\n\t\t\t\t{\n\t\t\t\t\tstore.commit('initCollection', payload.messageId);\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setReaction', payload);\n\t\t\t},\n\t\t\tremoveReaction: (\n\t\t\t\tstore: Store,\n\t\t\t\tpayload: {messageId: number, userId: number, reaction: ReactionType},\n\t\t\t) => {\n\t\t\t\tif (!store.state.collection[payload.messageId] || !Reaction[payload.reaction])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tstore.commit('removeReaction', payload);\n\t\t\t},\n\t\t\tclearCollection: (store: Store) => {\n\t\t\t\tstore.commit('clearCollection');\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tset: (state: ReactionsState, payload: RawReactionsList) => {\n\t\t\t\tpayload.forEach((item) => {\n\t\t\t\t\tconst newItem = {\n\t\t\t\t\t\treactionCounters: item.reactionCounters,\n\t\t\t\t\t\treactionUsers: item.reactionUsers,\n\t\t\t\t\t};\n\n\t\t\t\t\tconst currentItem = state.collection[item.messageId];\n\t\t\t\t\tconst newOwnReaction = Boolean(item.ownReactions);\n\t\t\t\t\tif (newOwnReaction)\n\t\t\t\t\t{\n\t\t\t\t\t\tnewItem.ownReactions = item.ownReactions;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnewItem.ownReactions = currentItem ? currentItem.ownReactions : new Set();\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\tstate.collection[item.messageId] = newItem;\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetReaction: (\n\t\t\t\tstate: ReactionsState,\n\t\t\t\tpayload: {messageId: number, userId: number, reaction: ReactionType},\n\t\t\t) => {\n\t\t\t\tconst { messageId, userId, reaction } = payload;\n\t\t\t\tconst reactions = state.collection[messageId];\n\t\t\t\tif (Core.getUserId() === userId)\n\t\t\t\t{\n\t\t\t\t\tthis.removeAllCurrentUserReactions(state, messageId);\n\t\t\t\t\treactions.ownReactions.add(reaction);\n\t\t\t\t}\n\n\t\t\t\tif (!reactions.reactionCounters[reaction])\n\t\t\t\t{\n\t\t\t\t\treactions.reactionCounters[reaction] = 0;\n\t\t\t\t}\n\t\t\t\tconst currentCounter = reactions.reactionCounters[reaction];\n\t\t\t\tif (currentCounter + 1 <= USERS_TO_SHOW)\n\t\t\t\t{\n\t\t\t\t\tif (!reactions.reactionUsers[reaction])\n\t\t\t\t\t{\n\t\t\t\t\t\treactions.reactionUsers[reaction] = new Set();\n\t\t\t\t\t}\n\t\t\t\t\treactions.reactionUsers[reaction].add(userId);\n\t\t\t\t}\n\n\t\t\t\treactions.reactionCounters[reaction]++;\n\t\t\t},\n\t\t\tremoveReaction: (\n\t\t\t\tstate: ReactionsState,\n\t\t\t\tpayload: {messageId: number, userId: number, reaction: ReactionType},\n\t\t\t) => {\n\t\t\t\tconst { messageId, userId, reaction } = payload;\n\t\t\t\tconst reactions = state.collection[messageId];\n\n\t\t\t\tif (Core.getUserId() === userId)\n\t\t\t\t{\n\t\t\t\t\treactions.ownReactions.delete(reaction);\n\t\t\t\t}\n\n\t\t\t\treactions.reactionUsers[reaction]?.delete(userId);\n\t\t\t\treactions.reactionCounters[reaction]--;\n\t\t\t\tif (reactions.reactionCounters[reaction] === 0)\n\t\t\t\t{\n\t\t\t\t\tdelete reactions.reactionCounters[reaction];\n\t\t\t\t}\n\t\t\t},\n\t\t\tinitCollection: (state: ReactionsState, messageId: number) => {\n\t\t\t\tif (!state.collection[messageId])\n\t\t\t\t{\n\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\tstate.collection[messageId] = this.getElementState();\n\t\t\t\t}\n\t\t\t},\n\t\t\tclearCollection: (state: ReactionsState) => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tstate.collection = {};\n\t\t\t},\n\t\t};\n\t}\n\n\tremoveAllCurrentUserReactions(state: ReactionsState, messageId: Number)\n\t{\n\t\tconst reactions = state.collection[messageId];\n\t\treactions.ownReactions.forEach((reaction) => {\n\t\t\treactions.reactionUsers[reaction]?.delete(Core.getUserId());\n\t\t\treactions.reactionCounters[reaction]--;\n\t\t\tif (reactions.reactionCounters[reaction] === 0)\n\t\t\t{\n\t\t\t\tdelete reactions.reactionCounters[reaction];\n\t\t\t}\n\t\t});\n\n\t\treactions.ownReactions = new Set();\n\t}\n\n\tprepareSetPayload(payload: RawReactionsList): {\n\t\tmessageId: number,\n\t\treactionCounters: ReactionCounters,\n\t\treactionUsers: ReactionUsers\n\t}\n\t{\n\t\treturn payload.map((item) => {\n\t\t\tconst reactionUsers = {};\n\t\t\tObject.entries(item.reactionUsers).forEach(([reaction, users]) => {\n\t\t\t\treactionUsers[reaction] = new Set(users);\n\t\t\t});\n\n\t\t\tconst reactionCounters = {};\n\t\t\tObject.entries(item.reactionCounters).forEach(([reaction, counter]) => {\n\t\t\t\treactionCounters[reaction] = counter;\n\t\t\t});\n\n\t\t\tconst result = {\n\t\t\t\tmessageId: item.messageId,\n\t\t\t\treactionCounters,\n\t\t\t\treactionUsers,\n\t\t\t};\n\n\t\t\tif (item.ownReactions?.length > 0)\n\t\t\t{\n\t\t\t\tresult.ownReactions = new Set(item.ownReactions);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t});\n\t}\n}\n","import { Type } from 'main.core';\n\nimport type { FieldsConfig } from 'im.v2.model';\n\nexport const commentFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'chatId',\n\t\ttargetFieldName: 'chatId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'lastUserIds',\n\t\ttargetFieldName: 'lastUserIds',\n\t\tcheckFunction: Type.isArray,\n\t},\n\t{\n\t\tfieldName: 'messageCount',\n\t\ttargetFieldName: 'messageCount',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'messageId',\n\t\ttargetFieldName: 'messageId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'isUserSubscribed',\n\t\ttargetFieldName: 'isUserSubscribed',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n];\n","import { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\nimport { formatFieldsWithConfig } from 'im.v2.model';\n\nimport { commentFieldsConfig } from './format/field-config';\n\nimport type { JsonObject } from 'main.core';\nimport type { ActionTree, MutationTree, GetterTree } from 'ui.vue3.vuex';\nimport type { ImModelCommentInfo, ImModelMessage } from 'im.v2.model';\nimport type { RawCommentInfo } from 'im.v2.provider.service.types';\n\nconst LAST_USERS_TO_SHOW = 3;\n\ntype CommentsState = {\n\tcollection: {\n\t\t[messageId: string]: ImModelCommentInfo\n\t},\n\tlayout: {\n\t\topened: boolean,\n\t\tchannelDialogId: string,\n\t\tpostId: number,\n\t}\n};\n\nexport class CommentsModel extends BuilderModel\n{\n\tgetState(): CommentsState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t\tlayout: {\n\t\t\t\topened: false,\n\t\t\t\tchannelDialogId: '',\n\t\t\t\tpostId: 0,\n\t\t\t},\n\t\t};\n\t}\n\n\tgetElementState(): ImModelCommentInfo\n\t{\n\t\treturn {\n\t\t\tchatId: 0,\n\t\t\tlastUserIds: [],\n\t\t\tmessageCount: 0,\n\t\t\tmessageId: 0,\n\t\t\tisUserSubscribed: false,\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function messages/comments/getByMessageId */\n\t\t\tgetByMessageId: (state: CommentsState) => (messageId: number): ?ImModelCommentInfo => {\n\t\t\t\treturn state.collection[messageId] ?? this.getElementState();\n\t\t\t},\n\t\t\t/** @function messages/comments/getMessageIdByChatId */\n\t\t\tgetMessageIdByChatId: (state: CommentsState) => (chatId: number): ?number => {\n\t\t\t\tconst collection = Object.values(state.collection);\n\t\t\t\tconst foundItem = collection.find((item) => {\n\t\t\t\t\treturn item.chatId === chatId;\n\t\t\t\t});\n\n\t\t\t\treturn foundItem?.messageId;\n\t\t\t},\n\t\t\t/** @function messages/comments/isUserSubscribed */\n\t\t\tisUserSubscribed: (state: CommentsState) => (messageId: number): boolean => {\n\t\t\t\tconst element = state.collection[messageId];\n\t\t\t\tif (!element && this.#isMessageAuthor(messageId))\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn element?.isUserSubscribed ?? false;\n\t\t\t},\n\t\t\t/** @function messages/comments/areOpened */\n\t\t\tareOpened: (state: CommentsState): boolean => {\n\t\t\t\treturn state.layout.opened;\n\t\t\t},\n\t\t\t/** @function messages/comments/areOpenedForChannel */\n\t\t\tareOpenedForChannel: (state: CommentsState) => (channelDialogId: string): boolean => {\n\t\t\t\treturn state.layout.channelDialogId === channelDialogId;\n\t\t\t},\n\t\t\t/** @function messages/comments/areOpenedForChannelPost */\n\t\t\tareOpenedForChannelPost: (state: CommentsState) => (postId: number): boolean => {\n\t\t\t\treturn state.layout.postId === postId;\n\t\t\t},\n\t\t\t/** @function messages/comments/getOpenedChannelId */\n\t\t\tgetOpenedChannelId: (state: CommentsState): string => {\n\t\t\t\treturn state.layout.channelDialogId ?? '';\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function messages/comments/set */\n\t\t\tset: (store, rawPayload: RawCommentInfo[] | RawCommentInfo) => {\n\t\t\t\tlet payload = rawPayload;\n\t\t\t\tif (!payload)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\n\t\t\t\tpayload = payload.map((item: RawCommentInfo) => {\n\t\t\t\t\tconst currentItem: ImModelCommentInfo = store.state.collection[item.messageId];\n\t\t\t\t\tif (currentItem)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn { ...currentItem, ...this.#formatFields(item) };\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...this.getElementState(),\n\t\t\t\t\t\tisUserSubscribed: this.#isMessageAuthor(item.messageId),\n\t\t\t\t\t\t...this.#formatFields(item),\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\tstore.commit('set', payload);\n\t\t\t},\n\t\t\t/** @function messages/comments/setLastUser */\n\t\t\tsetLastUser: (store, payload: { messageId: number, newUserId: number }) => {\n\t\t\t\tconst { messageId, newUserId } = payload;\n\t\t\t\tconst currentItem = store.state.collection[messageId];\n\t\t\t\tif (!currentItem || newUserId === 0)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setLastUser', payload);\n\t\t\t},\n\t\t\t/** @function messages/comments/subscribe */\n\t\t\tsubscribe: (store, messageId: number) => {\n\t\t\t\tCore.getStore().dispatch('messages/comments/set', {\n\t\t\t\t\tmessageId,\n\t\t\t\t\tisUserSubscribed: true,\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/comments/unsubscribe */\n\t\t\tunsubscribe: (store, messageId: number) => {\n\t\t\t\tCore.getStore().dispatch('messages/comments/set', {\n\t\t\t\t\tmessageId,\n\t\t\t\t\tisUserSubscribed: false,\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/comments/setOpened */\n\t\t\tsetOpened: (store, payload: { channelDialogId: string }) => {\n\t\t\t\tstore.commit('setOpened', payload);\n\t\t\t},\n\t\t\t/** @function messages/comments/setClosed */\n\t\t\tsetClosed: (store) => {\n\t\t\t\tstore.commit('setClosed');\n\t\t\t},\n\t\t};\n\t}\n\n\t/* eslint-disable no-param-reassign */\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tset: (state: CommentsState, payload: RawCommentInfo[]) => {\n\t\t\t\tpayload.forEach((item) => {\n\t\t\t\t\tstate.collection[item.messageId] = item;\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetLastUser: (state: CommentsState, payload: { messageId: number, newUserId: number }) => {\n\t\t\t\tconst { messageId, newUserId } = payload;\n\t\t\t\tconst { lastUserIds: currentUsers } = state.collection[messageId];\n\t\t\t\tif (currentUsers.includes(newUserId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (currentUsers.length < LAST_USERS_TO_SHOW)\n\t\t\t\t{\n\t\t\t\t\tcurrentUsers.unshift(newUserId);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcurrentUsers.pop();\n\t\t\t\tcurrentUsers.unshift(newUserId);\n\t\t\t},\n\t\t\tsetOpened: (state: CommentsState, payload: { channelDialogId: string, commentsPostId: number }) => {\n\t\t\t\tconst { channelDialogId, commentsPostId } = payload;\n\n\t\t\t\tstate.layout = {\n\t\t\t\t\topened: true,\n\t\t\t\t\tchannelDialogId,\n\t\t\t\t\tpostId: commentsPostId,\n\t\t\t\t};\n\t\t\t},\n\t\t\tsetClosed: (state: CommentsState) => {\n\t\t\t\tstate.layout = {\n\t\t\t\t\topened: false,\n\t\t\t\t\tchannelDialogId: '',\n\t\t\t\t\tcommentsPostId: 0,\n\t\t\t\t};\n\t\t\t},\n\t\t};\n\t}\n\n\t#formatFields(fields: JsonObject): JsonObject\n\t{\n\t\treturn formatFieldsWithConfig(fields, commentFieldsConfig);\n\t}\n\n\t#isMessageAuthor(messageId: number): boolean\n\t{\n\t\tconst message: ImModelMessage = Core.getStore().getters['messages/getById'](messageId);\n\n\t\treturn message?.authorId === Core.getUserId();\n\t}\n}\n","import { Core } from 'im.v2.application.core';\nimport { ActionTree, BuilderModel, MutationTree, GetterTree } from 'ui.vue3.vuex';\n\ntype SelectState = {\n\tcollection: {\n\t\t[dialogId: string]: Set<number>,\n\t},\n};\n\nexport class SelectModel extends BuilderModel\n{\n\tgetState(): SelectState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function messages/select/getCollection */\n\t\t\tgetCollection: (state: SelectState) => (dialogId: string): ?Set<number> => {\n\t\t\t\tif (!state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst preparedCollection = [...state.collection[dialogId]];\n\n\t\t\t\tconst filteredMessageIds = preparedCollection.filter((messageId) => {\n\t\t\t\t\treturn Core.getStore().getters['messages/isExists'](messageId);\n\t\t\t\t});\n\n\t\t\t\treturn new Set(filteredMessageIds);\n\t\t\t},\n\t\t\t/** @function messages/select/isBulkActionsModeActive */\n\t\t\tisBulkActionsModeActive: (state: SelectState) => (dialogId: string): boolean => {\n\t\t\t\treturn Boolean(state.collection[dialogId]);\n\t\t\t},\n\t\t\t/** @function messages/select/isMessageSelected */\n\t\t\tisMessageSelected: (state: SelectState) => (messageId: number, dialogId: string): boolean => {\n\t\t\t\tif (!state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[dialogId].has(messageId);\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function messages/select/enableBulkMode */\n\t\t\tenableBulkMode: (store: Object, payload: {messageId: number, dialogId: string}) => {\n\t\t\t\tconst { messageId, dialogId } = payload;\n\n\t\t\t\tif (store.state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('enableBulkMode', {\n\t\t\t\t\tmessageId,\n\t\t\t\t\tdialogId,\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/select/disableBulkMode */\n\t\t\tdisableBulkMode: (store: Object, payload: {dialogId: string}) => {\n\t\t\t\tconst { dialogId } = payload;\n\n\t\t\t\tif (!store.state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('disableBulkMode', {\n\t\t\t\t\tdialogId,\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/select/toggleMessageSelection */\n\t\t\ttoggleMessageSelection: (store: Object, payload: {messageId: number, dialogId: string}) => {\n\t\t\t\tconst { messageId, dialogId } = payload;\n\n\t\t\t\tif (!store.state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('toggleMessageSelection', {\n\t\t\t\t\tmessageId,\n\t\t\t\t\tdialogId,\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/select/clearCollection */\n\t\t\tclearCollection: (store: Object) => {\n\t\t\t\tstore.commit('clearCollection');\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tenableBulkMode: (state: SelectState, payload: {messageId: number, dialogId: string}) => {\n\t\t\t\tconst { messageId, dialogId } = payload;\n\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tstate.collection[dialogId] = new Set();\n\t\t\t\tstate.collection[dialogId].add(messageId);\n\t\t\t},\n\t\t\tdisableBulkMode: (state: SelectState, payload: {dialogId: string}) => {\n\t\t\t\tconst { dialogId } = payload;\n\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tdelete state.collection[dialogId];\n\t\t\t},\n\t\t\ttoggleMessageSelection: (state: SelectState, payload: {messageId: number, dialogId: string}) => {\n\t\t\t\tconst { messageId, dialogId } = payload;\n\n\t\t\t\tif (state.collection[dialogId].has(messageId))\n\t\t\t\t{\n\t\t\t\t\tstate.collection[dialogId].delete(messageId);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstate.collection[dialogId].add(messageId);\n\t\t\t},\n\t\t\tclearCollection: (state: SelectState) => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tstate.collection = {};\n\t\t\t},\n\t\t};\n\t}\n}\n","import { Core } from 'im.v2.application.core';\n\nimport type { AnchorType } from 'im.v2.const';\nimport type { Anchor } from '../../../type/anchor';\n\nexport function isAnchorsEqual(anchor1: Anchor, anchor2: Anchor): boolean\n{\n\treturn anchor1.messageId === anchor2.messageId\n\t\t&& anchor1.type === anchor2.type\n\t\t&& anchor1.userId === anchor2.userId\n\t\t&& anchor1.fromUserId === anchor2.fromUserId\n\t;\n}\n\nexport function isAnchorWithTypeFromCurrentChat(anchor: Anchor, anchorType: AnchorType, chatId: number): boolean\n{\n\treturn anchor.userId === Core.getUserId()\n\t\t&& anchor.chatId === chatId\n\t\t&& anchor.type === anchorType\n\t;\n}\n","import { Type } from 'main.core';\nimport { BuilderModel, GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\nimport { Core } from 'im.v2.application.core';\nimport { type AnchorType } from 'im.v2.const';\n\nimport { isAnchorsEqual, isAnchorWithTypeFromCurrentChat } from './helpers';\n\nimport { type Anchor } from '../../../type/anchor';\n\ntype AnchorsState = {\n\tanchors: Anchor[];\n};\n\nexport class AnchorsModel extends BuilderModel\n{\n\tgetName(): string\n\t{\n\t\treturn 'anchors';\n\t}\n\n\tgetState(): AnchorsState\n\t{\n\t\treturn {\n\t\t\tanchors: [],\n\t\t};\n\t}\n\n\t// eslint-disable-next-line max-lines-per-function\n\tgetGetters(): GetterTree {\n\t\treturn {\n\t\t\t/** @function messages/anchors/getChatMessageIdsWithAnchors */\n\t\t\tgetChatMessageIdsWithAnchors: (state: AnchorsState) => (\n\t\t\t\tchatId: number,\n\t\t\t): number[] => {\n\t\t\t\treturn [...state.anchors]\n\t\t\t\t\t.filter((anchor) => {\n\t\t\t\t\t\treturn anchor.chatId === chatId;\n\t\t\t\t\t})\n\t\t\t\t\t.map((anchor) => anchor.messageId)\n\t\t\t\t;\n\t\t\t},\n\t\t\t/** @function messages/anchors/isMessageHasAnchors */\n\t\t\tisMessageHasAnchors: (state: AnchorsState) => (\n\t\t\t\tmessageId: number,\n\t\t\t): boolean => {\n\t\t\t\tconst currentUserId = Core.getUserId();\n\n\t\t\t\treturn state.anchors.some((anchor) => {\n\t\t\t\t\treturn (anchor.messageId === messageId && anchor.userId === currentUserId);\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/anchors/isChatHasAnchors */\n\t\t\tisChatHasAnchors: (state: AnchorsState) => (chatId: number): boolean => {\n\t\t\t\tconst currentUserId = Core.getUserId();\n\n\t\t\t\treturn state.anchors.some((anchor) => {\n\t\t\t\t\treturn (anchor.chatId === chatId && anchor.userId === currentUserId);\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/anchors/isChatHasAnchorsWithType */\n\t\t\tisChatHasAnchorsWithType: (state: AnchorsState) => (\n\t\t\t\tchatId: number,\n\t\t\t\tanchorType: AnchorType,\n\t\t\t): boolean => {\n\t\t\t\treturn state.anchors.some((anchor) => {\n\t\t\t\t\treturn isAnchorWithTypeFromCurrentChat(anchor, anchorType, chatId);\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/anchors/getCounterInChatByType */\n\t\t\tgetCounterInChatByType: (state: AnchorsState) => (\n\t\t\t\tchatId: number,\n\t\t\t\tanchorType: AnchorType,\n\t\t\t): number => {\n\t\t\t\treturn state.anchors.filter((anchor) => {\n\t\t\t\t\treturn isAnchorWithTypeFromCurrentChat(anchor, anchorType, chatId);\n\t\t\t\t}).length;\n\t\t\t},\n\t\t\t/** @function messages/anchors/getNextMessageIdWithAnchorType */\n\t\t\tgetNextMessageIdWithAnchorType: (state: AnchorsState) => (\n\t\t\t\tchatId: number,\n\t\t\t\tanchorType: AnchorType,\n\t\t\t): number | null => {\n\t\t\t\tconst anchors: Anchor[] = state.anchors\n\t\t\t\t\t.filter((anchor) => {\n\t\t\t\t\t\treturn isAnchorWithTypeFromCurrentChat(anchor, anchorType, chatId);\n\t\t\t\t\t})\n\t\t\t\t\t.sort((anchorOne, anchorTwo) => anchorOne.messageId - anchorTwo.messageId)\n\t\t\t\t;\n\n\t\t\t\treturn anchors.at(0)?.messageId;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function messages/anchors/setAnchors */\n\t\t\tsetAnchors: (store, payload: { anchors: [] }) => {\n\t\t\t\tif (Type.isPlainObject(payload) === false)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setAnchors', { anchors: payload.anchors });\n\t\t\t},\n\t\t\t/** @function messages/anchors/addAnchor */\n\t\t\taddAnchor: (store, payload: {anchor: Anchor}) => {\n\t\t\t\tif (Type.isPlainObject(payload) === false)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst equalAnchor = store.state.anchors.find((anchor) => {\n\t\t\t\t\treturn isAnchorsEqual(anchor, payload.anchor);\n\t\t\t\t});\n\n\t\t\t\tif (!equalAnchor)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('addAnchor', payload);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** @function messages/anchors/removeAnchor */\n\t\t\tremoveAnchor: (store, payload: {anchor: Anchor}) => {\n\t\t\t\tif (Type.isPlainObject(payload) === false)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('removeAnchor', payload);\n\t\t\t},\n\t\t\t/** @function messages/anchors/removeUserAnchorsFromMessage */\n\t\t\tremoveUserAnchorsFromMessage: (store, payload: {userId: number, messageId: number}) => {\n\t\t\t\tstore.state.anchors.forEach((anchor) => {\n\t\t\t\t\tif (anchor.userId === payload.userId && anchor.messageId === payload.messageId)\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('removeAnchor', { anchor });\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/anchors/removeChatAnchors */\n\t\t\tremoveChatAnchors: (store, payload: { chatId: number, userId: number }) => {\n\t\t\t\tstore.commit('removeChatAnchors', payload);\n\t\t\t},\n\t\t\t/** @function messages/anchors/removeAllAnchors */\n\t\t\tremoveAllAnchors: (store) => {\n\t\t\t\tstore.commit('removeAllAnchors');\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tsetAnchors: (state: AnchorsState, payload: {anchors: Anchor[]}) => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tstate.anchors = [...payload.anchors];\n\t\t\t},\n\t\t\taddAnchor: (state: AnchorsState, payload: {anchor: Anchor}) => {\n\t\t\t\tstate.anchors.push(payload.anchor);\n\t\t\t},\n\t\t\tremoveAnchor: (state: AnchorsState, payload: {anchor: Anchor}) => {\n\t\t\t\tconst removedAnchorIndex = state.anchors.findIndex((anchor) => {\n\t\t\t\t\treturn isAnchorsEqual(anchor, payload.anchor);\n\t\t\t\t});\n\n\t\t\t\tif (removedAnchorIndex > -1)\n\t\t\t\t{\n\t\t\t\t\tstate.anchors.splice(removedAnchorIndex, 1);\n\t\t\t\t}\n\t\t\t},\n\t\t\tremoveChatAnchors: (state: AnchorsState, payload: { chatId: number, userId: number }) => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tstate.anchors = state.anchors.filter((anchor: Anchor) => {\n\t\t\t\t\treturn anchor.chatId !== payload.chatId || anchor.userId !== payload.userId;\n\t\t\t\t});\n\t\t\t},\n\t\t\tremoveAllAnchors: (state: AnchorsState) => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tstate.anchors = [];\n\t\t\t},\n\t\t};\n\t}\n}\n","import type { JsonObject } from 'main.core';\nimport { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\nimport { Utils } from 'im.v2.lib.utils';\nimport { Logger } from 'im.v2.lib.logger';\nimport { MessageComponent, MessageType, UserIdNetworkPrefix } from 'im.v2.const';\nimport { UserManager } from 'im.v2.lib.user';\nimport { formatFieldsWithConfig } from 'im.v2.model';\n\nimport { convertToNumber } from '../utils/format';\nimport { messageFieldsConfig } from './format/field-config';\nimport { PinModel } from './nested-modules/pin';\nimport { ReactionsModel } from './nested-modules/reactions';\nimport { CommentsModel } from './nested-modules/comments/comments';\nimport { SelectModel } from './nested-modules/select';\nimport { AnchorsModel } from './nested-modules/anchors/anchors';\n\nimport type { GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\nimport type { ImModelMessage, ImModelFile } from 'im.v2.model';\nimport type { AttachConfig } from 'im.v2.const';\nimport type { RawMessage } from '../type/message';\n\ntype MessageId = string | number;\n\ntype MessagesState = {\n\tcollection: {\n\t\t[messageId: string]: ImModelMessage\n\t},\n\tchatCollection: {\n\t\t[chatId: string]: Set<string | number>\n\t},\n\tloadingMessages: {\n\t\t[previousSibling: MessageId]: ImModelMessage,\n\t},\n};\n\nexport class MessagesModel extends BuilderModel\n{\n\tgetName(): string\n\t{\n\t\treturn 'messages';\n\t}\n\n\tgetNestedModules(): { [moduleName: string]: BuilderModel }\n\t{\n\t\treturn {\n\t\t\tpin: PinModel,\n\t\t\treactions: ReactionsModel,\n\t\t\tcomments: CommentsModel,\n\t\t\tselect: SelectModel,\n\t\t\tanchors: AnchorsModel,\n\t\t};\n\t}\n\n\tgetState(): MessagesState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t\tchatCollection: {},\n\t\t\tloadingMessages: {},\n\t\t};\n\t}\n\n\tgetElementState(): ImModelMessage\n\t{\n\t\treturn {\n\t\t\tid: 0,\n\t\t\tchatId: 0,\n\t\t\tauthorId: 0,\n\t\t\treplyId: 0,\n\t\t\tdate: new Date(),\n\t\t\ttext: '',\n\t\t\tfiles: [],\n\t\t\tattach: [],\n\t\t\tkeyboard: [],\n\t\t\tunread: false,\n\t\t\tviewed: true,\n\t\t\tviewedByOthers: false,\n\t\t\tsending: false,\n\t\t\terror: false,\n\t\t\tcomponentId: MessageComponent.default,\n\t\t\tcomponentParams: {},\n\t\t\tforward: {\n\t\t\t\tid: '',\n\t\t\t\tuserId: 0,\n\t\t\t},\n\t\t\tisEdited: false,\n\t\t\tisDeleted: false,\n\t\t};\n\t}\n\n\t// eslint-disable-next-line max-lines-per-function\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function messages/getByChatId */\n\t\t\tgetByChatId: (state: MessagesState, getters) => (chatId: number) => {\n\t\t\t\tif (!state.chatCollection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\tconst fakeFirstMessage: { id: string } = { id: this.#makeFakePreviousSiblingId(chatId) };\n\t\t\t\tconst firstLoadingMessages: Array<ImModelMessage> = this.#findNextLoadingMessages(\n\t\t\t\t\tfakeFirstMessage,\n\t\t\t\t\tgetters,\n\t\t\t\t);\n\n\t\t\t\treturn [...state.chatCollection[chatId]]\n\t\t\t\t\t.map((messageId: number | string) => {\n\t\t\t\t\t\treturn state.collection[messageId];\n\t\t\t\t\t})\n\t\t\t\t\t.sort(this.#sortCollection)\n\t\t\t\t\t.reduce((acc: Array<ImModelMessage>, message: ImModelMessage) => {\n\t\t\t\t\t\tacc.push(message, ...this.#findNextLoadingMessages(message, getters));\n\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t}, [...firstLoadingMessages]);\n\t\t\t},\n\t\t\t/** @function messages/getById */\n\t\t\tgetById: (state: MessagesState) => (id: number | string): ?ImModelMessage => {\n\t\t\t\treturn state.collection[id];\n\t\t\t},\n\t\t\t/** @function messages/getByIdList */\n\t\t\tgetByIdList: (state: MessagesState) => (idList: number[]): ImModelMessage[] => {\n\t\t\t\tconst result = [];\n\t\t\t\tidList.forEach((id) => {\n\t\t\t\t\tif (state.collection[id])\n\t\t\t\t\t{\n\t\t\t\t\t\tresult.push(state.collection[id]);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\t/** @function messages/hasMessage */\n\t\t\thasMessage: (state: MessagesState) => ({ chatId, messageId }) => {\n\t\t\t\tif (!state.chatCollection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.chatCollection[chatId].has(messageId);\n\t\t\t},\n\t\t\t/** @function messages/isForward */\n\t\t\tisForward: (state: MessagesState) => (id: number | string) => {\n\t\t\t\tconst message = state.collection[id];\n\t\t\t\tif (!message)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn Type.isStringFilled(message.forward.id);\n\t\t\t},\n\t\t\t/** @function messages/isExists */\n\t\t\tisExists: (state: MessagesState) => (id: number | string) => {\n\t\t\t\tconst message = state.collection[id];\n\n\t\t\t\treturn message && !message.isDeleted;\n\t\t\t},\n\t\t\t/** @function messages/isInChatCollection */\n\t\t\tisInChatCollection: (state: MessagesState) => (payload: {messageId: number}): boolean => {\n\t\t\t\tconst { messageId } = payload;\n\t\t\t\tconst message = state.collection[messageId];\n\t\t\t\tif (!message)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst { chatId } = message;\n\n\t\t\t\treturn state.chatCollection[chatId]?.has(messageId);\n\t\t\t},\n\t\t\t/** @function messages/getFirstId */\n\t\t\tgetFirstId: (state: MessagesState) => (chatId: number): number => {\n\t\t\t\tif (!state.chatCollection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn this.#findLowestMessageId(state, chatId);\n\t\t\t},\n\t\t\t/** @function messages/getLastId */\n\t\t\tgetLastId: (state: MessagesState) => (chatId: number): number => {\n\t\t\t\tif (!state.chatCollection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn this.#findMaxMessageId(state, chatId);\n\t\t\t},\n\t\t\t/** @function messages/getLastOwnMessageId */\n\t\t\tgetLastOwnMessageId: (state: MessagesState) => (chatId: number): number => {\n\t\t\t\tif (!state.chatCollection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn this.#findLastOwnMessageId(state, chatId);\n\t\t\t},\n\t\t\t/** @function messages/getFirstUnread */\n\t\t\tgetFirstUnread: (state: MessagesState) => (chatId: number): number => {\n\t\t\t\tif (!state.chatCollection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn this.#findFirstUnread(state, chatId);\n\t\t\t},\n\t\t\t/** @function messages/getChatUnreadMessages */\n\t\t\tgetChatUnreadMessages: (state: MessagesState) => (chatId: number): ImModelMessage[] => {\n\t\t\t\tif (!state.chatCollection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\tconst messages = [...state.chatCollection[chatId]].map((messageId: number | string) => {\n\t\t\t\t\treturn state.collection[messageId];\n\t\t\t\t});\n\n\t\t\t\treturn messages.filter((message: ImModelMessage) => {\n\t\t\t\t\treturn message.unread === true;\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/getMessageFiles */\n\t\t\tgetMessageFiles: (state: MessagesState) => (payload: number): ImModelFile[] => {\n\t\t\t\tconst messageId = payload;\n\t\t\t\tif (!state.collection[messageId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[messageId].files.map((fileId) => {\n\t\t\t\t\treturn this.store.getters['files/get'](fileId, true);\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/getMessageType */\n\t\t\tgetMessageType: (state: MessagesState) => (messageId: number): ?$Values<typeof MessageType> => {\n\t\t\t\tconst message = state.collection[messageId];\n\t\t\t\tif (!message)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst currentUserId = Core.getUserId();\n\t\t\t\tif (message.authorId === 0)\n\t\t\t\t{\n\t\t\t\t\treturn MessageType.system;\n\t\t\t\t}\n\n\t\t\t\tif (message.authorId === currentUserId)\n\t\t\t\t{\n\t\t\t\t\treturn MessageType.self;\n\t\t\t\t}\n\n\t\t\t\treturn MessageType.opponent;\n\t\t\t},\n\t\t\t/** @function messages/getPreviousMessage */\n\t\t\tgetPreviousMessage: (state: MessagesState) => (payload: {messageId: number, chatId: number}): ?ImModelMessage => {\n\t\t\t\tconst { messageId, chatId } = payload;\n\t\t\t\tconst message = state.collection[messageId];\n\t\t\t\tif (!message)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst chatCollection = [...state.chatCollection[chatId]];\n\t\t\t\tconst initialMessageIndex = chatCollection.indexOf(messageId);\n\t\t\t\tconst desiredMessageId = chatCollection[initialMessageIndex - 1];\n\t\t\t\tif (!desiredMessageId)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[desiredMessageId];\n\t\t\t},\n\t\t\tfindPreviousMessageId: (state, getters) => (payload: { messageId: MessageId, chatId: number }): MessageId => {\n\t\t\t\tconst chatCollection: Array<ImModelMessage> = getters.getByChatId(payload.chatId);\n\t\t\t\tconst currentMessageIndex: number = chatCollection.findIndex((message: ImModelMessage) => {\n\t\t\t\t\treturn message.id === payload.messageId;\n\t\t\t\t});\n\n\t\t\t\tif (currentMessageIndex > 0)\n\t\t\t\t{\n\t\t\t\t\treturn chatCollection[currentMessageIndex - 1].id;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t},\n\t\t\tfindLastChatMessageId: (state, getters) => (chatId: number): MessageId | null => {\n\t\t\t\tconst lastMessage: ?ImModelMessage = getters.getByChatId(chatId).pop();\n\t\t\t\tif (lastMessage)\n\t\t\t\t{\n\t\t\t\t\treturn lastMessage.id;\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\thasLoadingMessageByPreviousSiblingId: (state: MessagesState) => (messageId: MessageId): boolean => {\n\t\t\t\treturn Boolean(state.loadingMessages[messageId]);\n\t\t\t},\n\t\t\tgetLoadingMessageByPreviousSiblingId: (state: MessagesState) => (messageId: MessageId): ?ImModelMessage => {\n\t\t\t\treturn state.loadingMessages[messageId] ?? null;\n\t\t\t},\n\t\t\tgetLoadingMessageByMessageId: (state: MessagesState) => (messageId: MessageId): ?ImModelMessage => {\n\t\t\t\tconst message: ImModelMessage = Object\n\t\t\t\t\t.values(state.loadingMessages)\n\t\t\t\t\t.find((currentMessage: ImModelMessage) => {\n\t\t\t\t\t\treturn currentMessage.id === messageId;\n\t\t\t\t\t});\n\n\t\t\t\tif (message)\n\t\t\t\t{\n\t\t\t\t\treturn message;\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\thasLoadingMessageByMessageId: (state: MessagesState, getters) => (messageId: MessageId): boolean => {\n\t\t\t\treturn getters.getLoadingMessageByMessageId(messageId) !== null;\n\t\t\t},\n\t\t\tisRealMessage: () => (messageId: MessageId): boolean => {\n\t\t\t\treturn !Utils.text.isTempMessage(messageId);\n\t\t\t},\n\t\t};\n\t}\n\n\t// eslint-disable-next-line max-lines-per-function\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function messages/setChatCollection */\n\t\t\tsetChatCollection: (store, payload: {messages: RawMessage | RawMessage[], clearCollection: boolean}) => {\n\t\t\t\tlet { messages, clearCollection } = payload;\n\t\t\t\tclearCollection = clearCollection ?? false;\n\t\t\t\tif (!Array.isArray(messages) && Type.isPlainObject(messages))\n\t\t\t\t{\n\t\t\t\t\tmessages = [messages];\n\t\t\t\t}\n\n\t\t\t\tmessages = messages.map((message: RawMessage) => {\n\t\t\t\t\treturn { ...this.getElementState(), ...this.#formatFields(message) };\n\t\t\t\t});\n\t\t\t\tconst chatId = messages[0]?.chatId;\n\t\t\t\tif (chatId && clearCollection)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('clearCollection', { chatId });\n\t\t\t\t}\n\n\t\t\t\tstore.commit('store', { messages });\n\t\t\t\tstore.commit('setChatCollection', { messages });\n\t\t\t},\n\t\t\t/** @function messages/store */\n\t\t\tstore: (store, payload: RawMessage | RawMessage[]) => {\n\t\t\t\tlet preparedMessages = payload;\n\t\t\t\tif (Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpreparedMessages = [payload];\n\t\t\t\t}\n\n\t\t\t\tpreparedMessages = preparedMessages.map((message: RawMessage) => {\n\t\t\t\t\tconst currentMessage: ImModelMessage = store.state.collection[message.id];\n\t\t\t\t\tif (currentMessage)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn { ...currentMessage, ...this.#formatFields(message) };\n\t\t\t\t\t}\n\n\t\t\t\t\treturn { ...this.getElementState(), ...this.#formatFields(message) };\n\t\t\t\t});\n\n\t\t\t\tif (preparedMessages.length === 0)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('store', {\n\t\t\t\t\tmessages: preparedMessages,\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/add */\n\t\t\tadd: (store, payload: RawMessage) => {\n\t\t\t\tconst message = {\n\t\t\t\t\t...this.getElementState(),\n\t\t\t\t\t...this.#formatFields(payload),\n\t\t\t\t};\n\t\t\t\tstore.commit('store', {\n\t\t\t\t\tmessages: [message],\n\t\t\t\t});\n\t\t\t\tstore.commit('setChatCollection', {\n\t\t\t\t\tmessages: [message],\n\t\t\t\t});\n\n\t\t\t\treturn message.id;\n\t\t\t},\n\t\t\t/** @function messages/updateWithId */\n\t\t\tupdateWithId: (store, payload: {id: string | number, fields: Object}) => {\n\t\t\t\tconst { id, fields } = payload;\n\t\t\t\tif (!store.state.collection[id])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('updateWithId', {\n\t\t\t\t\tid,\n\t\t\t\t\tfields: this.#formatFields(fields),\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/update */\n\t\t\tupdate: (store, payload: {id: string | number, fields: Object}) => {\n\t\t\t\tconst { id, fields } = payload;\n\t\t\t\tconst currentMessage = store.state.collection[id];\n\t\t\t\tif (!currentMessage)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tid,\n\t\t\t\t\tfields: { ...currentMessage, ...this.#formatFields(fields) },\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/readMessages */\n\t\t\treadMessages: (store, payload: {chatId: number, messageIds: number[]}): number => {\n\t\t\t\tconst { chatId, messageIds } = payload;\n\t\t\t\tif (!store.state.chatCollection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\tconst chatMessages = [...store.state.chatCollection[chatId]].map((messageId: number) => {\n\t\t\t\t\treturn store.state.collection[messageId];\n\t\t\t\t});\n\n\t\t\t\tlet messagesToReadCount = 0;\n\t\t\t\tconst maxMessageId = this.#getMaxMessageId(messageIds);\n\t\t\t\tconst messageIdsToView = messageIds;\n\t\t\t\tconst messageIdsToRead = [];\n\t\t\t\tchatMessages.forEach((chatMessage: ImModelMessage) => {\n\t\t\t\t\tif (!chatMessage.unread)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chatMessage.id <= maxMessageId)\n\t\t\t\t\t{\n\t\t\t\t\t\tmessagesToReadCount++;\n\t\t\t\t\t\tmessageIdsToRead.push(chatMessage.id);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tstore.commit('readMessages', {\n\t\t\t\t\tmessageIdsToRead,\n\t\t\t\t\tmessageIdsToView,\n\t\t\t\t});\n\n\t\t\t\treturn messagesToReadCount;\n\t\t\t},\n\t\t\t/** @function messages/setViewedByOthers */\n\t\t\tsetViewedByOthers: (store, payload: {ids: number[]}): number => {\n\t\t\t\tconst { ids } = payload;\n\t\t\t\tstore.commit('setViewedByOthers', {\n\t\t\t\t\tids,\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/delete */\n\t\t\tdelete: (store, payload: {id: string | number}) => {\n\t\t\t\tconst { id } = payload;\n\t\t\t\tif (!store.state.collection[id])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (store.getters.hasLoadingMessageByPreviousSiblingId(id))\n\t\t\t\t{\n\t\t\t\t\tconst currentMessage: ImModelMessage = store.state.collection[id];\n\t\t\t\t\tconst newPreviousMessageId: MessageId = store.getters.findPreviousMessageId({\n\t\t\t\t\t\tmessageId: currentMessage.id,\n\t\t\t\t\t\tchatId: currentMessage.chatId,\n\t\t\t\t\t});\n\n\t\t\t\t\tstore.commit('updateLoadingMessagePreviousSiblingId', {\n\t\t\t\t\t\toldId: currentMessage.id,\n\t\t\t\t\t\tnewId: newPreviousMessageId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (store.getters.hasLoadingMessageByMessageId(id))\n\t\t\t\t{\n\t\t\t\t\tstore.commit('deleteLoadingMessageByMessageId', {\n\t\t\t\t\t\tmessageId: id,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tstore.commit('delete', { id });\n\t\t\t},\n\t\t\t/** @function messages/clearChatCollection */\n\t\t\tclearChatCollection: (store, payload: {chatId: number}) => {\n\t\t\t\tconst { chatId } = payload;\n\t\t\t\tstore.commit('clearCollection', { chatId });\n\t\t\t},\n\t\t\t/** @function messages/deleteAttach */\n\t\t\tdeleteAttach: (store, payload: {messageId: number, attachId: string }) => {\n\t\t\t\tconst { messageId, attachId } = payload;\n\t\t\t\tconst message: ImModelMessage = store.state.collection[messageId];\n\t\t\t\tif (!message || !Type.isArray(message.attach))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst attach = message.attach.filter((attachItem: AttachConfig) => {\n\t\t\t\t\treturn attachId !== attachItem.id;\n\t\t\t\t});\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tid: messageId,\n\t\t\t\t\tfields: { ...message, ...this.#formatFields({ attach }) },\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/addLoadingMessage */\n\t\t\taddLoadingMessage: (store, payload: { message: ImModelMessage }) => {\n\t\t\t\tconst message = {\n\t\t\t\t\t...this.getElementState(),\n\t\t\t\t\t...this.#formatFields(payload.message),\n\t\t\t\t};\n\n\t\t\t\tstore.commit('store', {\n\t\t\t\t\tmessages: [message],\n\t\t\t\t});\n\n\t\t\t\tif (!store.state.chatCollection[message.chatId])\n\t\t\t\t{\n\t\t\t\t\tstore.commit('initChatCollection', {\n\t\t\t\t\t\tchatId: message.chatId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst previousSiblingId: ?MessageId = (() => {\n\t\t\t\t\tconst id: number | string | null = store.getters.findLastChatMessageId(message.chatId);\n\t\t\t\t\tif (Type.isNull(id))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn this.#makeFakePreviousSiblingId(message.chatId);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn id;\n\t\t\t\t})();\n\n\t\t\t\tstore.commit('addLoadingMessage', {\n\t\t\t\t\tmessage,\n\t\t\t\t\tpreviousSiblingId,\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function messages/deleteLoadingMessageByMessageId */\n\t\t\tdeleteLoadingMessageByMessageId: (store, payload: { messageId: string }) => {\n\t\t\t\tstore.commit('deleteLoadingMessageByMessageId', {\n\t\t\t\t\t...payload,\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\t/* eslint-disable no-param-reassign */\n\t// eslint-disable-next-line max-lines-per-function\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tsetChatCollection: (state: MessagesState, payload: {messages: ImModelMessage[]}) => {\n\t\t\t\tLogger.warn('Messages model: setChatCollection mutation', payload);\n\t\t\t\tpayload.messages.forEach((message) => {\n\t\t\t\t\tif (!state.chatCollection[message.chatId])\n\t\t\t\t\t{\n\t\t\t\t\t\tstate.chatCollection[message.chatId] = new Set();\n\t\t\t\t\t}\n\t\t\t\t\tstate.chatCollection[message.chatId].add(message.id);\n\t\t\t\t});\n\t\t\t},\n\t\t\tinitChatCollection: (state: MessagesState, payload: { chatId: number }) => {\n\t\t\t\tif (!state.chatCollection[payload.chatId])\n\t\t\t\t{\n\t\t\t\t\tstate.chatCollection[payload.chatId] = new Set();\n\t\t\t\t}\n\t\t\t},\n\t\t\tstore: (state: MessagesState, payload: {messages: ImModelMessage[]}) => {\n\t\t\t\tLogger.warn('Messages model: store mutation', payload);\n\t\t\t\tpayload.messages.forEach((message) => {\n\t\t\t\t\tstate.collection[message.id] = message;\n\t\t\t\t});\n\t\t\t},\n\t\t\tupdateWithId: (state: MessagesState, payload: {id: number | string, fields: Object}) => {\n\t\t\t\tLogger.warn('Messages model: updateWithId mutation', payload);\n\t\t\t\tconst { id, fields } = payload;\n\t\t\t\tconst currentMessage = { ...state.collection[id] };\n\n\t\t\t\tdelete state.collection[id];\n\t\t\t\tstate.collection[fields.id] = { ...currentMessage, ...fields, sending: false };\n\n\t\t\t\tif (state.chatCollection[currentMessage.chatId].has(id))\n\t\t\t\t{\n\t\t\t\t\tstate.chatCollection[currentMessage.chatId].delete(id);\n\t\t\t\t\tstate.chatCollection[currentMessage.chatId].add(fields.id);\n\t\t\t\t}\n\t\t\t},\n\t\t\tupdate: (state: MessagesState, payload: {id: number | string, fields: Object}) => {\n\t\t\t\tLogger.warn('Messages model: update mutation', payload);\n\t\t\t\tconst { id, fields } = payload;\n\t\t\t\tstate.collection[id] = { ...state.collection[id], ...fields };\n\t\t\t},\n\t\t\tdelete: (state: MessagesState, payload: {id: number | string}) => {\n\t\t\t\tLogger.warn('Messages model: delete mutation', payload);\n\t\t\t\tconst { id } = payload;\n\t\t\t\tconst { chatId } = state.collection[id];\n\t\t\t\tstate.chatCollection[chatId]?.delete(id);\n\t\t\t\tdelete state.collection[id];\n\t\t\t},\n\t\t\tclearCollection: (state: MessagesState, payload: {chatId: number}) => {\n\t\t\t\tLogger.warn('Messages model: clear collection mutation', payload.chatId);\n\t\t\t\tstate.chatCollection[payload.chatId] = new Set();\n\t\t\t},\n\t\t\treadMessages: (state: MessagesState, payload: {messageIdsToRead: number[], messageIdsToView: number[]}) => {\n\t\t\t\tconst { messageIdsToRead, messageIdsToView } = payload;\n\t\t\t\tmessageIdsToRead.forEach((messageId) => {\n\t\t\t\t\tconst message = state.collection[messageId];\n\t\t\t\t\tif (!message)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tmessage.unread = false;\n\t\t\t\t});\n\t\t\t\tmessageIdsToView.forEach((messageId) => {\n\t\t\t\t\tconst message = state.collection[messageId];\n\t\t\t\t\tif (!message)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tmessage.viewed = true;\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetViewedByOthers: (state: MessagesState, payload: {ids: number[]}) => {\n\t\t\t\tconst { ids } = payload;\n\t\t\t\tids.forEach((id) => {\n\t\t\t\t\tconst message = state.collection[id];\n\t\t\t\t\tif (!message)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst isOwnMessage = message.authorId === Core.getUserId();\n\t\t\t\t\tif (!isOwnMessage || message.viewedByOthers)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tmessage.viewedByOthers = true;\n\t\t\t\t});\n\t\t\t},\n\t\t\taddLoadingMessage: (\n\t\t\t\tstate: MessagesState,\n\t\t\t\tpayload: {\n\t\t\t\t\tmessage: ImModelMessage,\n\t\t\t\t\tpreviousSiblingId: MessageId,\n\t\t\t\t},\n\t\t\t) => {\n\t\t\t\tconst { message, previousSiblingId } = payload;\n\t\t\t\tstate.loadingMessages[previousSiblingId] = message;\n\t\t\t},\n\t\t\tdeleteLoadingMessageByMessageId: (state: MessagesState, payload: { messageId: MessageId }) => {\n\t\t\t\tconst entries: Array<Array<MessageId, ImModelMessage>> = Object.entries(state.loadingMessages);\n\t\t\t\tconst entry: ?Array<MessageId, ImModelMessage> = entries.find(([, message: ImModelMessage]) => {\n\t\t\t\t\treturn message.id === payload.messageId;\n\t\t\t\t});\n\n\t\t\t\tif (entry)\n\t\t\t\t{\n\t\t\t\t\tconst [previousSiblingId: MessageId] = entry;\n\t\t\t\t\tdelete state.loadingMessages[previousSiblingId];\n\t\t\t\t}\n\t\t\t},\n\t\t\tupdateLoadingMessagePreviousSiblingId: (\n\t\t\t\tstate: MessagesState,\n\t\t\t\tpayload: {\n\t\t\t\t\toldId: MessageId,\n\t\t\t\t\tnewId: MessageId,\n\t\t\t\t},\n\t\t\t) => {\n\t\t\t\tconst { oldId, newId } = payload;\n\t\t\t\tconst loadingMessage: ImModelMessage = state.loadingMessages[oldId];\n\t\t\t\tif (loadingMessage)\n\t\t\t\t{\n\t\t\t\t\tdelete state.loadingMessages[oldId];\n\t\t\t\t\tstate.loadingMessages[newId] = loadingMessage;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\t#findNextLoadingMessages(message: ImModelMessage, getters: JsonObject): Array<ImModelMessage>\n\t{\n\t\tif (getters.hasLoadingMessageByPreviousSiblingId(message.id))\n\t\t{\n\t\t\tconst loadingMessage: ImModelMessage = getters.getLoadingMessageByPreviousSiblingId(message.id);\n\n\t\t\treturn [\n\t\t\t\tloadingMessage,\n\t\t\t\t...this.#findNextLoadingMessages(loadingMessage, getters),\n\t\t\t];\n\t\t}\n\n\t\treturn [];\n\t}\n\n\t#formatFields(rawFields: JsonObject): JsonObject\n\t{\n\t\tconst messageParams = Type.isPlainObject(rawFields.params) ? rawFields.params : {};\n\t\tconst fields = { ...rawFields, ...messageParams };\n\n\t\tconst formattedFields: ImModelMessage = formatFieldsWithConfig(fields, messageFieldsConfig);\n\t\tif (this.#needToSwapAuthorId(formattedFields, messageParams))\n\t\t{\n\t\t\tformattedFields.authorId = this.#prepareSwapAuthorId(formattedFields, messageParams);\n\t\t}\n\n\t\treturn formattedFields;\n\t}\n\n\t#needToSwapAuthorId(formattedFields: ImModelMessage, messageParams: JsonObject): boolean\n\t{\n\t\tconst { NAME: name, USER_ID: userId } = messageParams;\n\n\t\treturn Boolean(name && userId && formattedFields.authorId);\n\t}\n\n\t#prepareSwapAuthorId(formattedFields: ImModelMessage, messageParams: JsonObject): string\n\t{\n\t\tconst { NAME: authorName, USER_ID: userId, AVATAR: avatar } = messageParams;\n\t\tconst originalAuthorId = formattedFields.authorId;\n\t\tconst fakeAuthorId = convertToNumber(userId);\n\t\tconst userManager = new UserManager();\n\t\tconst networkId = `${UserIdNetworkPrefix}-${originalAuthorId}-${fakeAuthorId}`;\n\t\tvoid userManager.setUsersToModel({\n\t\t\tnetworkId,\n\t\t\tname: authorName,\n\t\t\tavatar: avatar ?? '',\n\t\t});\n\n\t\treturn networkId;\n\t}\n\n\t#getMaxMessageId(messageIds: number[]): number\n\t{\n\t\tlet maxMessageId = 0;\n\t\tmessageIds.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\t#findLowestMessageId(state: MessagesState, chatId: number): number\n\t{\n\t\tlet firstId = null;\n\t\tconst messages = [...state.chatCollection[chatId]];\n\t\tfor (const messageId of messages)\n\t\t{\n\t\t\tconst element = state.collection[messageId];\n\t\t\tif (!firstId)\n\t\t\t{\n\t\t\t\tfirstId = element.id;\n\t\t\t}\n\n\t\t\tif (Utils.text.isTempMessage(element.id))\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (element.id < firstId)\n\t\t\t{\n\t\t\t\tfirstId = element.id;\n\t\t\t}\n\t\t}\n\n\t\treturn firstId;\n\t}\n\n\t#findMaxMessageId(state: MessagesState, chatId: number): number\n\t{\n\t\tlet lastId = 0;\n\t\tconst messages = [...state.chatCollection[chatId]];\n\t\tfor (const messageId of messages)\n\t\t{\n\t\t\tconst element = state.collection[messageId];\n\t\t\tif (Utils.text.isTempMessage(element.id))\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (element.id > lastId)\n\t\t\t{\n\t\t\t\tlastId = element.id;\n\t\t\t}\n\t\t}\n\n\t\treturn lastId;\n\t}\n\n\t#findLastOwnMessageId(state: MessagesState, chatId: number): number\n\t{\n\t\tlet lastOwnMessageId = 0;\n\t\tconst messages = [...state.chatCollection[chatId]].sort((a, z) => z - a);\n\t\tfor (const messageId of messages)\n\t\t{\n\t\t\tconst element = state.collection[messageId];\n\t\t\tif (Utils.text.isTempMessage(element.id))\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (element.authorId === Core.getUserId())\n\t\t\t{\n\t\t\t\tlastOwnMessageId = element.id;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn lastOwnMessageId;\n\t}\n\n\t#findFirstUnread(state: MessagesState, chatId: number): number\n\t{\n\t\tlet resultId = 0;\n\t\tfor (const messageId of state.chatCollection[chatId])\n\t\t{\n\t\t\tconst message: ImModelMessage = state.collection[messageId];\n\t\t\tif (message.unread)\n\t\t\t{\n\t\t\t\tresultId = messageId;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn resultId;\n\t}\n\n\t#sortCollection(a: ImModelMessage, b: ImModelMessage): number\n\t{\n\t\tif (Utils.text.isUuidV4(a.id) && !Utils.text.isUuidV4(b.id))\n\t\t{\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (!Utils.text.isUuidV4(a.id) && Utils.text.isUuidV4(b.id))\n\t\t{\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (Utils.text.isUuidV4(a.id) && Utils.text.isUuidV4(b.id))\n\t\t{\n\t\t\treturn a.date.getTime() - b.date.getTime();\n\t\t}\n\n\t\treturn a.id - b.id;\n\t}\n\n\t#makeFakePreviousSiblingId(chatId: number): number\n\t{\n\t\treturn `${chatId}/-1`;\n\t}\n}\n","import { Core } from 'im.v2.application.core';\nimport { Utils } from 'im.v2.lib.utils';\nimport { Text, Type, type JsonObject } from 'main.core';\n\nexport const prepareManagerList = (managerList: number[] | string[]): number[] => {\n\tconst result = [];\n\n\tmanagerList.forEach((rawUserId) => {\n\t\tconst userId = Number.parseInt(rawUserId, 10);\n\t\tif (userId > 0)\n\t\t{\n\t\t\tresult.push(userId);\n\t\t}\n\t});\n\n\treturn result;\n};\n\nexport const prepareChatName = (chatName: string | number): string => {\n\treturn Text.decode(chatName.toString());\n};\n\nexport const prepareAvatar = (avatar: string): string => {\n\tlet result = '';\n\n\tif (!avatar || avatar.endsWith('/js/im/images/blank.gif'))\n\t{\n\t\tresult = '';\n\t}\n\telse if (avatar.startsWith('http'))\n\t{\n\t\tresult = avatar;\n\t}\n\telse\n\t{\n\t\tresult = Core.getHost() + avatar;\n\t}\n\n\tif (result)\n\t{\n\t\tresult = encodeURI(result);\n\t}\n\n\treturn result;\n};\n\nexport const prepareMuteList = (muteList: Object[] | Object): Object[] => {\n\tconst result = [];\n\n\tif (Type.isArray(muteList))\n\t{\n\t\tmuteList.forEach((rawUserId) => {\n\t\t\tconst userId = Number.parseInt(rawUserId, 10);\n\t\t\tif (userId > 0)\n\t\t\t{\n\t\t\t\tresult.push(userId);\n\t\t\t}\n\t\t});\n\t}\n\telse if (Type.isPlainObject(muteList))\n\t{\n\t\tObject.entries(muteList).forEach(([key, value]) => {\n\t\t\tif (!value)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst userId = Number.parseInt(key, 10);\n\t\t\tif (userId > 0)\n\t\t\t{\n\t\t\t\tresult.push(userId);\n\t\t\t}\n\t\t});\n\t}\n\n\treturn result;\n};\n\ntype LastMessageViews = { countOfViewers: number, firstViewers: Object[], messageId: number };\nexport const prepareLastMessageViews = (rawLastMessageViews: JsonObject): LastMessageViews => {\n\tconst {\n\t\tcountOfViewers,\n\t\tfirstViewers: rawFirstViewers,\n\t\tmessageId,\n\t} = rawLastMessageViews;\n\n\tlet firstViewer = null;\n\tfor (const rawFirstViewer of rawFirstViewers)\n\t{\n\t\tif (rawFirstViewer.userId === Core.getUserId())\n\t\t{\n\t\t\tcontinue;\n\t\t}\n\n\t\tfirstViewer = {\n\t\t\tuserId: rawFirstViewer.userId,\n\t\t\tuserName: rawFirstViewer.userName,\n\t\t\tdate: Utils.date.cast(rawFirstViewer.date),\n\t\t};\n\t\tbreak;\n\t}\n\n\tif (countOfViewers > 0 && !firstViewer)\n\t{\n\t\tthrow new Error('Chats model: no first viewer for message');\n\t}\n\n\treturn {\n\t\tcountOfViewers,\n\t\tfirstViewer,\n\t\tmessageId,\n\t};\n};\n","import { Utils } from 'im.v2.lib.utils';\nimport { Type } from 'main.core';\nimport { convertToNumber, convertToString, isNumberOrString } from '../../utils/format';\nimport { formatFieldsWithConfig, type FieldsConfig } from 'im.v2.model';\nimport {\n\tprepareAvatar,\n\tprepareChatName,\n\tprepareLastMessageViews,\n\tprepareManagerList,\n\tprepareMuteList,\n} from './format-functions';\n\nexport const chatFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'dialogId',\n\t\ttargetFieldName: 'dialogId',\n\t\tcheckFunction: isNumberOrString,\n\t\tformatFunction: convertToString,\n\t},\n\t{\n\t\tfieldName: ['id', 'chatId'],\n\t\ttargetFieldName: 'chatId',\n\t\tcheckFunction: isNumberOrString,\n\t\tformatFunction: convertToNumber,\n\t},\n\t{\n\t\tfieldName: 'type',\n\t\ttargetFieldName: 'type',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'quoteId',\n\t\ttargetFieldName: 'quoteId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'counter',\n\t\ttargetFieldName: 'counter',\n\t\tcheckFunction: isNumberOrString,\n\t\tformatFunction: convertToNumber,\n\t},\n\t{\n\t\tfieldName: 'userCounter',\n\t\ttargetFieldName: 'userCounter',\n\t\tcheckFunction: isNumberOrString,\n\t\tformatFunction: convertToNumber,\n\t},\n\t{\n\t\tfieldName: 'lastId',\n\t\ttargetFieldName: 'lastReadId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'markedId',\n\t\ttargetFieldName: 'markedId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'lastMessageId',\n\t\ttargetFieldName: 'lastMessageId',\n\t\tcheckFunction: isNumberOrString,\n\t\tformatFunction: convertToNumber,\n\t},\n\t{\n\t\tfieldName: 'lastMessageViews',\n\t\ttargetFieldName: 'lastMessageViews',\n\t\tcheckFunction: Type.isPlainObject,\n\t\tformatFunction: prepareLastMessageViews,\n\t},\n\t{\n\t\tfieldName: 'hasPrevPage',\n\t\ttargetFieldName: 'hasPrevPage',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'hasNextPage',\n\t\ttargetFieldName: 'hasNextPage',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'savedPositionMessageId',\n\t\ttargetFieldName: 'savedPositionMessageId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: ['title', 'name'],\n\t\ttargetFieldName: 'name',\n\t\tcheckFunction: isNumberOrString,\n\t\tformatFunction: prepareChatName,\n\t},\n\t{\n\t\tfieldName: ['owner', 'ownerId'],\n\t\ttargetFieldName: 'ownerId',\n\t\tcheckFunction: isNumberOrString,\n\t\tformatFunction: convertToNumber,\n\t},\n\t{\n\t\tfieldName: 'avatar',\n\t\ttargetFieldName: 'avatar',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: prepareAvatar,\n\t},\n\t{\n\t\tfieldName: 'color',\n\t\ttargetFieldName: 'color',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'extranet',\n\t\ttargetFieldName: 'extranet',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'containsCollaber',\n\t\ttargetFieldName: 'containsCollaber',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'entityLink',\n\t\ttargetFieldName: 'entityLink',\n\t\tcheckFunction: Type.isPlainObject,\n\t\tformatFunction: (target) => {\n\t\t\treturn formatFieldsWithConfig(target, chatEntityFieldsConfig);\n\t\t},\n\t},\n\t{\n\t\tfieldName: 'dateCreate',\n\t\ttargetFieldName: 'dateCreate',\n\t\tformatFunction: Utils.date.cast,\n\t},\n\t{\n\t\tfieldName: 'public',\n\t\ttargetFieldName: 'public',\n\t\tcheckFunction: Type.isPlainObject,\n\t},\n\t{\n\t\tfieldName: 'inputActionList',\n\t\ttargetFieldName: 'inputActionList',\n\t\tcheckFunction: Type.isPlainObject,\n\t},\n\t{\n\t\tfieldName: 'managerList',\n\t\ttargetFieldName: 'managerList',\n\t\tcheckFunction: Type.isArray,\n\t\tformatFunction: prepareManagerList,\n\t},\n\t{\n\t\tfieldName: 'muteList',\n\t\ttargetFieldName: 'muteList',\n\t\tcheckFunction: [Type.isArray, Type.isPlainObject],\n\t\tformatFunction: prepareMuteList,\n\t},\n\t{\n\t\tfieldName: 'inited',\n\t\ttargetFieldName: 'inited',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'loading',\n\t\ttargetFieldName: 'loading',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'description',\n\t\ttargetFieldName: 'description',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'diskFolderId',\n\t\ttargetFieldName: 'diskFolderId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'role',\n\t\ttargetFieldName: 'role',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: (target: string) => target.toLowerCase(),\n\t},\n\t{\n\t\tfieldName: 'permissions',\n\t\ttargetFieldName: 'permissions',\n\t\tcheckFunction: Type.isPlainObject,\n\t},\n\t{\n\t\tfieldName: 'tariffRestrictions',\n\t\ttargetFieldName: 'tariffRestrictions',\n\t\tcheckFunction: Type.isPlainObject,\n\t},\n\t{\n\t\tfieldName: 'parentChatId',\n\t\ttargetFieldName: 'parentChatId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'backgroundId',\n\t\ttargetFieldName: 'backgroundId',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'textFieldEnabled',\n\t\ttargetFieldName: 'isTextareaEnabled',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n];\n\nexport const chatEntityFieldsConfig = [\n\t{\n\t\tfieldName: 'type',\n\t\ttargetFieldName: 'type',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'url',\n\t\ttargetFieldName: 'url',\n\t\tcheckFunction: Type.isString,\n\t},\n];\n","import { Type } from 'main.core';\n\nimport type { FieldsConfig } from '../../../../utils/validate';\n\nexport const autoDeleteFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'delay',\n\t\ttargetFieldName: 'delay',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'chatId',\n\t\ttargetFieldName: 'chatId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n];\n","import { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { formatFieldsWithConfig } from 'im.v2.model';\nimport { AutoDeleteDelay } from 'im.v2.const';\n\nimport { autoDeleteFieldsConfig } from './format/fields-config';\n\nimport type { JsonObject } from 'main.core';\nimport type { ActionTree, MutationTree, GetterTree } from 'ui.vue3.vuex';\n\ntype ChatId = number;\ntype Delay = number;\ntype AutoDeleteState = {\n\tcollection: Map<ChatId, Delay>\n};\n\ntype AutoDeletePayload = {\n\tchatId: number,\n\tdelay: number,\n};\n\nexport class AutoDeleteModel extends BuilderModel\n{\n\tgetState(): AutoDeleteState\n\t{\n\t\treturn {\n\t\t\tcollection: new Map(),\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function chats/autoDelete/isEnabled */\n\t\t\tisEnabled: (state: AutoDeleteState) => (chatId: ChatId): boolean => {\n\t\t\t\treturn state.collection.has(chatId) ?? false;\n\t\t\t},\n\t\t\t/** @function chats/autoDelete/getDelay */\n\t\t\tgetDelay: (state: AutoDeleteState) => (chatId: ChatId): Delay => {\n\t\t\t\treturn state.collection.get(chatId) ?? AutoDeleteDelay.Off;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function chats/autoDelete/set */\n\t\t\tset: (store, rawPayload: AutoDeletePayload | AutoDeletePayload[]) => {\n\t\t\t\tlet payload = rawPayload;\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\n\t\t\t\tpayload.forEach((element: AutoDeletePayload) => {\n\t\t\t\t\tconst formattedElement = this.#formatFields(element);\n\t\t\t\t\tconst { delay } = formattedElement;\n\t\t\t\t\tif (delay === AutoDeleteDelay.Off)\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('delete', formattedElement);\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tstore.commit('set', formattedElement);\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\t/* eslint-disable no-param-reassign */\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tset: (state: AutoDeleteState, payload: { chatId: ChatId, delay: Delay }) => {\n\t\t\t\tconst { chatId, delay } = payload;\n\n\t\t\t\tstate.collection.set(chatId, delay);\n\t\t\t},\n\t\t\tdelete: (state: AutoDeleteState, payload: { chatId: ChatId, delay: Delay }) => {\n\t\t\t\tconst { chatId } = payload;\n\n\t\t\t\tstate.collection.delete(chatId);\n\t\t\t},\n\t\t};\n\t}\n\n\t#formatFields(fields: JsonObject): AutoDeletePayload\n\t{\n\t\treturn formatFieldsWithConfig(fields, autoDeleteFieldsConfig);\n\t}\n}\n","import { formatFieldsWithConfig } from 'im.v2.model';\nimport { Type } from 'main.core';\n\nimport type { FieldsConfig } from 'im.v2.model';\n\nexport const collabFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'collabId',\n\t\ttargetFieldName: 'collabId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'guestCount',\n\t\ttargetFieldName: 'guestCount',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'entities',\n\t\ttargetFieldName: 'entities',\n\t\tcheckFunction: Type.isPlainObject,\n\t\tformatFunction: (target) => formatFieldsWithConfig(target, collabEntitiesFieldConfig),\n\t},\n];\n\nconst collabEntitiesFieldConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'tasks',\n\t\ttargetFieldName: 'tasks',\n\t\tcheckFunction: Type.isPlainObject,\n\t\tformatFunction: (target) => formatFieldsWithConfig(target, collabEntityFieldConfig),\n\t},\n\t{\n\t\tfieldName: 'files',\n\t\ttargetFieldName: 'files',\n\t\tcheckFunction: Type.isPlainObject,\n\t\tformatFunction: (target) => formatFieldsWithConfig(target, collabEntityFieldConfig),\n\t},\n\t{\n\t\tfieldName: 'calendar',\n\t\ttargetFieldName: 'calendar',\n\t\tcheckFunction: Type.isPlainObject,\n\t\tformatFunction: (target) => formatFieldsWithConfig(target, collabEntityFieldConfig),\n\t},\n];\n\nconst collabEntityFieldConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'counter',\n\t\ttargetFieldName: 'counter',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'url',\n\t\ttargetFieldName: 'url',\n\t\tcheckFunction: Type.isStringFilled,\n\t},\n];\n","import { BuilderModel } from 'ui.vue3.vuex';\nimport { Type } from 'main.core';\n\nimport { formatFieldsWithConfig } from 'im.v2.model';\n\nimport { collabFieldsConfig } from './format/field-config';\n\nimport type { JsonObject } from 'main.core';\nimport type { ActionTree, MutationTree, GetterTree } from 'ui.vue3.vuex';\nimport type { ImModelCollabInfo } from 'im.v2.model';\n\ntype CollabsState = {\n\tcollection: {\n\t\t[chatId: string]: ImModelCollabInfo\n\t},\n};\n\ntype CollabCounterEntity = 'tasks' | 'calendar';\n\nexport class CollabsModel extends BuilderModel\n{\n\tgetState(): CollabsState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t};\n\t}\n\n\tgetElementState(): ImModelCollabInfo\n\t{\n\t\treturn {\n\t\t\tcollabId: 0,\n\t\t\tguestCount: 0,\n\t\t\tentities: {\n\t\t\t\ttasks: {\n\t\t\t\t\tcounter: 0,\n\t\t\t\t\turl: '',\n\t\t\t\t},\n\t\t\t\tfiles: {\n\t\t\t\t\tcounter: 0,\n\t\t\t\t\turl: '',\n\t\t\t\t},\n\t\t\t\tcalendar: {\n\t\t\t\t\tcounter: 0,\n\t\t\t\t\turl: '',\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function chats/collabs/getByChatId */\n\t\t\tgetByChatId: (state: CollabsState) => (chatId: number): ?ImModelCollabInfo => {\n\t\t\t\treturn state.collection[chatId] ?? this.getElementState();\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function chats/collabs/set */\n\t\t\tset: (store, payload: { chatId: string, collabInfo: ImModelCollabInfo }) => {\n\t\t\t\tconst { chatId, collabInfo } = payload;\n\t\t\t\tif (!Type.isPlainObject(collabInfo))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('set', {\n\t\t\t\t\tchatId,\n\t\t\t\t\tcollabInfo: this.#formatFields(collabInfo),\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function chats/collabs/setCounter */\n\t\t\tsetCounter: (store, payload: { chatId: string, entity: CollabCounterEntity, counter: number }) => {\n\t\t\t\tconst { chatId, entity, counter } = payload;\n\t\t\t\tconst state: CollabsState = store.state;\n\t\t\t\tconst currentRecord = state.collection[chatId];\n\t\t\t\tif (!currentRecord || !currentRecord.entities[entity])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setCounter', { chatId, entity, counter });\n\t\t\t},\n\t\t\t/** @function chats/collabs/setGuestCount */\n\t\t\tsetGuestCount: (store, payload: { chatId: string, guestCount: number }) => {\n\t\t\t\tconst { chatId, guestCount } = payload;\n\t\t\t\tconst state: CollabsState = store.state;\n\t\t\t\tconst currentRecord = state.collection[chatId];\n\t\t\t\tif (!currentRecord)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setGuestCount', { chatId, guestCount });\n\t\t\t},\n\t\t};\n\t}\n\n\t/* eslint-disable no-param-reassign */\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tset: (state: CollabsState, payload: { chatId: string, collabInfo: ImModelCollabInfo }) => {\n\t\t\t\tconst { chatId, collabInfo } = payload;\n\n\t\t\t\tstate.collection[chatId] = collabInfo;\n\t\t\t},\n\t\t\tsetCounter: (state: CollabsState, payload: { chatId: string, entity: CollabCounterEntity, counter: number }) => {\n\t\t\t\tconst { chatId, entity, counter } = payload;\n\n\t\t\t\tconst currentRecord = state.collection[chatId];\n\t\t\t\tcurrentRecord.entities[entity].counter = counter;\n\t\t\t},\n\t\t\tsetGuestCount: (state: CollabsState, payload: { chatId: string, guestCount: number }) => {\n\t\t\t\tconst { chatId, guestCount } = payload;\n\n\t\t\t\tconst currentRecord = state.collection[chatId];\n\t\t\t\tcurrentRecord.guestCount = guestCount;\n\t\t\t},\n\t\t};\n\t}\n\n\t#formatFields(fields: JsonObject): JsonObject\n\t{\n\t\treturn formatFieldsWithConfig(fields, collabFieldsConfig);\n\t}\n}\n","import { BuilderModel, GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\n\nimport type { InputActionType } from 'im.v2.lib.input-action';\n\nexport type InputActionState = {\n\tcollection: {\n\t\t[dialogId: string]: ChatInputActions,\n\t},\n};\n\nexport type ChatInputActions = InputActionUserRecord[];\n\ntype InputActionUserRecord = {\n\ttype: InputActionType,\n\tuserId: number,\n\tuserName: string\n};\n\ntype InputActionPayload = {\n\ttype: InputActionType,\n\tdialogId: string,\n\tuserId: number,\n\tuserName?: string\n};\n\n/* eslint-disable no-param-reassign */\nexport class InputActionsModel extends BuilderModel\n{\n\tgetState(): InputActionState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function chats/inputActions/getByDialogId */\n\t\t\tgetByDialogId: (state: InputActionState) => (dialogId: string): ?ChatInputActions => {\n\t\t\t\tconst chatActionList = state.collection[dialogId];\n\t\t\t\tif (!chatActionList || chatActionList.length === 0)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn chatActionList;\n\t\t\t},\n\t\t\t/** @function chats/inputActions/isChatActive */\n\t\t\tisChatActive: (state: InputActionState) => (dialogId: string): boolean => {\n\t\t\t\tconst chatActionList = state.collection[dialogId];\n\t\t\t\tif (!chatActionList)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn chatActionList.length > 0;\n\t\t\t},\n\t\t\t/** @function chats/inputActions/isActionActive */\n\t\t\tisActionActive: (state: InputActionState) => (payload: InputActionPayload): boolean => {\n\t\t\t\tconst { dialogId, type, userId } = payload;\n\t\t\t\tif (!state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst chatActionList = state.collection[dialogId];\n\n\t\t\t\treturn this.isAlreadyActive(chatActionList, type, userId);\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function chats/inputActions/start */\n\t\t\tstart: (store, payload: InputActionPayload) => {\n\t\t\t\tconst { dialogId, type, userId } = payload;\n\t\t\t\tif (!store.state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\tstore.commit('initCollection', dialogId);\n\t\t\t\t}\n\n\t\t\t\tconst chatActionList = store.state.collection[dialogId];\n\t\t\t\tconst isAlreadyActive = this.isAlreadyActive(chatActionList, type, userId);\n\t\t\t\tif (isAlreadyActive)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('start', payload);\n\t\t\t},\n\t\t\t/** @function chats/inputActions/stop */\n\t\t\tstop: (store, payload: InputActionPayload) => {\n\t\t\t\tconst { dialogId, type, userId } = payload;\n\t\t\t\tconst chatActionList = store.state.collection[dialogId];\n\t\t\t\tif (!chatActionList)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst isAlreadyActive = this.isAlreadyActive(chatActionList, type, userId);\n\t\t\t\tif (!isAlreadyActive)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('stop', payload);\n\t\t\t},\n\t\t\t/** @function chats/inputActions/stopUserActionsInChat */\n\t\t\tstopUserActionsInChat: (store, payload: { userId: number, dialogId: string }) => {\n\t\t\t\tconst { dialogId } = payload;\n\t\t\t\tconst chatActionList = store.state.collection[dialogId];\n\t\t\t\tif (!chatActionList)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('stopUserActionsInChat', payload);\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tstart: (state: InputActionState, payload: InputActionPayload) => {\n\t\t\t\tconst { dialogId, type, userId, userName } = payload;\n\n\t\t\t\tconst chatActionList = state.collection[dialogId];\n\t\t\t\tchatActionList.push({\n\t\t\t\t\ttype,\n\t\t\t\t\tuserId,\n\t\t\t\t\tuserName,\n\t\t\t\t});\n\t\t\t},\n\t\t\tstop: (state: InputActionState, payload: InputActionPayload) => {\n\t\t\t\tconst { dialogId, type, userId } = payload;\n\n\t\t\t\tconst chatActionList = state.collection[dialogId];\n\t\t\t\tstate.collection[dialogId] = chatActionList.filter((userRecord) => {\n\t\t\t\t\treturn userRecord.userId !== userId || userRecord.type !== type;\n\t\t\t\t});\n\t\t\t},\n\t\t\tstopUserActionsInChat: (state: InputActionState, payload: { userId: number, dialogId: string }) => {\n\t\t\t\tconst { dialogId, userId } = payload;\n\n\t\t\t\tconst chatActionList = state.collection[dialogId];\n\t\t\t\tstate.collection[dialogId] = chatActionList.filter((userRecord) => {\n\t\t\t\t\treturn userRecord.userId !== userId;\n\t\t\t\t});\n\t\t\t},\n\t\t\tinitCollection: (state: InputActionState, dialogId: string) => {\n\t\t\t\tstate.collection[dialogId] = [];\n\t\t\t},\n\t\t};\n\t}\n\n\tisAlreadyActive(list: InputActionUserRecord[], type: InputActionType, userId: number): boolean\n\t{\n\t\treturn list.some((userRecord) => {\n\t\t\treturn userRecord.userId === userId && userRecord.type === type;\n\t\t});\n\t}\n}\n","import { Type, type JsonObject } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\nimport { Color, ChatType, UserRole } from 'im.v2.const';\nimport { Utils } from 'im.v2.lib.utils';\nimport { formatFieldsWithConfig } from 'im.v2.model';\n\nimport { chatFieldsConfig } from './format/field-config';\nimport { AutoDeleteModel } from './nested-modules/auto-delete/auto-delete';\nimport { CollabsModel } from './nested-modules/collabs/collabs';\nimport { InputActionsModel } from './nested-modules/input-actions';\n\nimport type { GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\nimport type { Chat as ImModelChat } from '../type/chat';\n\ntype ChatState = {\n\tcollection: {[dialogId: string]: ImModelChat},\n};\n\n/* eslint-disable no-param-reassign */\nexport class ChatsModel extends BuilderModel\n{\n\tgetName(): string\n\t{\n\t\treturn 'chats';\n\t}\n\n\tgetNestedModules(): { [moduleName: string]: BuilderModel }\n\t{\n\t\treturn {\n\t\t\tcollabs: CollabsModel,\n\t\t\tinputActions: InputActionsModel,\n\t\t\tautoDelete: AutoDeleteModel,\n\t\t};\n\t}\n\n\tgetState(): ChatState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t};\n\t}\n\n\tgetElementState(): ImModelChat\n\t{\n\t\treturn {\n\t\t\tdialogId: '0',\n\t\t\tchatId: 0,\n\t\t\ttype: ChatType.chat,\n\t\t\tname: '',\n\t\t\tdescription: '',\n\t\t\tavatar: '',\n\t\t\tcolor: Color.base,\n\t\t\textranet: false,\n\t\t\tcontainsCollaber: false,\n\t\t\tcounter: 0,\n\t\t\tuserCounter: 0,\n\t\t\tlastReadId: 0,\n\t\t\tmarkedId: 0,\n\t\t\tlastMessageId: 0,\n\t\t\tlastMessageViews: {\n\t\t\t\tcountOfViewers: 0,\n\t\t\t\tfirstViewer: null,\n\t\t\t\tmessageId: 0,\n\t\t\t},\n\t\t\tsavedPositionMessageId: 0,\n\t\t\tmanagerList: [],\n\t\t\tinputActionList: {},\n\t\t\tmuteList: [],\n\t\t\tquoteId: 0,\n\t\t\townerId: 0,\n\t\t\tentityLink: {},\n\t\t\tdateCreate: null,\n\t\t\tpublic: {\n\t\t\t\tcode: '',\n\t\t\t\tlink: '',\n\t\t\t},\n\t\t\tinited: false,\n\t\t\tloading: false,\n\t\t\thasPrevPage: false,\n\t\t\thasNextPage: false,\n\t\t\tdiskFolderId: 0,\n\t\t\trole: UserRole.member,\n\t\t\tpermissions: {\n\t\t\t\tmanageUi: UserRole.none,\n\t\t\t\tmanageSettings: UserRole.none,\n\t\t\t\tmanageUsersAdd: UserRole.none,\n\t\t\t\tmanageUsersDelete: UserRole.none,\n\t\t\t\tmanageMessages: UserRole.member,\n\t\t\t},\n\t\t\ttariffRestrictions: {\n\t\t\t\tisHistoryLimitExceeded: false,\n\t\t\t},\n\t\t\tparentChatId: 0,\n\t\t\tbackgroundId: '',\n\t\t\tisTextareaEnabled: true,\n\t\t};\n\t}\n\n\t// eslint-disable-next-line max-lines-per-function\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function chats/get */\n\t\t\tget: (state: ChatState) => (dialogId: string, getBlank: boolean = false) => {\n\t\t\t\tif (!state.collection[dialogId] && getBlank)\n\t\t\t\t{\n\t\t\t\t\treturn this.getElementState();\n\t\t\t\t}\n\n\t\t\t\tif (!state.collection[dialogId] && !getBlank)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[dialogId];\n\t\t\t},\n\t\t\t/** @function chats/getByChatId */\n\t\t\tgetByChatId: (state: ChatState) => (chatId: number | string, getBlank: boolean = false) => {\n\t\t\t\tconst preparedChatId = Number.parseInt(chatId, 10);\n\n\t\t\t\tconst chat = Object.values(state.collection).find((item) => {\n\t\t\t\t\treturn item.chatId === preparedChatId;\n\t\t\t\t});\n\n\t\t\t\tif (!chat && getBlank)\n\t\t\t\t{\n\t\t\t\t\treturn this.getElementState();\n\t\t\t\t}\n\n\t\t\t\treturn chat;\n\t\t\t},\n\t\t\t/** @function chats/getQuoteId */\n\t\t\tgetQuoteId: (state: ChatState) => (dialogId: string) => {\n\t\t\t\tif (!state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[dialogId].quoteId;\n\t\t\t},\n\t\t\t/** @function chats/isUser */\n\t\t\tisUser: (state: ChatState) => (dialogId: string) => {\n\t\t\t\tif (!state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[dialogId].type === ChatType.user;\n\t\t\t},\n\t\t\t/** @function chats/getLastReadId */\n\t\t\tgetLastReadId: (state: ChatState) => (dialogId: string): number => {\n\t\t\t\tif (!state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\tconst { lastReadId } = state.collection[dialogId];\n\t\t\t\tconst lastReadIdMessage = Core.getStore().getters['messages/getById'](lastReadId);\n\t\t\t\tif (!lastReadIdMessage)\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn lastReadId;\n\t\t\t},\n\t\t\t/** @function chats/getInitialMessageId */\n\t\t\tgetInitialMessageId: (state: ChatState) => (dialogId: string): number => {\n\t\t\t\tif (!state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\tconst { lastReadId, markedId } = state.collection[dialogId];\n\t\t\t\tif (markedId === 0)\n\t\t\t\t{\n\t\t\t\t\treturn lastReadId;\n\t\t\t\t}\n\n\t\t\t\treturn Math.min(lastReadId, markedId);\n\t\t\t},\n\t\t\t/** @function chats/isSupport */\n\t\t\tisSupport: (state: ChatState) => (dialogId: string): boolean => {\n\t\t\t\tif (!state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[dialogId].type === ChatType.support24Question;\n\t\t\t},\n\t\t\t/** @function chats/getBackgroundId */\n\t\t\tgetBackgroundId: (state: ChatState) => (dialogId: string): string => {\n\t\t\t\tif (!state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[dialogId].backgroundId;\n\t\t\t},\n\t\t};\n\t}\n\n\t// eslint-disable-next-line max-lines-per-function\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function chats/set */\n\t\t\tset: (store, rawPayload: Array | Object) => {\n\t\t\t\tlet payload = rawPayload;\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\n\t\t\t\tpayload.map((element) => {\n\t\t\t\t\treturn this.formatFields(element);\n\t\t\t\t}).forEach((element) => {\n\t\t\t\t\tconst existingItem = store.state.collection[element.dialogId];\n\t\t\t\t\tif (existingItem)\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('update', {\n\t\t\t\t\t\t\tdialogId: element.dialogId,\n\t\t\t\t\t\t\tfields: element,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('add', {\n\t\t\t\t\t\t\tdialogId: element.dialogId,\n\t\t\t\t\t\t\tfields: { ...this.getElementState(), ...element },\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function chats/add */\n\t\t\tadd: (store, rawPayload: Array | Object) => {\n\t\t\t\tlet payload = rawPayload;\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\n\t\t\t\tpayload.map((element) => {\n\t\t\t\t\treturn this.formatFields(element);\n\t\t\t\t}).forEach((element) => {\n\t\t\t\t\tconst existingItem = store.state.collection[element.dialogId];\n\t\t\t\t\tif (!existingItem)\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('add', {\n\t\t\t\t\t\t\tdialogId: element.dialogId,\n\t\t\t\t\t\t\tfields: { ...this.getElementState(), ...element },\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function chats/update */\n\t\t\tupdate: (store, payload: {dialogId: string, fields: Object}) => {\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\t\tfields: this.formatFields(payload.fields),\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function chats/delete */\n\t\t\tdelete: (store, payload: {dialogId: string}) => {\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('delete', { dialogId: payload.dialogId });\n\t\t\t},\n\t\t\t/** @function chats/clearCounters */\n\t\t\tclearCounters: (store) => {\n\t\t\t\tstore.commit('clearCounters');\n\t\t\t},\n\t\t\t/** @function chats/mute */\n\t\t\tmute: (store, payload: {dialogId: string}) => {\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst currentUserId = Core.getUserId();\n\t\t\t\tif (existingItem.muteList.includes(currentUserId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst muteList = [...existingItem.muteList, currentUserId];\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tactionName: 'mute',\n\t\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\t\tfields: this.formatFields({ muteList }),\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function chats/unmute */\n\t\t\tunmute: (store, payload: {dialogId: string}) => {\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst currentUserId = Core.getUserId();\n\t\t\t\tconst muteList = existingItem.muteList.filter((item) => item !== currentUserId);\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tactionName: 'unmute',\n\t\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\t\tfields: this.formatFields({ muteList }),\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function chats/setLastMessageViews */\n\t\t\tsetLastMessageViews: (store, payload: {\n\t\t\t\tdialogId: string,\n\t\t\t\tfields: {userId: number, userName: string, date: string, messageId: number}\n\t\t\t}) => {\n\t\t\t\tconst { dialogId, fields: { userId, userName, date, messageId } } = payload;\n\t\t\t\tconst existingItem: ImModelChat = store.state.collection[dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst newLastMessageViews = {\n\t\t\t\t\tcountOfViewers: 1,\n\t\t\t\t\tmessageId,\n\t\t\t\t\tfirstViewer: {\n\t\t\t\t\t\tuserId,\n\t\t\t\t\t\tuserName,\n\t\t\t\t\t\tdate: Utils.date.cast(date),\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tactionName: 'setLastMessageViews',\n\t\t\t\t\tdialogId,\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tlastMessageViews: newLastMessageViews,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function chats/clearLastMessageViews */\n\t\t\tclearLastMessageViews: (store, payload: {dialogId: string}) => {\n\t\t\t\tconst existingItem = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst { lastMessageViews: defaultLastMessageViews } = this.getElementState();\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tactionName: 'clearLastMessageViews',\n\t\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tlastMessageViews: defaultLastMessageViews,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function chats/incrementLastMessageViews */\n\t\t\tincrementLastMessageViews: (store, payload: {dialogId: string}) => {\n\t\t\t\tconst existingItem: ImModelChat = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst newCounter = existingItem.lastMessageViews.countOfViewers + 1;\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tactionName: 'incrementLastMessageViews',\n\t\t\t\t\tdialogId: payload.dialogId,\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tlastMessageViews: { ...existingItem.lastMessageViews, countOfViewers: newCounter },\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tadd: (state: ChatState, payload) => {\n\t\t\t\tstate.collection[payload.dialogId] = payload.fields;\n\t\t\t},\n\t\t\tupdate: (state: ChatState, payload) => {\n\t\t\t\tstate.collection[payload.dialogId] = { ...state.collection[payload.dialogId], ...payload.fields };\n\t\t\t},\n\t\t\tdelete: (state: ChatState, payload) => {\n\t\t\t\tdelete state.collection[payload.dialogId];\n\t\t\t},\n\t\t\tclearCounters: (state: ChatState) => {\n\t\t\t\tObject.keys(state.collection).forEach((key) => {\n\t\t\t\t\tstate.collection[key].counter = 0;\n\t\t\t\t\tstate.collection[key].markedId = 0;\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\tformatFields(rawFields: JsonObject): JsonObject\n\t{\n\t\treturn formatFieldsWithConfig(rawFields, chatFieldsConfig);\n\t}\n}\n","import { Core } from 'im.v2.application.core';\nimport { Type } from 'main.core';\n\nexport const prepareAvatar = (avatar: string): string => {\n\tlet result = '';\n\n\tif (!avatar || avatar.endsWith('/js/im/images/blank.gif'))\n\t{\n\t\tresult = '';\n\t}\n\telse if (avatar.startsWith('http'))\n\t{\n\t\tresult = avatar;\n\t}\n\telse\n\t{\n\t\tresult = Core.getHost() + avatar;\n\t}\n\n\tif (result)\n\t{\n\t\tresult = encodeURI(result);\n\t}\n\n\treturn result;\n};\n\nexport const prepareDepartments = (departments: Array<number | string>): number[] => {\n\tconst result = [];\n\tdepartments.forEach((rawDepartmentId) => {\n\t\tconst departmentId = Number.parseInt(rawDepartmentId, 10);\n\t\tif (departmentId > 0)\n\t\t{\n\t\t\tresult.push(departmentId);\n\t\t}\n\t});\n\n\treturn result;\n};\n\nexport const preparePhones = (phones): Object => {\n\tconst result = {};\n\n\tif (Type.isStringFilled(phones.workPhone) || Type.isNumber(phones.workPhone))\n\t{\n\t\tresult.workPhone = phones.workPhone.toString();\n\t}\n\n\tif (Type.isStringFilled(phones.personalMobile) || Type.isNumber(phones.personalMobile))\n\t{\n\t\tresult.personalMobile = phones.personalMobile.toString();\n\t}\n\n\tif (Type.isStringFilled(phones.personalPhone) || Type.isNumber(phones.personalPhone))\n\t{\n\t\tresult.personalPhone = phones.personalPhone.toString();\n\t}\n\n\tif (Type.isStringFilled(phones.innerPhone) || Type.isNumber(phones.innerPhone))\n\t{\n\t\tresult.innerPhone = phones.innerPhone.toString();\n\t}\n\n\treturn result;\n};\n","import { Type, Text } from 'main.core';\n\nimport { Utils } from 'im.v2.lib.utils';\nimport {\n\tconvertToNumber,\n\tconvertToDate,\n\tisNumberOrString,\n} from '../../utils/format';\nimport { prepareAvatar, prepareDepartments, preparePhones } from './format-functions';\n\nimport type { FieldsConfig } from '../../utils/validate';\n\nexport const userFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'id',\n\t\ttargetFieldName: 'id',\n\t\tcheckFunction: isNumberOrString,\n\t\tformatFunction: convertToNumber,\n\t},\n\t{\n\t\tfieldName: 'networkId',\n\t\ttargetFieldName: 'id',\n\t\tcheckFunction: Utils.user.isNetworkUserId,\n\t},\n\t{\n\t\tfieldName: 'firstName',\n\t\ttargetFieldName: 'firstName',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: Text.decode,\n\t},\n\t{\n\t\tfieldName: 'lastName',\n\t\ttargetFieldName: 'lastName',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: Text.decode,\n\t},\n\t{\n\t\tfieldName: 'name',\n\t\ttargetFieldName: 'name',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: Text.decode,\n\t},\n\t{\n\t\tfieldName: 'color',\n\t\ttargetFieldName: 'color',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'avatar',\n\t\ttargetFieldName: 'avatar',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: prepareAvatar,\n\t},\n\t{\n\t\tfieldName: 'workPosition',\n\t\ttargetFieldName: 'workPosition',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: Text.decode,\n\t},\n\t{\n\t\tfieldName: 'gender',\n\t\ttargetFieldName: 'gender',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'birthday',\n\t\ttargetFieldName: 'birthday',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'isBirthday',\n\t\ttargetFieldName: 'isBirthday',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'isAdmin',\n\t\ttargetFieldName: 'isAdmin',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'type',\n\t\ttargetFieldName: 'type',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'network',\n\t\ttargetFieldName: 'network',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'connector',\n\t\ttargetFieldName: 'connector',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'externalAuthId',\n\t\ttargetFieldName: 'externalAuthId',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'status',\n\t\ttargetFieldName: 'status',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'idle',\n\t\ttargetFieldName: 'idle',\n\t\tformatFunction: convertToDate,\n\t},\n\t{\n\t\tfieldName: 'lastActivityDate',\n\t\ttargetFieldName: 'lastActivityDate',\n\t\tformatFunction: convertToDate,\n\t},\n\t{\n\t\tfieldName: 'mobileLastDate',\n\t\ttargetFieldName: 'mobileLastDate',\n\t\tformatFunction: convertToDate,\n\t},\n\t{\n\t\tfieldName: 'absent',\n\t\ttargetFieldName: 'absent',\n\t\tformatFunction: convertToDate,\n\t},\n\t{\n\t\tfieldName: 'isAbsent',\n\t\ttargetFieldName: 'isAbsent',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'departments',\n\t\ttargetFieldName: 'departments',\n\t\tcheckFunction: Type.isArray,\n\t\tformatFunction: prepareDepartments,\n\t},\n\t{\n\t\tfieldName: 'phones',\n\t\ttargetFieldName: 'phones',\n\t\tcheckFunction: Type.isPlainObject,\n\t\tformatFunction: preparePhones,\n\t},\n];\n\nexport const botFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'appId',\n\t\ttargetFieldName: 'appId',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'type',\n\t\ttargetFieldName: 'type',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'code',\n\t\ttargetFieldName: 'code',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'isHidden',\n\t\ttargetFieldName: 'isHidden',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'isSupportOpenline',\n\t\ttargetFieldName: 'isHidden',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'isHuman',\n\t\ttargetFieldName: 'isHidden',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'backgroundId',\n\t\ttargetFieldName: 'backgroundId',\n\t\tcheckFunction: Type.isString,\n\t},\n];\n","import { BuilderModel, type GetterTree, type ActionTree, type MutationTree } from 'ui.vue3.vuex';\n\nimport { BotCode, BotType, RawBotType } from 'im.v2.const';\nimport { formatFieldsWithConfig } from 'im.v2.model';\n\nimport { botFieldsConfig } from '../format/field-config';\nimport { convertObjectKeysToCamelCase } from '../../utils/format';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelBot } from 'im.v2.model';\n\ntype BotsState = {\n\tcollection: {[dialogId: string]: ImModelBot},\n};\n\ntype BotPayload = {\n\tuserId: string | number,\n\tbotData: ImModelBot,\n};\n\nexport class BotsModel extends BuilderModel\n{\n\tgetState(): BotsState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t};\n\t}\n\n\tgetElementState(): ImModelBot\n\t{\n\t\treturn {\n\t\t\tcode: '',\n\t\t\ttype: BotType.bot,\n\t\t\tappId: '',\n\t\t\tisHidden: false,\n\t\t\tisSupportOpenline: false,\n\t\t\tisHuman: false,\n\t\t\tbackgroundId: '',\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function users/bots/getByUserId */\n\t\t\tgetByUserId: (state: BotsState) => (userId: string | number): ?ImModelBot => {\n\t\t\t\treturn state.collection[userId];\n\t\t\t},\n\t\t\t/** @function users/bots/isNetwork */\n\t\t\tisNetwork: (state: BotsState) => (userId: string | number): boolean => {\n\t\t\t\treturn state.collection[userId]?.type === BotType.network;\n\t\t\t},\n\t\t\t/** @function users/bots/isSupport */\n\t\t\tisSupport: (state: BotsState) => (userId: string | number): boolean => {\n\t\t\t\treturn state.collection[userId]?.type === BotType.support24;\n\t\t\t},\n\t\t\t/** @function users/bots/getCopilotUserId */\n\t\t\tgetCopilotUserId: (state: BotsState): ?number => {\n\t\t\t\tfor (const [userId, bot] of Object.entries(state.collection))\n\t\t\t\t{\n\t\t\t\t\tif (bot.code === BotCode.copilot)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn Number.parseInt(userId, 10);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\t/** @function users/bots/isCopilot */\n\t\t\tisCopilot: (state: BotsState, getters) => (userId: number | string): boolean => {\n\t\t\t\tconst copilotUserId = getters.getCopilotUserId;\n\n\t\t\t\treturn copilotUserId === Number.parseInt(userId, 10);\n\t\t\t},\n\t\t\t/** @function users/bots/getBackgroundId */\n\t\t\tgetBackgroundId: (state: BotsState) => (dialogId: number | string): string => {\n\t\t\t\tif (!state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[dialogId].backgroundId;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function users/bots/set */\n\t\t\tset: (store, payload: BotPayload) => {\n\t\t\t\tconst { userId, botData } = payload;\n\t\t\t\tif (!botData)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tstore.commit('set', {\n\t\t\t\t\tuserId,\n\t\t\t\t\tbotData: { ...this.getElementState(), ...this.formatFields(botData) },\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tset: (state: BotsState, payload: BotPayload) => {\n\t\t\t\tconst { userId, botData } = payload;\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tstate.collection[userId] = botData;\n\t\t\t},\n\t\t};\n\t}\n\n\tformatFields(fields: JsonObject): ImModelBot\n\t{\n\t\tconst result: ImModelBot = convertObjectKeysToCamelCase(fields);\n\t\tif (result.type === RawBotType.human)\n\t\t{\n\t\t\tresult.type = BotType.bot;\n\t\t\tresult.isHuman = true;\n\t\t}\n\n\t\tconst TYPES_MAPPED_TO_DEFAULT_BOT = [RawBotType.openline, RawBotType.supervisor];\n\t\tif (TYPES_MAPPED_TO_DEFAULT_BOT.includes(result.type))\n\t\t{\n\t\t\tresult.type = BotType.bot;\n\t\t}\n\n\t\treturn formatFieldsWithConfig(result, botFieldsConfig);\n\t}\n}\n","import { Type, Loc, type JsonObject } from 'main.core';\nimport { BuilderModel, type ActionTree, type GetterTree, type MutationTree } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\nimport { Utils } from 'im.v2.lib.utils';\nimport { UserStatusManager } from 'im.v2.lib.user-status';\nimport { Color, UserType } from 'im.v2.const';\nimport { formatFieldsWithConfig } from 'im.v2.model';\n\nimport { BotsModel } from './nested-modules/bots';\nimport { userFieldsConfig } from './format/field-config';\n\nimport type { User as ImModelUser } from '../type/user';\n\ntype UsersState = {\n\tcollection: {[userId: string]: ImModelUser},\n\tabsentList: string[],\n};\n\nconst UserPositionByType = {\n\t[UserType.bot]: Loc.getMessage('IM_MODEL_USERS_CHAT_BOT'),\n\t[UserType.collaber]: Loc.getMessage('IM_MODEL_USERS_COLLABER'),\n\tdefault: Loc.getMessage('IM_MODEL_USERS_DEFAULT_NAME'),\n};\n\nexport class UsersModel extends BuilderModel\n{\n\tgetName(): string\n\t{\n\t\treturn 'users';\n\t}\n\n\tgetNestedModules(): { [moduleName: string]: BuilderModel }\n\t{\n\t\treturn {\n\t\t\tbots: BotsModel,\n\t\t};\n\t}\n\n\tgetState(): UsersState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t\tabsentList: [],\n\t\t\tabsentCheckInterval: null,\n\t\t};\n\t}\n\n\tgetElementState(params = {}): ImModelUser\n\t{\n\t\tconst { id = 0 } = params;\n\n\t\treturn {\n\t\t\tid,\n\t\t\tname: '',\n\t\t\tfirstName: '',\n\t\t\tlastName: '',\n\t\t\tavatar: '',\n\t\t\tcolor: Color.base,\n\t\t\tworkPosition: '',\n\t\t\tgender: 'M',\n\t\t\tisAdmin: false,\n\t\t\ttype: UserType.user,\n\t\t\tnetwork: false,\n\t\t\tconnector: false,\n\t\t\texternalAuthId: 'default',\n\t\t\tstatus: '',\n\t\t\tidle: false,\n\t\t\tlastActivityDate: false,\n\t\t\tmobileLastDate: false,\n\t\t\tbirthday: false,\n\t\t\tisBirthday: false,\n\t\t\tabsent: false,\n\t\t\tisAbsent: false,\n\t\t\tdepartments: [],\n\t\t\tphones: {\n\t\t\t\tworkPhone: '',\n\t\t\t\tpersonalMobile: '',\n\t\t\t\tpersonalPhone: '',\n\t\t\t\tinnerPhone: '',\n\t\t\t},\n\t\t};\n\t}\n\n\t// eslint-disable-next-line max-lines-per-function\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function users/get */\n\t\t\tget: (state) => (userId, getTemporary = false) => {\n\t\t\t\tconst user = state.collection[userId];\n\n\t\t\t\tif (!getTemporary && !user)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tif (getTemporary && !user)\n\t\t\t\t{\n\t\t\t\t\treturn this.getElementState({ id: userId });\n\t\t\t\t}\n\n\t\t\t\treturn user;\n\t\t\t},\n\t\t\t/** @function users/getBlank */\n\t\t\tgetBlank: () => (params) => {\n\t\t\t\treturn this.getElementState(params);\n\t\t\t},\n\t\t\t/** @function users/getList */\n\t\t\tgetList: (state) => (userList) => {\n\t\t\t\tconst result = [];\n\n\t\t\t\tif (!Array.isArray(userList))\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tuserList.forEach((id) => {\n\t\t\t\t\tif (state.collection[id])\n\t\t\t\t\t{\n\t\t\t\t\t\tresult.push(state.collection[id]);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tresult.push(this.getElementState({ id }));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\t/** @function users/hasBirthday */\n\t\t\thasBirthday: (state) => (rawUserId) => {\n\t\t\t\tconst userId = Number.parseInt(rawUserId, 10);\n\n\t\t\t\tconst user = state.collection[userId];\n\t\t\t\tif (userId <= 0 || !user)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn user.isBirthday;\n\t\t\t},\n\t\t\t/** @function users/hasVacation */\n\t\t\thasVacation: (state) => (rawUserId) => {\n\t\t\t\tconst userId = Number.parseInt(rawUserId, 10);\n\n\t\t\t\tconst user = state.collection[userId];\n\t\t\t\tif (userId <= 0 || !user)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn user.isAbsent;\n\t\t\t},\n\t\t\t/** @function users/getLastOnline */\n\t\t\tgetLastOnline: (state) => (rawUserId) => {\n\t\t\t\tconst userId = Number.parseInt(rawUserId, 10);\n\n\t\t\t\tconst user = state.collection[userId];\n\t\t\t\tif (userId <= 0 || !user)\n\t\t\t\t{\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\treturn Utils.user.getLastDateText(user);\n\t\t\t},\n\t\t\t/** @function users/getPosition */\n\t\t\tgetPosition: (state) => (rawUserId) => {\n\t\t\t\tconst userId = Number.parseInt(rawUserId, 10);\n\t\t\t\tconst user: ImModelUser = state.collection[userId];\n\t\t\t\tconst isSupportBot = Core.getStore().getters['users/bots/isSupport'](userId);\n\n\t\t\t\tif (userId <= 0 || !user || isSupportBot)\n\t\t\t\t{\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\tif (user.workPosition)\n\t\t\t\t{\n\t\t\t\t\treturn user.workPosition;\n\t\t\t\t}\n\n\t\t\t\treturn UserPositionByType[user.type] ?? UserPositionByType.default;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function users/set */\n\t\t\tset: (store, rawPayload) => {\n\t\t\t\tlet payload = rawPayload;\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\n\t\t\t\tpayload.map((user) => {\n\t\t\t\t\treturn this.formatFields(user);\n\t\t\t\t}).forEach((user) => {\n\t\t\t\t\tconst existingUser = store.state.collection[user.id];\n\t\t\t\t\tif (existingUser)\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('update', {\n\t\t\t\t\t\t\tid: user.id,\n\t\t\t\t\t\t\tfields: user,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('add', {\n\t\t\t\t\t\t\tid: user.id,\n\t\t\t\t\t\t\tfields: { ...this.getElementState(), ...user },\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function users/add */\n\t\t\tadd: (store, rawPayload) => {\n\t\t\t\tlet payload = rawPayload;\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\n\t\t\t\tpayload.map((user) => {\n\t\t\t\t\treturn this.formatFields(user);\n\t\t\t\t}).forEach((user) => {\n\t\t\t\t\tconst existingUser = store.state.collection[user.id];\n\t\t\t\t\tif (!existingUser)\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('add', {\n\t\t\t\t\t\t\tid: user.id,\n\t\t\t\t\t\t\tfields: { ...this.getElementState(), ...user },\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function users/update */\n\t\t\tupdate: (store, rawPayload) => {\n\t\t\t\tconst payload = rawPayload;\n\t\t\t\tpayload.id = Number.parseInt(payload.id, 10);\n\n\t\t\t\tconst user = store.state.collection[payload.id];\n\t\t\t\tif (!user)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst fields = { ...payload.fields, id: payload.id };\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tid: payload.id,\n\t\t\t\t\tfields: this.formatFields(fields),\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function users/delete */\n\t\t\tdelete: (store, payload) => {\n\t\t\t\tstore.commit('delete', payload.id);\n\t\t\t},\n\t\t\t/** @function users/setStatus */\n\t\t\tsetStatus: (store, payload: {status: string}) => {\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tid: Core.getUserId(),\n\t\t\t\t\tfields: this.formatFields(payload),\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tadd: (state, payload) => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tstate.collection[payload.id] = payload.fields;\n\n\t\t\t\tUserStatusManager.getInstance().onUserUpdate(payload.fields);\n\t\t\t},\n\t\t\tupdate: (state, payload) => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tstate.collection[payload.id] = { ...state.collection[payload.id], ...payload.fields };\n\n\t\t\t\tUserStatusManager.getInstance().onUserUpdate(payload.fields);\n\t\t\t},\n\t\t\tdelete: (state, payload) => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tdelete state.collection[payload.id];\n\t\t\t},\n\t\t};\n\t}\n\n\tformatFields(fields: JsonObject): JsonObject\n\t{\n\t\tconst preparedFields: ImModelUser = formatFieldsWithConfig(fields, userFieldsConfig);\n\t\tconst isBot = preparedFields.type === UserType.bot;\n\t\tif (isBot)\n\t\t{\n\t\t\tCore.getStore().dispatch('users/bots/set', {\n\t\t\t\tuserId: preparedFields.id,\n\t\t\t\tbotData: fields.botData || fields.bot_data,\n\t\t\t});\n\t\t}\n\n\t\treturn preparedFields;\n\t}\n\n\taddToAbsentList(id)\n\t{\n\t\tconst state = this.store.state.users;\n\t\tif (!state.absentList.includes(id))\n\t\t{\n\t\t\tstate.absentList.push(id);\n\t\t}\n\t}\n\n\tstartAbsentCheckInterval()\n\t{\n\t\tconst state = this.store.state.users;\n\t\tif (state.absentCheckInterval)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst TIME_TO_NEXT_DAY = 1000 * 60 * 60 * 24;\n\t\tstate.absentCheckInterval = setTimeout(() => {\n\t\t\tsetInterval(() => {\n\t\t\t\tstate.absentList.forEach((userId) => {\n\t\t\t\t\tconst user = state.collection[userId];\n\t\t\t\t\tif (!user)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst currentTime = Date.now();\n\t\t\t\t\tconst absentEnd = new Date(user.absent).getTime();\n\n\t\t\t\t\tif (absentEnd <= currentTime)\n\t\t\t\t\t{\n\t\t\t\t\t\tstate.absentList = state.absentList.filter((element) => {\n\t\t\t\t\t\t\treturn element !== userId;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tuser.isAbsent = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, TIME_TO_NEXT_DAY);\n\t\t}, Utils.date.getTimeToNextMidnight());\n\t}\n}\n","import { Type, type JsonObject } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\nimport { Logger } from 'im.v2.lib.logger';\nimport { Core } from 'im.v2.application.core';\nimport { FileStatus } from 'im.v2.const';\nimport { Utils } from 'im.v2.lib.utils';\n\nimport type { ImModelFile } from 'im.v2.model';\n\ntype FilesState = {\n\tcollection: {\n\t\t[fileId: string]: ImModelFile\n\t},\n\ttemporaryFilesMap: Map<number, string>,\n};\n\nexport class FilesModel extends BuilderModel\n{\n\tgetName(): string\n\t{\n\t\treturn 'files';\n\t}\n\n\tgetState(): FilesState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t\ttemporaryFilesMap: new Map(),\n\t\t};\n\t}\n\n\tgetElementState(): ImModelFile\n\t{\n\t\treturn {\n\t\t\tid: 0,\n\t\t\tchatId: 0,\n\t\t\tname: 'File is deleted',\n\t\t\tdate: new Date(),\n\t\t\ttype: 'file',\n\t\t\textension: '',\n\t\t\ticon: 'empty',\n\t\t\tsize: 0,\n\t\t\timage: false,\n\t\t\tstatus: FileStatus.done,\n\t\t\tprogress: 100,\n\t\t\tauthorId: 0,\n\t\t\tauthorName: '',\n\t\t\turlPreview: '',\n\t\t\turlShow: '',\n\t\t\turlDownload: '',\n\t\t\tviewerAttrs: null,\n\t\t};\n\t}\n\n\tgetGetters(): JsonObject\n\t{\n\t\treturn {\n\t\t\t/** @function files/get */\n\t\t\tget: (state: FilesState, getters) => (fileId: number, getTemporary = false): ?ImModelFile => {\n\t\t\t\tif (!fileId)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tif (!getTemporary && !state.collection[fileId])\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst file: ?ImModelFile = state.collection[fileId];\n\t\t\t\tconst hasMappedTemporaryFile: boolean = getters.hasMappedTemporaryFile({ serverFileId: fileId });\n\t\t\t\tif (file && hasMappedTemporaryFile)\n\t\t\t\t{\n\t\t\t\t\tconst temporaryFile: ImModelFile = getters.getMappedTemporaryFile({ serverFileId: fileId });\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...file,\n\t\t\t\t\t\turlPreview: temporaryFile.urlPreview,\n\t\t\t\t\t\turlShow: temporaryFile.urlShow,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn file;\n\t\t\t},\n\t\t\t/** @function files/isInCollection */\n\t\t\tisInCollection: (state: FilesState) => (payload: {fileId: number | string}): boolean => {\n\t\t\t\tconst { fileId } = payload;\n\n\t\t\t\treturn Boolean(state.collection[fileId]);\n\t\t\t},\n\t\t\t/** @function files/hasMappedTemporaryFile */\n\t\t\thasMappedTemporaryFile: (state: FilesState) => (payload: {serverFileId: number | string}): boolean => {\n\t\t\t\tif (state.temporaryFilesMap.has(payload.serverFileId))\n\t\t\t\t{\n\t\t\t\t\tconst temporaryFileId: string = state.temporaryFilesMap.get(payload.serverFileId);\n\n\t\t\t\t\treturn Object.hasOwn(state.collection, temporaryFileId);\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\t/** @function files/getMappedTemporaryFile */\n\t\t\tgetMappedTemporaryFile: (state: FilesState) => (payload: {serverFileId: number}): ?ImModelFile => {\n\t\t\t\tconst { serverFileId } = payload;\n\n\t\t\t\tif (state.temporaryFilesMap.has(serverFileId))\n\t\t\t\t{\n\t\t\t\t\tconst temporaryFileId: string = state.temporaryFilesMap.get(serverFileId);\n\n\t\t\t\t\treturn state.collection[temporaryFileId];\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): JsonObject\n\t{\n\t\treturn {\n\t\t\t/** @function files/add */\n\t\t\tadd: (store, payload: Object) => {\n\t\t\t\tconst preparedFile = { ...this.getElementState(), ...this.validate(payload) };\n\n\t\t\t\tstore.commit('add', { files: [preparedFile] });\n\t\t\t},\n\t\t\t/** @function files/set */\n\t\t\tset: (store, ...payload: Array<JsonObject>) => {\n\t\t\t\tconst files: Array<ImModelFile> = payload.flat().map((file) => {\n\t\t\t\t\treturn { ...this.getElementState(), ...this.validate(file) };\n\t\t\t\t});\n\n\t\t\t\tstore.commit('add', { files });\n\t\t\t},\n\t\t\t/** @function files/update */\n\t\t\tupdate: (store, payload) => {\n\t\t\t\tconst { id, fields } = payload;\n\t\t\t\tconst existingItem = store.state.collection[id];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tid,\n\t\t\t\t\tfields: this.validate(fields),\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\t/** @function files/updateWithId */\n\t\t\tupdateWithId: (store, payload: {id: string | number, fields: Object}) => {\n\t\t\t\tconst { id, fields } = payload;\n\t\t\t\tif (!store.state.collection[id])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('updateWithId', {\n\t\t\t\t\tid,\n\t\t\t\t\tfields: this.validate(fields),\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function files/delete */\n\t\t\tdelete: (store, payload: {id: string | number}) => {\n\t\t\t\tconst { id } = payload;\n\t\t\t\tif (!store.state.collection[id])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('delete', { id });\n\t\t\t},\n\t\t\t/** @function files/setTemporaryFileMapping */\n\t\t\tsetTemporaryFileMapping: (store, payload: {serverFileId: number, temporaryFileId: string}) => {\n\t\t\t\tstore.commit('setTemporaryFileMapping', payload);\n\t\t\t},\n\t\t};\n\t}\n\n\t/* eslint-disable no-param-reassign */\n\tgetMutations(): JsonObject\n\t{\n\t\treturn {\n\t\t\tadd: (state: FilesState, payload: {files: ImModelFile[]}) => {\n\t\t\t\tpayload.files.forEach((file) => {\n\t\t\t\t\tstate.collection[file.id] = file;\n\t\t\t\t});\n\t\t\t},\n\t\t\tupdate: (state: FilesState, payload) => {\n\t\t\t\tObject.entries(payload.fields).forEach(([key, value]) => {\n\t\t\t\t\tstate.collection[payload.id][key] = value;\n\t\t\t\t});\n\t\t\t},\n\t\t\tupdateWithId: (state: FilesState, payload: {id: number | string, fields: Object}) => {\n\t\t\t\tconst { id, fields } = payload;\n\t\t\t\tconst currentFile = { ...state.collection[id] };\n\n\t\t\t\tdelete state.collection[id];\n\t\t\t\tstate.collection[fields.id] = { ...currentFile, ...fields };\n\t\t\t},\n\t\t\tdelete: (state: FilesState, payload: {id: number | string}) => {\n\t\t\t\tLogger.warn('Files model: delete mutation', payload);\n\t\t\t\tconst { id } = payload;\n\t\t\t\tdelete state.collection[id];\n\t\t\t},\n\t\t\tsetTemporaryFileMapping: (state: FilesState, payload: {serverFileId: number, temporaryFileId: string}) => {\n\t\t\t\tstate.temporaryFilesMap.set(payload.serverFileId, payload.temporaryFileId);\n\t\t\t},\n\t\t};\n\t}\n\n\t// eslint-disable-next-line max-lines-per-function,sonarjs/cognitive-complexity\n\tvalidate(file: Object, options = {}): ImModelFile\n\t{\n\t\tconst result = {};\n\n\t\tif (Type.isNumber(file.id) || Type.isStringFilled(file.id))\n\t\t{\n\t\t\tresult.id = file.id;\n\t\t}\n\n\t\tif (Type.isNumber(file.chatId) || Type.isString(file.chatId))\n\t\t{\n\t\t\tresult.chatId = Number.parseInt(file.chatId, 10);\n\t\t}\n\n\t\tif (!Type.isUndefined(file.date))\n\t\t{\n\t\t\tresult.date = Utils.date.cast(file.date);\n\t\t}\n\n\t\tif (Type.isString(file.type))\n\t\t{\n\t\t\tresult.type = file.type;\n\t\t}\n\n\t\tif (Type.isString(file.extension))\n\t\t{\n\t\t\tresult.extension = file.extension.toString();\n\n\t\t\tif (result.type === 'image')\n\t\t\t{\n\t\t\t\tresult.icon = 'img';\n\t\t\t}\n\t\t\telse if (result.type === 'video')\n\t\t\t{\n\t\t\t\tresult.icon = 'mov';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.icon = Utils.file.getIconTypeByExtension(result.extension);\n\t\t\t}\n\t\t}\n\n\t\tif (Type.isString(file.name) || Type.isNumber(file.name))\n\t\t{\n\t\t\tresult.name = file.name.toString();\n\t\t}\n\n\t\tif (Type.isNumber(file.size) || Type.isString(file.size))\n\t\t{\n\t\t\tresult.size = Number.parseInt(file.size, 10);\n\t\t}\n\n\t\tif (Type.isBoolean(file.image))\n\t\t{\n\t\t\tresult.image = false;\n\t\t}\n\t\telse if (Type.isPlainObject(file.image))\n\t\t{\n\t\t\tresult.image = {\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0,\n\t\t\t};\n\n\t\t\tif (Type.isString(file.image.width) || Type.isNumber(file.image.width))\n\t\t\t{\n\t\t\t\tresult.image.width = Number.parseInt(file.image.width, 10);\n\t\t\t}\n\n\t\t\tif (Type.isString(file.image.height) || Type.isNumber(file.image.height))\n\t\t\t{\n\t\t\t\tresult.image.height = Number.parseInt(file.image.height, 10);\n\t\t\t}\n\n\t\t\tif (result.image.width <= 0 || result.image.height <= 0)\n\t\t\t{\n\t\t\t\tresult.image = false;\n\t\t\t}\n\t\t}\n\n\t\tif (Type.isString(file.status) && !Type.isUndefined(FileStatus[file.status]))\n\t\t{\n\t\t\tresult.status = file.status;\n\t\t}\n\n\t\tif (Type.isNumber(file.progress) || Type.isString(file.progress))\n\t\t{\n\t\t\tresult.progress = Number.parseInt(file.progress, 10);\n\t\t}\n\n\t\tif (Type.isNumber(file.authorId) || Type.isString(file.authorId))\n\t\t{\n\t\t\tresult.authorId = Number.parseInt(file.authorId, 10);\n\t\t}\n\n\t\tif (Type.isString(file.authorName) || Type.isNumber(file.authorName))\n\t\t{\n\t\t\tresult.authorName = file.authorName.toString();\n\t\t}\n\n\t\tif (Type.isString(file.urlPreview))\n\t\t{\n\t\t\tif (\n\t\t\t\t!file.urlPreview\n\t\t\t\t|| file.urlPreview.startsWith('http')\n\t\t\t\t|| file.urlPreview.startsWith('bx')\n\t\t\t\t|| file.urlPreview.startsWith('file')\n\t\t\t\t|| file.urlPreview.startsWith('blob')\n\t\t\t)\n\t\t\t{\n\t\t\t\tresult.urlPreview = file.urlPreview;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.urlPreview = Core.getHost() + file.urlPreview;\n\t\t\t}\n\t\t}\n\n\t\tif (Type.isString(file.urlDownload))\n\t\t{\n\t\t\tif (\n\t\t\t\t!file.urlDownload\n\t\t\t\t|| file.urlDownload.startsWith('http')\n\t\t\t\t|| file.urlDownload.startsWith('bx')\n\t\t\t\t|| file.urlDownload.startsWith('file')\n\t\t\t\t|| file.urlDownload.startsWith('blob')\n\t\t\t)\n\t\t\t{\n\t\t\t\tresult.urlDownload = file.urlDownload;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.urlDownload = Core.getHost() + file.urlDownload;\n\t\t\t}\n\t\t}\n\n\t\tif (Type.isString(file.urlShow))\n\t\t{\n\t\t\tif (\n\t\t\t\t!file.urlShow\n\t\t\t\t|| file.urlShow.startsWith('http')\n\t\t\t\t|| file.urlShow.startsWith('bx')\n\t\t\t\t|| file.urlShow.startsWith('file')\n\t\t\t\t|| file.urlShow.startsWith('blob')\n\t\t\t)\n\t\t\t{\n\t\t\t\tresult.urlShow = file.urlShow;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.urlShow = Core.getHost() + file.urlShow;\n\t\t\t}\n\t\t}\n\n\t\tif (Type.isPlainObject(file.viewerAttrs))\n\t\t{\n\t\t\tresult.viewerAttrs = file.viewerAttrs;\n\t\t}\n\n\t\treturn result;\n\t}\n}\n","import { Type } from 'main.core';\n\ntype Draft = {\n\ttext: string,\n};\n\ntype PreparedDraft = {\n\ttext: string,\n\tdate: Date | null,\n};\n\ntype Invitation = Boolean | {\n\toriginatorId: number,\n\tcanResend: boolean,\n};\n\ntype PreparedInvitation = {\n\tisActive: boolean,\n\toriginator: number,\n\tcanResend: boolean,\n};\n\nexport const prepareDraft = (draft: Draft): PreparedDraft => {\n\tif (!draft.text || draft.text === '')\n\t{\n\t\treturn {\n\t\t\ttext: '',\n\t\t\tdate: null,\n\t\t};\n\t}\n\n\treturn {\n\t\ttext: draft.text,\n\t\tdate: new Date(),\n\t};\n};\n\nexport const prepareInvitation = (invited: Invitation): PreparedInvitation => {\n\tif (Type.isPlainObject(invited))\n\t{\n\t\treturn {\n\t\t\tisActive: true,\n\t\t\toriginator: invited.originatorId,\n\t\t\tcanResend: invited.canResend,\n\t\t};\n\t}\n\n\treturn {\n\t\tisActive: false,\n\t\toriginator: 0,\n\t\tcanResend: false,\n\t};\n};\n","import { Utils } from 'im.v2.lib.utils';\nimport { Type } from 'main.core';\n\nimport { convertToString, isNumberOrString } from '../../utils/format';\nimport { prepareDraft, prepareInvitation } from './format-functions';\n\nimport type { FieldsConfig } from '../../utils/validate';\n\nexport const recentFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: ['id', 'dialogId'],\n\t\ttargetFieldName: 'dialogId',\n\t\tcheckFunction: isNumberOrString,\n\t\tformatFunction: convertToString,\n\t},\n\t{\n\t\tfieldName: 'messageId',\n\t\ttargetFieldName: 'messageId',\n\t\tcheckFunction: isNumberOrString,\n\t},\n\t{\n\t\tfieldName: 'draft',\n\t\ttargetFieldName: 'draft',\n\t\tcheckFunction: Type.isPlainObject,\n\t\tformatFunction: prepareDraft,\n\t},\n\t{\n\t\tfieldName: 'invited',\n\t\ttargetFieldName: 'invitation',\n\t\tcheckFunction: [Type.isPlainObject, Type.isBoolean],\n\t\tformatFunction: prepareInvitation,\n\t},\n\t{\n\t\tfieldName: 'unread',\n\t\ttargetFieldName: 'unread',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'pinned',\n\t\ttargetFieldName: 'pinned',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'liked',\n\t\ttargetFieldName: 'liked',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: ['defaultUserRecord', 'isFakeElement'],\n\t\ttargetFieldName: 'isFakeElement',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'isBirthdayPlaceholder',\n\t\ttargetFieldName: 'isBirthdayPlaceholder',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: ['dateLastActivity', 'lastActivityDate'],\n\t\ttargetFieldName: 'lastActivityDate',\n\t\tcheckFunction: [Type.isString, Type.isDate],\n\t\tformatFunction: Utils.date.cast,\n\t},\n];\n","import { Type } from 'main.core';\nimport { BuilderModel, GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\n\nimport { RecentCallStatus } from 'im.v2.const';\n\nimport type { ImModelCallItem } from 'im.v2.model';\n\ntype CallsState = {\n\tcollection: {\n\t\t[dialogId: string]: ImModelCallItem\n\t}\n};\n\nexport class CallsModel extends BuilderModel\n{\n\tgetState()\n\t{\n\t\treturn {\n\t\t\tcollection: {}\n\t\t};\n\t}\n\n\tgetElementState()\n\t{\n\t\treturn {\n\t\t\tdialogId: 0,\n\t\t\tname: '',\n\t\t\tcall: {},\n\t\t\tstate: RecentCallStatus.waiting\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\tget: (state: CallsState): ImModelCallItem[] => {\n\t\t\t\treturn Object.values(state.collection);\n\t\t\t},\n\n\t\t\tgetCallByDialog: (state: CallsState) => (dialogId): ?ImModelCallItem => {\n\t\t\t\treturn state.collection[dialogId];\n\t\t\t},\n\n\t\t\thasActiveCall: (state: CallsState) => (dialogId): boolean => {\n\t\t\t\tif (Type.isUndefined(dialogId))\n\t\t\t\t{\n\t\t\t\t\tconst activeCall = Object.values(state.collection).find((item: ImModelCallItem) => {\n\t\t\t\t\t\treturn item.state === RecentCallStatus.joined;\n\t\t\t\t\t});\n\n\t\t\t\t\treturn Boolean(activeCall);\n\t\t\t\t}\n\n\t\t\t\tconst existingCall = Object.values(state.collection).find((item: ImModelCallItem) => {\n\t\t\t\t\treturn item.dialogId === dialogId;\n\t\t\t\t});\n\n\t\t\t\tif (!existingCall)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn existingCall.state === RecentCallStatus.joined;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\taddActiveCall: (store, payload: ImModelCallItem) =>\n\t\t\t{\n\t\t\t\tconst existingCall = Object.values(store.state.collection).find((item: ImModelCallItem) => {\n\t\t\t\t\treturn item.dialogId === payload.dialogId || item.call.uuid === payload.call.uuid;\n\t\t\t\t});\n\n\t\t\t\tif (existingCall)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('updateActiveCall', {\n\t\t\t\t\t\tdialogId: existingCall.dialogId,\n\t\t\t\t\t\tfields: this.validateActiveCall(payload)\n\t\t\t\t\t});\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('addActiveCall', this.prepareActiveCall(payload));\n\t\t\t},\n\t\t\tupdateActiveCall: (store, payload) =>\n\t\t\t{\n\t\t\t\tconst existingCall = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingCall)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('updateActiveCall', {\n\t\t\t\t\tdialogId: existingCall.dialogId,\n\t\t\t\t\tfields: this.validateActiveCall(payload.fields)\n\t\t\t\t});\n\t\t\t},\n\t\t\tdeleteActiveCall: (store, payload) =>\n\t\t\t{\n\t\t\t\tconst existingCall = store.state.collection[payload.dialogId];\n\t\t\t\tif (!existingCall)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('deleteActiveCall', {\n\t\t\t\t\tdialogId: existingCall.dialogId\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\taddActiveCall: (state: CallsState, payload: ImModelCallItem) => {\n\t\t\t\tstate.collection[payload.dialogId] = payload;\n\t\t\t},\n\t\t\tupdateActiveCall: (state: CallsState, payload) => {\n\t\t\t\tstate.collection[payload.dialogId] = {\n\t\t\t\t\t...state.collection[payload.dialogId],\n\t\t\t\t\t...payload.fields\n\t\t\t\t};\n\t\t\t},\n\t\t\tdeleteActiveCall: (state: CallsState, payload) => {\n\t\t\t\tdelete state.collection[payload.dialogId];\n\t\t\t},\n\t\t};\n\t}\n\n\tprepareActiveCall(call)\n\t{\n\t\treturn {...this.getElementState(), ...this.validateActiveCall(call)};\n\t}\n\n\tvalidateActiveCall(fields)\n\t{\n\t\tconst result = {};\n\n\t\tif (Type.isStringFilled(fields.dialogId) || Type.isNumber(fields.dialogId))\n\t\t{\n\t\t\tresult.dialogId = fields.dialogId;\n\t\t}\n\n\t\tif (Type.isStringFilled(fields.name))\n\t\t{\n\t\t\tresult.name = fields.name;\n\t\t}\n\n\t\tif (Type.isObjectLike(fields.call))\n\t\t{\n\t\t\tresult.call = fields.call;\n\n\t\t\tif (fields.call?.associatedEntity?.avatar === '/bitrix/js/im/images/blank.gif')\n\t\t\t{\n\t\t\t\tresult.call.associatedEntity.avatar = '';\n\t\t\t}\n\t\t}\n\n\t\tif (RecentCallStatus[fields.state])\n\t\t{\n\t\t\tresult.state = fields.state;\n\t\t}\n\n\t\treturn result;\n\t}\n}","import { Type, type JsonObject } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\nimport { ChatType, FakeDraftMessagePrefix, Settings } from 'im.v2.const';\nimport { Utils } from 'im.v2.lib.utils';\nimport { ChannelManager } from 'im.v2.lib.channel';\nimport { formatFieldsWithConfig, convertObjectKeysToCamelCase } from 'im.v2.model';\n\nimport { recentFieldsConfig } from './format/field-config';\nimport { CallsModel } from './nested-modules/calls';\n\nimport type { Store, GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\nimport type { ImModelMessage, ImModelChat } from 'im.v2.model';\n\nimport type { RecentItem as ImModelRecentItem } from '../type/recent-item';\n\ntype RecentStore = Store<RecentState>;\n\ntype RecentState = {\n\tcollection: {[dialogId: string]: ImModelRecentItem},\n\trecentCollection: Set<string>,\n\tunreadCollection: Set<string>,\n\tcopilotCollection: Set<string>,\n\tchannelCollection: Set<string>,\n\tcollabCollection: Set<string>,\n};\n\ntype SetDraftPayload = {\n\tid: string | number,\n\ttext: string,\n};\n\nexport class RecentModel extends BuilderModel\n{\n\tgetName(): string\n\t{\n\t\treturn 'recent';\n\t}\n\n\tgetNestedModules(): { [moduleName: string]: BuilderModel }\n\t{\n\t\treturn {\n\t\t\tcalls: CallsModel,\n\t\t};\n\t}\n\n\tgetState(): RecentState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t\trecentCollection: new Set(),\n\t\t\tunreadCollection: new Set(),\n\t\t\tcopilotCollection: new Set(),\n\t\t\tchannelCollection: new Set(),\n\t\t\tcollabCollection: new Set(),\n\t\t};\n\t}\n\n\tgetElementState(): ImModelRecentItem\n\t{\n\t\treturn {\n\t\t\tdialogId: '0',\n\t\t\tmessageId: 0,\n\t\t\tdraft: {\n\t\t\t\ttext: '',\n\t\t\t\tdate: null,\n\t\t\t},\n\t\t\tunread: false,\n\t\t\tpinned: false,\n\t\t\tliked: false,\n\t\t\tinvitation: {\n\t\t\t\tisActive: false,\n\t\t\t\toriginator: 0,\n\t\t\t\tcanResend: false,\n\t\t\t},\n\t\t\tisFakeElement: false,\n\t\t\tisBirthdayPlaceholder: false,\n\t\t\tlastActivityDate: null,\n\t\t};\n\t}\n\n\t// eslint-disable-next-line max-lines-per-function\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function recent/getRecentCollection */\n\t\t\tgetRecentCollection: (state: RecentState): ImModelRecentItem[] => {\n\t\t\t\treturn [...state.recentCollection].filter((dialogId) => {\n\t\t\t\t\tconst dialog = this.store.getters['chats/get'](dialogId);\n\n\t\t\t\t\treturn Boolean(dialog);\n\t\t\t\t}).map((id) => {\n\t\t\t\t\treturn state.collection[id];\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function recent/getUnreadCollection */\n\t\t\tgetUnreadCollection: (state: RecentState): ImModelRecentItem[] => {\n\t\t\t\treturn [...state.unreadCollection].map((id) => {\n\t\t\t\t\treturn state.collection[id];\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function recent/getCopilotCollection */\n\t\t\tgetCopilotCollection: (state: RecentState): ImModelRecentItem[] => {\n\t\t\t\treturn [...state.copilotCollection].filter((dialogId) => {\n\t\t\t\t\tconst dialog = this.store.getters['chats/get'](dialogId);\n\n\t\t\t\t\treturn Boolean(dialog);\n\t\t\t\t}).map((id) => {\n\t\t\t\t\treturn state.collection[id];\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function recent/getChannelCollection */\n\t\t\tgetChannelCollection: (state: RecentState): ImModelRecentItem[] => {\n\t\t\t\treturn [...state.channelCollection].filter((dialogId) => {\n\t\t\t\t\tconst dialog = this.store.getters['chats/get'](dialogId);\n\n\t\t\t\t\treturn Boolean(dialog);\n\t\t\t\t}).map((id) => {\n\t\t\t\t\treturn state.collection[id];\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function recent/getCollabCollection */\n\t\t\tgetCollabCollection: (state: RecentState): ImModelRecentItem[] => {\n\t\t\t\treturn [...state.collabCollection].filter((dialogId) => {\n\t\t\t\t\tconst dialog = this.store.getters['chats/get'](dialogId);\n\n\t\t\t\t\treturn Boolean(dialog);\n\t\t\t\t}).map((id) => {\n\t\t\t\t\treturn state.collection[id];\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function recent/getSortedCollection */\n\t\t\tgetSortedCollection: (state: RecentState): ImModelRecentItem[] => {\n\t\t\t\tconst recentCollectionAsArray = [...state.recentCollection].map((dialogId) => {\n\t\t\t\t\treturn state.collection[dialogId];\n\t\t\t\t});\n\n\t\t\t\treturn recentCollectionAsArray.sort((a, b) => {\n\t\t\t\t\tconst messageA: ImModelMessage = this.#getMessage(a.messageId);\n\t\t\t\t\tconst messageB: ImModelMessage = this.#getMessage(b.messageId);\n\n\t\t\t\t\treturn messageB.date - messageA.date;\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function recent/get */\n\t\t\tget: (state: RecentState) => (dialogId: string): ImModelRecentItem | null => {\n\t\t\t\tif (!state.collection[dialogId])\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[dialogId];\n\t\t\t},\n\t\t\t/** @function recent/getMessage */\n\t\t\tgetMessage: (state: RecentState) => (dialogId: string): ImModelMessage | null => {\n\t\t\t\tconst element = state.collection[dialogId];\n\t\t\t\tif (!element)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn this.#getMessage(element.messageId);\n\t\t\t},\n\t\t\t/** @function recent/needsBirthdayPlaceholder */\n\t\t\tneedsBirthdayPlaceholder: (state: RecentState) => (dialogId): boolean => {\n\t\t\t\tconst currentItem = state.collection[dialogId];\n\t\t\t\tif (!currentItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst dialog = this.store.getters['chats/get'](dialogId);\n\t\t\t\tif (!dialog || dialog.type !== ChatType.user)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst hasBirthday = this.store.getters['users/hasBirthday'](dialogId);\n\t\t\t\tif (!hasBirthday)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst isSelfChat = Number.parseInt(dialogId, 10) === Core.getUserId();\n\t\t\t\tif (isSelfChat)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst showBirthday = this.store.getters['application/settings/get'](Settings.recent.showBirthday);\n\t\t\t\tconst hasTodayMessage = this.#hasTodayMessage(currentItem.messageId);\n\n\t\t\t\treturn showBirthday && !hasTodayMessage && dialog.counter === 0;\n\t\t\t},\n\t\t\t/** @function recent/needsVacationPlaceholder */\n\t\t\tneedsVacationPlaceholder: (state: RecentState) => (dialogId): boolean => {\n\t\t\t\tconst currentItem = state.collection[dialogId];\n\t\t\t\tif (!currentItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst isNotes = Number.parseInt(dialogId, 10) === Core.getUserId();\n\t\t\t\tif (isNotes)\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['chats/get'](dialogId);\n\t\t\t\tif (!dialog || dialog.type !== ChatType.user)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst hasVacation = this.store.getters['users/hasVacation'](dialogId);\n\t\t\t\tif (!hasVacation)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst hasTodayMessage = this.#hasTodayMessage(currentItem.messageId);\n\n\t\t\t\treturn !hasTodayMessage && dialog.counter === 0;\n\t\t\t},\n\t\t\t/** @function recent/getSortDate */\n\t\t\tgetSortDate: (state: RecentState) => (dialogId): Date | null => {\n\t\t\t\tconst currentItem = state.collection[dialogId];\n\t\t\t\tif (!currentItem)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst message: ImModelMessage = this.#getMessage(currentItem.messageId);\n\n\t\t\t\tif (Type.isDate(currentItem.draft.date) && currentItem.draft.date > message.date)\n\t\t\t\t{\n\t\t\t\t\treturn currentItem.draft.date;\n\t\t\t\t}\n\n\t\t\t\tconst needsBirthdayPlaceholder = this.store.getters['recent/needsBirthdayPlaceholder'](currentItem.dialogId);\n\t\t\t\tif (needsBirthdayPlaceholder)\n\t\t\t\t{\n\t\t\t\t\treturn Utils.date.getStartOfTheDay();\n\t\t\t\t}\n\n\t\t\t\tconst lastActivity = currentItem.lastActivityDate;\n\t\t\t\tconst needToUseActivityDate = Type.isDate(lastActivity) && lastActivity > message.date;\n\t\t\t\tif (ChannelManager.isChannel(currentItem.dialogId) && needToUseActivityDate)\n\t\t\t\t{\n\t\t\t\t\treturn lastActivity;\n\t\t\t\t}\n\n\t\t\t\treturn message.date;\n\t\t\t},\n\t\t};\n\t}\n\n\t/* eslint-disable no-param-reassign */\n\t/* eslint-disable-next-line max-lines-per-function */\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function recent/setRecent */\n\t\t\tsetRecent: async (store: RecentStore, payload: Array | Object) => {\n\t\t\t\tconst itemIds = await Core.getStore().dispatch('recent/store', payload);\n\n\t\t\t\tstore.commit('setRecentCollection', itemIds);\n\n\t\t\t\tthis.#updateUnloadedRecentCounters(payload);\n\t\t\t},\n\t\t\t/** @function recent/setUnread */\n\t\t\tsetUnread: async (store: RecentStore, payload: Array | Object) => {\n\t\t\t\tconst itemIds = await this.store.dispatch('recent/store', payload);\n\t\t\t\tstore.commit('setUnreadCollection', itemIds);\n\t\t\t},\n\t\t\t/** @function recent/setCopilot */\n\t\t\tsetCopilot: async (store: RecentStore, payload: Array | Object) => {\n\t\t\t\tconst itemIds = await this.store.dispatch('recent/store', payload);\n\t\t\t\tstore.commit('setCopilotCollection', itemIds);\n\n\t\t\t\tthis.#updateUnloadedCopilotCounters(payload);\n\t\t\t},\n\t\t\t/** @function recent/setChannel */\n\t\t\tsetChannel: async (store: RecentStore, payload: Array | Object) => {\n\t\t\t\tconst itemIds = await this.store.dispatch('recent/store', payload);\n\t\t\t\tstore.commit('setChannelCollection', itemIds);\n\t\t\t},\n\t\t\t/** @function recent/setCollab */\n\t\t\tsetCollab: async (store: RecentStore, payload: Array | Object) => {\n\t\t\t\tconst itemIds = await this.store.dispatch('recent/store', payload);\n\t\t\t\tstore.commit('setCollabCollection', itemIds);\n\n\t\t\t\tthis.#updateUnloadedCollabCounters(payload);\n\t\t\t},\n\t\t\t/** @function recent/clearChannelCollection */\n\t\t\tclearChannelCollection: (store: RecentStore) => {\n\t\t\t\tstore.commit('clearChannelCollection');\n\t\t\t},\n\t\t\t/** @function recent/store */\n\t\t\tstore: (store: RecentStore, payload: Array | Object) => {\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\n\t\t\t\tconst itemsToUpdate = [];\n\t\t\t\tconst itemsToAdd = [];\n\t\t\t\tpayload.map((element) => {\n\t\t\t\t\treturn this.#formatFields(element);\n\t\t\t\t}).forEach((element) => {\n\t\t\t\t\tconst preparedElement = { ...element };\n\t\t\t\t\tconst existingItem = store.state.collection[element.dialogId];\n\t\t\t\t\tif (existingItem)\n\t\t\t\t\t{\n\t\t\t\t\t\titemsToUpdate.push({ dialogId: existingItem.dialogId, fields: preparedElement });\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\titemsToAdd.push({ ...this.getElementState(), ...preparedElement });\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (itemsToAdd.length > 0)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('add', itemsToAdd);\n\t\t\t\t}\n\n\t\t\t\tif (itemsToUpdate.length > 0)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('update', itemsToUpdate);\n\t\t\t\t}\n\n\t\t\t\treturn [...itemsToAdd, ...itemsToUpdate].map((item) => item.dialogId);\n\t\t\t},\n\t\t\t/** @function recent/update */\n\t\t\tupdate: (store: RecentStore, payload: { id: string | number, fields: Object }) => {\n\t\t\t\tconst { id, fields } = payload;\n\t\t\t\tconst existingItem: ImModelRecentItem = store.state.collection[id];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tdialogId: existingItem.dialogId,\n\t\t\t\t\tfields: this.#formatFields(fields),\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function recent/unread */\n\t\t\tunread: (store: RecentStore, payload: { id: string | number, action: boolean }) => {\n\t\t\t\tconst existingItem = store.state.collection[payload.id];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tdialogId: existingItem.dialogId,\n\t\t\t\t\tfields: { unread: payload.action },\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function recent/pin */\n\t\t\tpin: (store: RecentStore, payload: { id: string | number, action: boolean }) => {\n\t\t\t\tconst existingItem = store.state.collection[payload.id];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tdialogId: existingItem.dialogId,\n\t\t\t\t\tfields: { pinned: payload.action },\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function recent/like */\n\t\t\tlike: (store: RecentStore, payload: { id: string | number, messageId: number, liked: boolean }) => {\n\t\t\t\tconst existingItem: ImModelRecentItem = store.state.collection[payload.id];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst isLastMessage = existingItem.messageId === Number.parseInt(payload.messageId, 10);\n\t\t\t\tconst isExactMessageLiked = !Type.isUndefined(payload.messageId) && payload.liked === true;\n\t\t\t\tif (isExactMessageLiked && !isLastMessage)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('update', {\n\t\t\t\t\tdialogId: existingItem.dialogId,\n\t\t\t\t\tfields: { liked: payload.liked === true },\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function recent/setDraft */\n\t\t\tsetDraft: (store: RecentStore, payload: SetDraftPayload) => {\n\t\t\t\tconst isRemovingDraft = !Type.isStringFilled(payload.text);\n\t\t\t\tif (isRemovingDraft && this.#shouldDeleteItemWithDraft(payload))\n\t\t\t\t{\n\t\t\t\t\tvoid Core.getStore().dispatch('recent/delete', { id: payload.id });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst existingCollectionItem = store.state.recentCollection.has(payload.id);\n\t\t\t\tconst needsFakeItem = !existingCollectionItem && !isRemovingDraft;\n\t\t\t\tif (needsFakeItem)\n\t\t\t\t{\n\t\t\t\t\tthis.#handleFakeItemWithDraft(payload, store);\n\t\t\t\t}\n\n\t\t\t\tconst existingItem = store.state.collection[payload.id];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvoid Core.getStore().dispatch('recent/update', {\n\t\t\t\t\tid: payload.id,\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tdraft: { text: payload.text.toString() },\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function recent/delete */\n\t\t\tdelete: (store: RecentStore, payload: { id: string | number }) => {\n\t\t\t\tconst existingItem = store.state.collection[payload.id];\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('deleteFromRecentCollection', existingItem.dialogId);\n\t\t\t\tstore.commit('deleteFromCopilotCollection', existingItem.dialogId);\n\t\t\t\tstore.commit('deleteFromChannelCollection', existingItem.dialogId);\n\t\t\t\tstore.commit('deleteFromCollabCollection', existingItem.dialogId);\n\t\t\t\tconst canDelete = this.#canDelete(existingItem.dialogId);\n\n\t\t\t\tif (!canDelete)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('delete', {\n\t\t\t\t\tid: existingItem.dialogId,\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function recent/clearUnread */\n\t\t\tclearUnread: (store: RecentStore) => {\n\t\t\t\tstore.commit('clearUnread');\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tsetRecentCollection: (state: RecentState, payload: string[]) => {\n\t\t\t\tpayload.forEach((dialogId) => {\n\t\t\t\t\tstate.recentCollection.add(dialogId);\n\t\t\t\t});\n\t\t\t},\n\t\t\tdeleteFromRecentCollection: (state: RecentState, payload: string) => {\n\t\t\t\tstate.recentCollection.delete(payload);\n\t\t\t},\n\t\t\tsetUnreadCollection: (state: RecentState, payload: string[]) => {\n\t\t\t\tpayload.forEach((dialogId) => {\n\t\t\t\t\tstate.unreadCollection.add(dialogId);\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetCopilotCollection: (state: RecentState, payload: string[]) => {\n\t\t\t\tpayload.forEach((dialogId) => {\n\t\t\t\t\tstate.copilotCollection.add(dialogId);\n\t\t\t\t});\n\t\t\t},\n\t\t\tdeleteFromCopilotCollection: (state: RecentState, payload: string) => {\n\t\t\t\tstate.copilotCollection.delete(payload);\n\t\t\t},\n\t\t\tdeleteFromChannelCollection: (state: RecentState, payload: string) => {\n\t\t\t\tstate.channelCollection.delete(payload);\n\t\t\t},\n\t\t\tsetChannelCollection: (state: RecentState, payload: string[]) => {\n\t\t\t\tpayload.forEach((dialogId) => {\n\t\t\t\t\tstate.channelCollection.add(dialogId);\n\t\t\t\t});\n\t\t\t},\n\t\t\tclearChannelCollection: (state: RecentState) => {\n\t\t\t\tstate.channelCollection = new Set();\n\t\t\t},\n\t\t\tsetCollabCollection: (state: RecentState, payload: string[]) => {\n\t\t\t\tpayload.forEach((dialogId) => {\n\t\t\t\t\tstate.collabCollection.add(dialogId);\n\t\t\t\t});\n\t\t\t},\n\t\t\tdeleteFromCollabCollection: (state: RecentState, payload: string) => {\n\t\t\t\tstate.collabCollection.delete(payload);\n\t\t\t},\n\t\t\tadd: (state: RecentState, payload: Object[] | Object) => {\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\t\t\t\tpayload.forEach((item) => {\n\t\t\t\t\tstate.collection[item.dialogId] = item;\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tupdate: (state: RecentState, payload: Object[] | Object) => {\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\t\t\t\tpayload.forEach(({ dialogId, fields }) => {\n\t\t\t\t\t// if we already got chat - we should not update it with fake user chat\n\t\t\t\t\t// (unless it's an accepted invitation or fake user with real message)\n\t\t\t\t\tconst elementIsInRecent = state.recentCollection.has(dialogId);\n\t\t\t\t\tconst isFakeElement = fields.isFakeElement && Utils.text.isTempMessage(fields.messageId);\n\t\t\t\t\tif (elementIsInRecent && isFakeElement && !fields.invitation)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst currentElement = state.collection[dialogId];\n\t\t\t\t\tstate.collection[dialogId] = { ...currentElement, ...fields };\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tdelete: (state: RecentState, payload: {id: string}) => {\n\t\t\t\tdelete state.collection[payload.id];\n\t\t\t},\n\n\t\t\tclearUnread: (state: RecentState) => {\n\t\t\t\tObject.keys(state.collection).forEach((key) => {\n\t\t\t\t\tstate.collection[key].unread = false;\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\t#formatFields(rawFields: JsonObject): Partial<ImModelRecentItem>\n\t{\n\t\tconst options = Type.isPlainObject(rawFields.options) ? rawFields.options : {};\n\t\tconst fields = { ...rawFields, ...options };\n\n\t\treturn formatFieldsWithConfig(fields, recentFieldsConfig);\n\t}\n\n\t#updateUnloadedRecentCounters(payload: Array | Object)\n\t{\n\t\tthis.#updateUnloadedCounters(payload, 'counters/setUnloadedChatCounters');\n\t}\n\n\t#updateUnloadedCopilotCounters(payload: Array | Object)\n\t{\n\t\tthis.#updateUnloadedCounters(payload, 'counters/setUnloadedCopilotCounters');\n\t}\n\n\t#updateUnloadedCollabCounters(payload: Array | Object)\n\t{\n\t\tthis.#updateUnloadedCounters(payload, 'counters/setUnloadedCollabCounters');\n\t}\n\n\t#updateUnloadedCounters(payload: Array | Object, updateMethod: string)\n\t{\n\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t{\n\t\t\tpayload = [payload];\n\t\t}\n\t\tconst zeroedCountersForNewItems = {};\n\t\tconst preparedItems = payload.map((item) => convertObjectKeysToCamelCase(item));\n\n\t\tpreparedItems.forEach((item) => {\n\t\t\tzeroedCountersForNewItems[item.chatId] = 0;\n\t\t});\n\t\tvoid Core.getStore().dispatch(updateMethod, zeroedCountersForNewItems);\n\t}\n\n\t#getMessage(messageId: number | string): ImModelMessage\n\t{\n\t\treturn Core.getStore().getters['messages/getById'](messageId);\n\t}\n\n\t#getDialog(dialogId: string): ImModelChat\n\t{\n\t\treturn Core.getStore().getters['chats/get'](dialogId);\n\t}\n\n\t#hasTodayMessage(messageId: number | string): boolean\n\t{\n\t\tconst message: ImModelMessage = this.#getMessage(messageId);\n\t\tconst hasMessage = Utils.text.isUuidV4(message.id) || message.id > 0;\n\n\t\treturn hasMessage && Utils.date.isToday(message.date);\n\t}\n\n\t#canDelete(dialogId: string): boolean\n\t{\n\t\tconst NOT_DELETABLE_TYPES = [ChatType.openChannel];\n\t\tconst { type } = this.#getDialog(dialogId);\n\n\t\treturn !NOT_DELETABLE_TYPES.includes(type);\n\t}\n\n\t#handleFakeItemWithDraft(payload: SetDraftPayload, store: RecentStore): void\n\t{\n\t\tconst existingItem = store.state.collection[payload.id];\n\t\tif (!existingItem)\n\t\t{\n\t\t\tstore.commit('add', { ...this.getElementState(), ...this.#prepareFakeItemWithDraft(payload) });\n\t\t}\n\t\tstore.commit('setRecentCollection', [payload.id.toString()]);\n\t}\n\n\t#prepareFakeItemWithDraft(payload: SetDraftPayload): Partial<ImModelRecentItem>\n\t{\n\t\tconst messageId = this.#createFakeMessageForDraft(payload.id);\n\n\t\treturn this.#formatFields({\n\t\t\tdialogId: payload.id.toString(),\n\t\t\tdraft: {\n\t\t\t\ttext: payload.text.toString(),\n\t\t\t},\n\t\t\tmessageId,\n\t\t});\n\t}\n\n\t#createFakeMessageForDraft(dialogId: string): string\n\t{\n\t\tconst messageId = `${FakeDraftMessagePrefix}-${dialogId}`;\n\t\tvoid Core.getStore().dispatch('messages/store', { id: messageId, date: new Date() });\n\n\t\treturn messageId;\n\t}\n\n\t#shouldDeleteItemWithDraft(payload: SetDraftPayload): boolean\n\t{\n\t\tconst existingItem = Core.getStore().state.recent.collection[payload.id];\n\n\t\treturn existingItem\n\t\t\t&& !Type.isStringFilled(payload.text)\n\t\t\t&& existingItem.messageId.toString().startsWith(FakeDraftMessagePrefix)\n\t\t;\n\t}\n}\n","import {BuilderModel} from 'ui.vue3.vuex';\nimport {Type, Text} from 'main.core';\n\nimport {Core} from 'im.v2.application.core';\nimport {Utils} from 'im.v2.lib.utils';\nimport {NotificationTypesCodes} from 'im.v2.const';\n\nimport { convertObjectKeysToCamelCase } from '../utils/format';\n\nexport class NotificationsModel extends BuilderModel\n{\n\tgetName(): string\n\t{\n\t\treturn 'notifications';\n\t}\n\n\tgetState(): Object\n\t{\n\t\treturn {\n\t\t\tcollection: new Map(),\n\t\t\tsearchCollection: new Map(),\n\t\t\tunreadCounter: 0,\n\t\t};\n\t}\n\n\tgetElementState(): Object\n\t{\n\t\treturn {\n\t\t\tid: 0,\n\t\t\tauthorId: 0,\n\t\t\tdate: new Date(),\n\t\t\ttitle: '',\n\t\t\ttext: '',\n\t\t\tparams: {},\n\t\t\treplaces: [],\n\t\t\tnotifyButtons: [],\n\t\t\tsectionCode: NotificationTypesCodes.simple,\n\t\t\tread: false,\n\t\t\tsettingName: 'im|default',\n\t\t};\n\t}\n\n\tgetGetters(): Object\n\t{\n\t\treturn {\n\t\t\tgetSortedCollection: state =>\n\t\t\t{\n\t\t\t\treturn [...state.collection.values()].sort(this.sortByType);\n\t\t\t},\n\t\t\tgetSearchResultCollection: state =>\n\t\t\t{\n\t\t\t\treturn [...state.searchCollection.values()].sort(this.sortByType);\n\t\t\t},\n\t\t\tgetConfirmsCount: state =>\n\t\t\t{\n\t\t\t\treturn [...state.collection.values()].filter(notification => {\n\t\t\t\t\treturn notification.sectionCode === NotificationTypesCodes.confirm;\n\t\t\t\t}).length;\n\t\t\t},\n\t\t\tgetById: state => (notificationId) =>\n\t\t\t{\n\t\t\t\tif (Type.isString(notificationId))\n\t\t\t\t{\n\t\t\t\t\tnotificationId = Number.parseInt(notificationId, 10);\n\t\t\t\t}\n\n\t\t\t\tconst existingItem = state.collection.get(notificationId);\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn existingItem;\n\t\t\t},\n\t\t\tgetCounter: (state): number =>\n\t\t\t{\n\t\t\t\treturn state.unreadCounter;\n\t\t\t}\n\t\t};\n\t}\n\n\tgetActions(): Object\n\t{\n\t\treturn {\n\t\t\tinitialSet: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (Type.isNumber(payload.total_unread_count))\n\t\t\t\t{\n\t\t\t\t\tstore.commit('setCounter', payload.total_unread_count);\n\t\t\t\t}\n\n\t\t\t\tif (!Type.isArrayFilled(payload.notifications))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst itemsToUpdate = [];\n\t\t\t\tconst itemsToAdd = [];\n\n\t\t\t\tconst currentUserId = Core.getUserId();\n\t\t\t\tpayload.notifications.map(element => {\n\t\t\t\t\treturn NotificationsModel.validate(element, currentUserId);\n\t\t\t\t}).forEach(element => {\n\t\t\t\t\tconst existingItem = store.state.collection.get(element.id);\n\t\t\t\t\tif (existingItem)\n\t\t\t\t\t{\n\t\t\t\t\t\titemsToUpdate.push({id: existingItem.id, fields: {...element}});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\titemsToAdd.push({...this.getElementState(), ...element});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (itemsToAdd.length > 0)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('add', itemsToAdd);\n\t\t\t\t}\n\t\t\t\tif (itemsToUpdate.length > 0)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('update', itemsToUpdate);\n\t\t\t\t}\n\t\t\t},\n\t\t\tset: (store, payload) =>\n\t\t\t{\n\t\t\t\tif (!Array.isArray(payload) && Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\tpayload = [payload];\n\t\t\t\t}\n\n\t\t\t\tconst itemsToUpdate = [];\n\t\t\t\tconst itemsToAdd = [];\n\t\t\t\tconst currentUserId = Core.getUserId();\n\t\t\t\tpayload.map(element => {\n\t\t\t\t\treturn NotificationsModel.validate(element, currentUserId);\n\t\t\t\t}).forEach(element => {\n\t\t\t\t\tconst existingItem = store.state.collection.get(element.id);\n\t\t\t\t\tif (existingItem)\n\t\t\t\t\t\t{\n\t\t\t\t\t\titemsToUpdate.push({id: existingItem.id, fields: {...element}});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\titemsToAdd.push({...this.getElementState(), ...element});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (itemsToAdd.length > 0)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('add', itemsToAdd);\n\t\t\t\t}\n\t\t\t\tif (itemsToUpdate.length > 0)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('update', itemsToUpdate);\n\t\t\t\t}\n\t\t\t},\n\t\t\tsetSearchResult: (store, payload) =>\n\t\t\t{\n\t\t\t\tconst itemsToUpdate = [];\n\t\t\t\tconst itemsToAdd = [];\n\n\t\t\t\tlet {notifications} = payload;\n\n\t\t\t\tconst skipValidation = !!payload.skipValidation;\n\t\t\t\tif (!skipValidation)\n\t\t\t\t{\n\t\t\t\t\tconst currentUserId = Core.getUserId();\n\t\t\t\t\tnotifications = notifications.map(element => {\n\t\t\t\t\t\treturn NotificationsModel.validate(element, currentUserId);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tnotifications.forEach(element => {\n\t\t\t\t\tconst existingItem = store.state.searchCollection.get(element.id);\n\t\t\t\t\tif (existingItem)\n\t\t\t\t\t{\n\t\t\t\t\t\titemsToUpdate.push({id: existingItem.id, fields: {...element}});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\titemsToAdd.push({...this.getElementState(), ...element});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (itemsToAdd.length > 0)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('addSearchResult', itemsToAdd);\n\t\t\t\t}\n\t\t\t\tif (itemsToUpdate.length > 0)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('updateSearchResult', itemsToUpdate);\n\t\t\t\t}\n\t\t\t},\n\t\t\tread: (store, payload) =>\n\t\t\t{\n\t\t\t\tpayload.ids.forEach(notificationId => {\n\t\t\t\t\tconst existingItem = store.state.collection.get(notificationId);\n\t\t\t\t\tif (!existingItem || existingItem.read === payload.read)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (payload.read)\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('decreaseCounter');\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('increaseCounter');\n\t\t\t\t\t}\n\n\t\t\t\t\tstore.commit('read', {\n\t\t\t\t\t\tid: existingItem.id,\n\t\t\t\t\t\tread: payload.read,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\treadAll: (store) =>\n\t\t\t{\n\t\t\t\tstore.commit('readAll');\n\t\t\t\tstore.commit('setCounter', 0);\n\t\t\t},\n\t\t\tdelete: (store, payload) =>\n\t\t\t{\n\t\t\t\tconst existingItem = store.state.collection.get(payload.id);\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (existingItem.read === false)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('decreaseCounter');\n\t\t\t\t}\n\n\t\t\t\tstore.commit('delete', {id: existingItem.id});\n\t\t\t},\n\t\t\tdeleteFromSearch: (store, payload) => {\n\t\t\t\tconst existingItem = store.state.searchCollection.get(payload.id);\n\t\t\t\tif (!existingItem)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('delete', { id: existingItem.id });\n\t\t\t},\n\t\t\tclearSearchResult: (store) =>\n\t\t\t{\n\t\t\t\tstore.commit('clearSearchResult');\n\t\t\t},\n\t\t\tsetCounter: (store, payload) =>\n\t\t\t{\n\t\t\t\tstore.commit('setCounter', payload);\n\t\t\t}\n\t\t};\n\t}\n\n\tgetMutations()\n\t{\n\t\treturn {\n\t\t\tadd: (state, payload) =>\n\t\t\t{\n\t\t\t\tpayload.forEach(item => {\n\t\t\t\t\tstate.collection.set(item.id, item);\n\t\t\t\t});\n\t\t\t},\n\t\t\taddSearchResult: (state, payload) =>\n\t\t\t{\n\t\t\t\tpayload.forEach(item => {\n\t\t\t\t\tstate.searchCollection.set(item.id, item);\n\t\t\t\t});\n\t\t\t},\n\t\t\tupdate: (state, payload) =>\n\t\t\t{\n\t\t\t\tpayload.forEach(item => {\n\t\t\t\t\tstate.collection.set(item.id, {\n\t\t\t\t\t\t...state.collection.get(item.id),\n\t\t\t\t\t\t...item.fields\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tupdateSearchResult: (state, payload) =>\n\t\t\t{\n\t\t\t\tpayload.forEach(item => {\n\t\t\t\t\tstate.searchCollection.set(item.id, {\n\t\t\t\t\t\t...state.searchCollection.get(item.id),\n\t\t\t\t\t\t...item.fields\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tdelete: (state, payload) =>\n\t\t\t{\n\t\t\t\tstate.collection.delete(payload.id);\n\t\t\t\tstate.searchCollection.delete(payload.id);\n\t\t\t},\n\t\t\tread: (state, payload) => {\n\t\t\t\tstate.collection.set(payload.id, {\n\t\t\t\t\t...state.collection.get(payload.id),\n\t\t\t\t\tread: payload.read,\n\t\t\t\t});\n\t\t\t\tstate.searchCollection.set(payload.id, {\n\t\t\t\t\t...state.collection.get(payload.id),\n\t\t\t\t\tread: payload.read,\n\t\t\t\t});\n\t\t\t},\n\t\t\treadAll: (state) =>\n\t\t\t{\n\t\t\t\t[...state.collection.values()].forEach(item => {\n\t\t\t\t\tif (!item.read)\n\t\t\t\t\t{\n\t\t\t\t\t\titem.read = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetCounter: (state, payload) =>\n\t\t\t{\n\t\t\t\tstate.unreadCounter = Number.parseInt(payload, 10);\n\t\t\t},\n\t\t\tdecreaseCounter: (state) =>\n\t\t\t{\n\t\t\t\tif (state.unreadCounter > 0)\n\t\t\t\t{\n\t\t\t\t\tstate.unreadCounter--;\n\t\t\t\t}\n\t\t\t},\n\t\t\tincreaseCounter: (state) =>\n\t\t\t{\n\t\t\t\tstate.unreadCounter++;\n\t\t\t},\n\t\t\tclearSearchResult: (state) =>\n\t\t\t{\n\t\t\t\tstate.searchCollection.clear();\n\t\t\t}\n\t\t};\n\t}\n\n\tstatic validate(fields: Object)\n\t{\n\t\tconst result = {};\n\n\t\tif (Type.isString(fields.id) || Type.isNumber(fields.id))\n\t\t{\n\t\t\tresult.id = fields.id;\n\t\t}\n\n\t\tif (Type.isNumber(fields.author_id))\n\t\t{\n\t\t\tresult.authorId = fields.author_id;\n\t\t}\n\t\telse if (Type.isNumber(fields.userId))\n\t\t{\n\t\t\tresult.authorId = fields.userId;\n\t\t}\n\n\t\tif (!Type.isNil(fields.date))\n\t\t{\n\t\t\tresult.date = Utils.date.cast(fields.date);\n\t\t}\n\n\t\tif (Type.isString(fields.notify_title))\n\t\t{\n\t\t\tresult.title = fields.notify_title;\n\t\t}\n\t\telse if (Type.isString(fields.title))\n\t\t{\n\t\t\tresult.title = fields.title;\n\t\t}\n\n\t\tif (Type.isString(fields.text) || Type.isNumber(fields.text))\n\t\t{\n\t\t\tresult.text = Text.decode(fields.text.toString());\n\t\t}\n\n\t\tif (Type.isObjectLike(fields.params))\n\t\t{\n\t\t\tresult.params = convertObjectKeysToCamelCase(fields.params);\n\t\t}\n\n\t\tif (Type.isArray(fields.replaces))\n\t\t{\n\t\t\tresult.replaces = fields.replaces;\n\t\t}\n\n\t\tif (!Type.isNil(fields.notify_buttons))\n\t\t{\n\t\t\tresult.notifyButtons = JSON.parse(fields.notify_buttons);\n\t\t}\n\t\telse if (!Type.isNil(fields.buttons))\n\t\t{\n\t\t\tresult.notifyButtons = fields.buttons.map(button => {\n\t\t\t\treturn {\n\t\t\t\t\tCOMMAND: 'notifyConfirm',\n\t\t\t\t\tCOMMAND_PARAMS: `${result.id}|${button.VALUE}`,\n\t\t\t\t\tTEXT: `${button.TITLE}`,\n\t\t\t\t\tTYPE: 'BUTTON',\n\t\t\t\t\tDISPLAY: 'LINE',\n\t\t\t\t\tBG_COLOR: (button.VALUE === 'Y' ? '#8bc84b' : '#ef4b57'),\n\t\t\t\t\tTEXT_COLOR: '#fff',\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\tif (fields.notify_type === NotificationTypesCodes.confirm || fields.type === NotificationTypesCodes.confirm)\n\t\t{\n\t\t\tresult.sectionCode = NotificationTypesCodes.confirm;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tresult.sectionCode = NotificationTypesCodes.simple;\n\t\t}\n\n\t\tif (!Type.isNil(fields.notify_read))\n\t\t{\n\t\t\tresult.read = fields.notify_read === 'Y';\n\t\t}\n\t\telse if (!Type.isNil(fields.read))\n\t\t{\n\t\t\tresult.read = fields.read === 'Y';\n\t\t}\n\n\t\tif (Type.isString(fields.setting_name))\n\t\t{\n\t\t\tresult.settingName = fields.setting_name;\n\t\t}\n\t\telse if (Type.isString(fields.settingName))\n\t\t{\n\t\t\tresult.settingName = fields.settingName;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tsortByType(a, b)\n\t{\n\t\tif (a.sectionCode === NotificationTypesCodes.confirm && b.sectionCode !== NotificationTypesCodes.confirm)\n\t\t{\n\t\t\treturn -1;\n\t\t}\n\t\telse if (a.sectionCode !== NotificationTypesCodes.confirm && b.sectionCode === NotificationTypesCodes.confirm)\n\t\t{\n\t\t\treturn 1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn b.id - a.id;\n\t\t}\n\t}\n}\n","import { Type } from 'main.core';\n\nimport { Utils } from 'im.v2.lib.utils';\n\nimport { formatFieldsWithConfig } from '../../../../utils/validate';\n\nimport type { FieldsConfig } from '../../../../utils/validate';\n\nexport const sidebarLinksFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'id',\n\t\ttargetFieldName: 'id',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'messageId',\n\t\ttargetFieldName: 'messageId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'chatId',\n\t\ttargetFieldName: 'chatId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'authorId',\n\t\ttargetFieldName: 'authorId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'url',\n\t\ttargetFieldName: 'source',\n\t\tcheckFunction: Type.isPlainObject,\n\t\tformatFunction: (target) => {\n\t\t\treturn target.source ?? '';\n\t\t},\n\t},\n\t{\n\t\tfieldName: 'dateCreate',\n\t\ttargetFieldName: 'date',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: Utils.date.cast,\n\t},\n\t{\n\t\tfieldName: 'url',\n\t\ttargetFieldName: 'richData',\n\t\tcheckFunction: Type.isPlainObject,\n\t\tformatFunction: (target) => {\n\t\t\treturn formatFieldsWithConfig(target.richData, richDataFieldsConfig);\n\t\t},\n\t},\n];\n\nexport const richDataFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'id',\n\t\ttargetFieldName: 'id',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'description',\n\t\ttargetFieldName: 'description',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'link',\n\t\ttargetFieldName: 'link',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'name',\n\t\ttargetFieldName: 'name',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'previewUrl',\n\t\ttargetFieldName: 'previewUrl',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'type',\n\t\ttargetFieldName: 'type',\n\t\tcheckFunction: Type.isString,\n\t},\n];\n","import { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\n\nimport { sidebarLinksFieldsConfig } from './format/field-config';\nimport { formatFieldsWithConfig } from '../../../utils/validate';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelSidebarLinkItem } from '../../../registry';\nimport type { GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\n\ntype LinksState = {\n\tcollection: {\n\t\t[chatId: number]: ChatState\n\t},\n\tcounters: {[chatId: number]: number},\n};\n\ntype ChatState = {\n\thasNextPage: boolean,\n\titems: Map<ImModelSidebarLinkItem>,\n}\n\ntype LinksPayload = {\n\tchatId?: number,\n\tlinks?: Object[],\n\thasNextPage?: boolean,\n\tisHistoryLimitExceeded: boolean,\n}\n\n/* eslint-disable no-param-reassign */\nexport class LinksModel extends BuilderModel\n{\n\tgetState(): LinksState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t\tcollectionSearch: {},\n\t\t\tcounters: {},\n\t\t\thistoryLimitExceededCollection: {},\n\t\t};\n\t}\n\n\tgetElementState(): ImModelSidebarLinkItem\n\t{\n\t\treturn {\n\t\t\tid: 0,\n\t\t\tmessageId: 0,\n\t\t\tchatId: 0,\n\t\t\tauthorId: 0,\n\t\t\tsource: '',\n\t\t\tdate: new Date(),\n\t\t\trichData: {\n\t\t\t\tid: null,\n\t\t\t\tdescription: null,\n\t\t\t\tlink: null,\n\t\t\t\tname: null,\n\t\t\t\tpreviewUrl: null,\n\t\t\t\ttype: null,\n\t\t\t},\n\t\t};\n\t}\n\n\tgetChatState(): ChatState\n\t{\n\t\treturn {\n\t\t\titems: new Map(),\n\t\t\thasNextPage: true,\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/links/get */\n\t\t\tget: (state) => (chatId: number): ImModelSidebarLinkItem[] => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\treturn [...state.collection[chatId].items.values()].sort((a, b) => b.id - a.id);\n\t\t\t},\n\t\t\t/** @function sidebar/links/getSize */\n\t\t\tgetSize: (state) => (chatId: number): number => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].items.size;\n\t\t\t},\n\t\t\t/** @function sidebar/links/getCounter */\n\t\t\tgetCounter: (state) => (chatId: number): number => {\n\t\t\t\tif (!state.counters[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn state.counters[chatId];\n\t\t\t},\n\t\t\t/** @function sidebar/links/hasNextPage */\n\t\t\thasNextPage: (state) => (chatId: number): boolean => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].hasNextPage;\n\t\t\t},\n\t\t\t/** @function sidebar/links/hasNextPageSearch */\n\t\t\thasNextPageSearch: (state) => (chatId: number): boolean => {\n\t\t\t\tif (!state.collectionSearch[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collectionSearch[chatId].hasNextPage;\n\t\t\t},\n\t\t\t/** @function sidebar/links/getSearchResultCollectionSize */\n\t\t\tgetSearchResultCollectionSize: (state) => (chatId: number): number => {\n\t\t\t\tif (!state.collectionSearch[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn state.collectionSearch[chatId].items.size;\n\t\t\t},\n\t\t\t/** @function sidebar/links/getSearchResultCollection */\n\t\t\tgetSearchResultCollection: (state) => (chatId: number): ImModelSidebarLinkItem[] => {\n\t\t\t\tif (!state.collectionSearch[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\treturn [...state.collectionSearch[chatId].items.values()].sort((a, b) => b.id - a.id);\n\t\t\t},\n\t\t\t/** @function sidebar/links/isHistoryLimitExceeded */\n\t\t\tisHistoryLimitExceeded: (state) => (chatId: number): boolean => {\n\t\t\t\tconst isAvailable = Core.getStore().getters['application/tariffRestrictions/isHistoryAvailable'];\n\t\t\t\tif (isAvailable)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.historyLimitExceededCollection[chatId] ?? false;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/links/setCounter */\n\t\t\tsetCounter: (store, payload) => {\n\t\t\t\tif (!Type.isNumber(payload.counter) || !Type.isNumber(payload.chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setCounter', payload);\n\t\t\t},\n\t\t\t/** @function sidebar/links/set */\n\t\t\tset: (store, payload: LinksPayload) => {\n\t\t\t\tconst { chatId, links, hasNextPage, isHistoryLimitExceeded = false } = payload;\n\t\t\t\tif (!Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setHasNextPage', { chatId, hasNextPage });\n\t\t\t\tstore.commit('setHistoryLimitExceeded', { chatId, isHistoryLimitExceeded });\n\n\t\t\t\tlinks.forEach((link) => {\n\t\t\t\t\tconst preparedLink = { ...this.getElementState(), ...this.formatFields(link) };\n\t\t\t\t\tstore.commit('add', { chatId, link: preparedLink });\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function sidebar/links/setSearch */\n\t\t\tsetSearch: (store, payload: LinksPayload) => {\n\t\t\t\tconst { chatId, links, hasNextPage, isHistoryLimitExceeded = false } = payload;\n\t\t\t\tif (!Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setHasNextPageSearch', { chatId, hasNextPage });\n\t\t\t\tstore.commit('setHistoryLimitExceeded', { chatId, isHistoryLimitExceeded });\n\n\t\t\t\tlinks.forEach((link) => {\n\t\t\t\t\tconst preparedLink = { ...this.getElementState(), ...this.formatFields(link) };\n\t\t\t\t\tstore.commit('addSearch', { chatId, link: preparedLink });\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function sidebar/links/clearSearch */\n\t\t\tclearSearch: (store) => {\n\t\t\t\tstore.commit('clearSearch', {});\n\t\t\t},\n\t\t\t/** @function sidebar/links/delete */\n\t\t\tdelete: (store, payload) => {\n\t\t\t\tconst { chatId, id } = payload;\n\t\t\t\tif (!Type.isNumber(id) || !Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!store.state.collection[chatId] || !store.state.collection[chatId].items.has(id))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('delete', { chatId, id });\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tsetHasNextPage: (state, payload) => {\n\t\t\t\tconst { chatId, hasNextPage } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].hasNextPage = hasNextPage;\n\t\t\t},\n\t\t\tsetHasNextPageSearch: (state, payload: LinksPayload) => {\n\t\t\t\tconst { chatId, hasNextPage } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collectionSearch[chatId].hasNextPage = hasNextPage;\n\t\t\t},\n\t\t\tsetHistoryLimitExceeded: (state, payload) => {\n\t\t\t\tconst { chatId, isHistoryLimitExceeded } = payload;\n\t\t\t\tif (state.historyLimitExceededCollection[chatId] && !isHistoryLimitExceeded)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstate.historyLimitExceededCollection[chatId] = isHistoryLimitExceeded;\n\t\t\t},\n\t\t\tsetCounter: (state, payload) => {\n\t\t\t\tconst { chatId, counter } = payload;\n\t\t\t\tstate.counters[chatId] = counter;\n\t\t\t},\n\t\t\tadd: (state, payload: {chatId: number, link: ImModelSidebarLinkItem}) => {\n\t\t\t\tconst { chatId, link } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].items.set(link.id, link);\n\t\t\t},\n\t\t\taddSearch: (state, payload: {chatId: number, link: ImModelSidebarLinkItem}) => {\n\t\t\t\tconst { chatId, link } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collectionSearch[chatId].items.set(link.id, link);\n\t\t\t},\n\t\t\tclearSearch: (state) => {\n\t\t\t\tstate.collectionSearch = {};\n\t\t\t},\n\t\t\tdelete: (state, payload: {chatId: number, id: number}) => {\n\t\t\t\tconst { chatId, id } = payload;\n\t\t\t\tconst hasCollectionSearch = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tif (hasCollectionSearch)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId].items.delete(id);\n\t\t\t\t}\n\t\t\t\tstate.collection[chatId].items.delete(id);\n\t\t\t\tstate.counters[chatId]--;\n\t\t\t},\n\t\t};\n\t}\n\n\tformatFields(fields: JsonObject): JsonObject\n\t{\n\t\treturn formatFieldsWithConfig(fields, sidebarLinksFieldsConfig);\n\t}\n}\n","import { Type } from 'main.core';\n\nimport { Utils } from 'im.v2.lib.utils';\n\nimport type { FieldsConfig } from '../../../../utils/validate';\n\nexport const sidebarFavoritesFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'id',\n\t\ttargetFieldName: 'id',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'messageId',\n\t\ttargetFieldName: 'messageId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'chatId',\n\t\ttargetFieldName: 'chatId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'authorId',\n\t\ttargetFieldName: 'authorId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'dateCreate',\n\t\ttargetFieldName: 'date',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: Utils.date.cast,\n\t},\n];\n","import type { JsonObject } from 'main.core';\nimport { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\n\nimport { formatFieldsWithConfig } from '../../../utils/validate';\nimport { sidebarFavoritesFieldsConfig } from './format/field-config';\n\nimport type { ImModelSidebarFavoriteItem } from '../../../registry';\nimport type { GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\n\ntype FavoritesState = {\n\tcollection: {\n\t\t[chatId: number]: ChatState\n\t},\n\tcounters: {[chatId: number]: number},\n};\n\ntype ChatState = {\n\thasNextPage: boolean,\n\titems: Map<ImModelSidebarFavoriteItem>,\n\tlastId: number\n}\n\ntype FavoritesPayload = {\n\tchatId?: number,\n\tfavorites?: Object[],\n\thasNextPage?: boolean,\n\tlastId?: number,\n}\n\n/* eslint-disable no-param-reassign */\nexport class FavoritesModel extends BuilderModel\n{\n\tgetState(): FavoritesState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t\tcounters: {},\n\t\t\tcollectionSearch: {},\n\t\t\thistoryLimitExceededCollection: {},\n\t\t};\n\t}\n\n\tgetElementState(): ImModelSidebarFavoriteItem\n\t{\n\t\treturn {\n\t\t\tid: 0,\n\t\t\tmessageId: 0,\n\t\t\tchatId: 0,\n\t\t\tauthorId: 0,\n\t\t\tdate: new Date(),\n\t\t};\n\t}\n\n\tgetChatState(): ChatState\n\t{\n\t\treturn {\n\t\t\titems: new Map(),\n\t\t\thasNextPage: true,\n\t\t\tlastId: 0,\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/favorites/get */\n\t\t\tget: (state) => (chatId: number): ImModelSidebarFavoriteItem[] => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\treturn [...state.collection[chatId].items.values()].sort((a, b) => b.id - a.id);\n\t\t\t},\n\t\t\t/** @function sidebar/favorites/getSize */\n\t\t\tgetSize: (state) => (chatId: number): number => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].items.size;\n\t\t\t},\n\t\t\t/** @function sidebar/favorites/getCounter */\n\t\t\tgetCounter: (state) => (chatId: number): number => {\n\t\t\t\tif (state.counters[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn state.counters[chatId];\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t},\n\t\t\t/** @function sidebar/favorites/isFavoriteMessage */\n\t\t\tisFavoriteMessage: (state) => (chatId: number, messageId: number): boolean => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst chatFavorites = Object.fromEntries(state.collection[chatId].items);\n\t\t\t\tconst targetMessage = Object.values(chatFavorites).find((element) => element.messageId === messageId);\n\n\t\t\t\treturn Boolean(targetMessage);\n\t\t\t},\n\t\t\t/** @function sidebar/favorites/hasNextPage */\n\t\t\thasNextPage: (state) => (chatId: number): boolean => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].hasNextPage;\n\t\t\t},\n\t\t\t/** @function sidebar/favorites/getLastId */\n\t\t\tgetLastId: (state) => (chatId: number): boolean => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].lastId;\n\t\t\t},\n\t\t\t/** @function sidebar/favorites/getSearchResultCollectionLastId */\n\t\t\tgetSearchResultCollectionLastId: (state) => (chatId: number): number => {\n\t\t\t\tif (!state.collectionSearch[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn state.collectionSearch[chatId].lastId;\n\t\t\t},\n\t\t\t/** @function sidebar/favorites/hasNextPageSearch */\n\t\t\thasNextPageSearch: (state) => (chatId: number): boolean => {\n\t\t\t\tif (!state.collectionSearch[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collectionSearch[chatId].hasNextPage;\n\t\t\t},\n\t\t\t/** @function sidebar/favorites/getSearchResultCollection */\n\t\t\tgetSearchResultCollection: (state) => (chatId: number): ImModelSidebarFavoriteItem[] => {\n\t\t\t\tif (!state.collectionSearch[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\treturn [...state.collectionSearch[chatId].items.values()].sort((a, b) => b.id - a.id);\n\t\t\t},\n\t\t\t/** @function sidebar/favorites/isHistoryLimitExceeded */\n\t\t\tisHistoryLimitExceeded: (state) => (chatId: number): boolean => {\n\t\t\t\tconst isAvailable = Core.getStore().getters['application/tariffRestrictions/isHistoryAvailable'];\n\t\t\t\tif (isAvailable)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.historyLimitExceededCollection[chatId] ?? false;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/favorites/setCounter */\n\t\t\tsetCounter: (store, payload) => {\n\t\t\t\tif (!Type.isNumber(payload.counter) || !Type.isNumber(payload.chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setCounter', payload);\n\t\t\t},\n\t\t\t/** @function sidebar/favorites/set */\n\t\t\tset: (store, payload) => {\n\t\t\t\tif (Type.isNumber(payload.favorites))\n\t\t\t\t{\n\t\t\t\t\tpayload.favorites = [payload.favorites];\n\t\t\t\t}\n\t\t\t\tconst { chatId, favorites, hasNextPage, lastId, isHistoryLimitExceeded = false } = payload;\n\n\t\t\t\tif (!Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setHistoryLimitExceeded', { chatId, isHistoryLimitExceeded });\n\t\t\t\tstore.commit('setHasNextPage', { chatId, hasNextPage });\n\t\t\t\tstore.commit('setLastId', { chatId, lastId });\n\n\t\t\t\tfavorites.forEach((favorite) => {\n\t\t\t\t\tconst preparedFavoriteMessage = { ...this.getElementState(), ...this.formatFields(favorite) };\n\t\t\t\t\tstore.commit('add', { chatId, favorite: preparedFavoriteMessage });\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function sidebar/favorites/delete */\n\t\t\tdelete: (store, payload) => {\n\t\t\t\tconst { chatId, id } = payload;\n\t\t\t\tif (!Type.isNumber(id) || !Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!store.state.collection[chatId] || !store.state.collection[chatId].items.has(id))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('delete', { chatId, id });\n\t\t\t},\n\t\t\t/** @function sidebar/favorites/deleteByMessageId */\n\t\t\tdeleteByMessageId: (store, payload: {chatId: number, messageId: number}) => {\n\t\t\t\tconst { chatId, messageId } = payload;\n\t\t\t\tif (!store.state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst chatCollection = store.state.collection[chatId].items;\n\t\t\t\tlet targetLinkId = null;\n\t\t\t\tfor (const [linkId, linkObject] of chatCollection)\n\t\t\t\t{\n\t\t\t\t\tif (linkObject.messageId === messageId)\n\t\t\t\t\t{\n\t\t\t\t\t\ttargetLinkId = linkId;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!targetLinkId)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('delete', { chatId, id: targetLinkId });\n\t\t\t},\n\t\t\t/** @function sidebar/favorites/setSearch */\n\t\t\tsetSearch: (store, payload: FavoritesPayload) => {\n\t\t\t\tconst { chatId, favorites, hasNextPage, lastId, isHistoryLimitExceeded = false } = payload;\n\n\t\t\t\tif (!Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setHistoryLimitExceeded', { chatId, isHistoryLimitExceeded });\n\t\t\t\tstore.commit('setHasNextPageSearch', { chatId, hasNextPage });\n\t\t\t\tstore.commit('setLastIdSearch', { chatId, lastId });\n\n\t\t\t\tfavorites.forEach((favorite) => {\n\t\t\t\t\tconst preparedFavoriteMessage = { ...this.getElementState(), ...this.formatFields(favorite) };\n\t\t\t\t\tstore.commit('addSearch', { chatId, favorite: preparedFavoriteMessage });\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function sidebar/favorites/clearSearch */\n\t\t\tclearSearch: (store) => {\n\t\t\t\tstore.commit('clearSearch', {});\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tsetHasNextPage: (state, payload) => {\n\t\t\t\tconst { chatId, hasNextPage } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].hasNextPage = hasNextPage;\n\t\t\t},\n\t\t\tsetHasNextPageSearch: (state, payload: FavoritesPayload) => {\n\t\t\t\tconst { chatId, hasNextPage } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collectionSearch[chatId].hasNextPage = hasNextPage;\n\t\t\t},\n\t\t\tsetCounter: (state, payload) => {\n\t\t\t\tconst { chatId, counter } = payload;\n\t\t\t\tstate.counters[chatId] = counter;\n\t\t\t},\n\t\t\tsetLastId: (state, payload) => {\n\t\t\t\tconst { chatId, lastId } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].lastId = lastId;\n\t\t\t},\n\t\t\tadd: (state, payload: {chatId: number, favorite: ImModelSidebarFavoriteItem}) => {\n\t\t\t\tconst { chatId, favorite } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].items.set(favorite.id, favorite);\n\t\t\t},\n\t\t\taddSearch: (state, payload: {chatId: number, favorite: ImModelSidebarFavoriteItem}) => {\n\t\t\t\tconst { chatId, favorite } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collectionSearch[chatId].items.set(favorite.id, favorite);\n\t\t\t},\n\t\t\tclearSearch: (state) => {\n\t\t\t\tstate.collectionSearch = {};\n\t\t\t},\n\t\t\tsetLastIdSearch: (state, payload: FavoritesPayload) => {\n\t\t\t\tconst { chatId, lastId } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collectionSearch[chatId].lastId = lastId;\n\t\t\t},\n\t\t\tdelete: (state, payload: {chatId: number, id: number}) => {\n\t\t\t\tconst { chatId, id } = payload;\n\t\t\t\tconst hasCollectionSearch = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tif (hasCollectionSearch)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId].items.delete(id);\n\t\t\t\t}\n\t\t\t\tstate.collection[chatId].items.delete(id);\n\t\t\t\tstate.counters[chatId]--;\n\t\t\t},\n\t\t\tsetHistoryLimitExceeded: (state, payload) => {\n\t\t\t\tconst { chatId, isHistoryLimitExceeded } = payload;\n\t\t\t\tif (state.historyLimitExceededCollection[chatId] && !isHistoryLimitExceeded)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstate.historyLimitExceededCollection[chatId] = isHistoryLimitExceeded;\n\t\t\t},\n\t\t};\n\t}\n\n\tformatFields(fields: JsonObject): JsonObject\n\t{\n\t\treturn formatFieldsWithConfig(fields, sidebarFavoritesFieldsConfig);\n\t}\n}\n","import { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport type { JsonObject } from 'main.core';\nimport type { ActionTree, MutationTree, GetterTree } from 'ui.vue3.vuex';\n\ntype MembersState = {\n\tcollection: { [chatId: number]: ChatState }\n};\n\ntype ChatState = {\n\tusers: Set<number>,\n\tinited: boolean,\n\thasNextPage: boolean,\n\tnextCursor: MembersPaginationCursor | null,\n};\n\ntype SetMembersPayload = {\n\tchatId: number,\n\tusers: number[],\n\thasNextPage?: boolean,\n};\n\ntype SetCursorPayload = {\n\tchatId: number,\n\tnextCursor: MembersPaginationCursor,\n};\n\ntype MembersPaginationCursor = JsonObject;\n\n/* eslint-disable no-param-reassign */\nexport class MembersModel extends BuilderModel\n{\n\tgetState(): MembersState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t};\n\t}\n\n\tgetChatState(): ChatState\n\t{\n\t\treturn {\n\t\t\tusers: new Set(),\n\t\t\thasNextPage: true,\n\t\t\tnextCursor: null,\n\t\t\tinited: false,\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/members/get */\n\t\t\tget: (state: MembersState) => (chatId: number): number[] => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\treturn [...state.collection[chatId].users];\n\t\t\t},\n\t\t\t/** @function sidebar/members/getSize */\n\t\t\tgetSize: (state: MembersState) => (chatId: number): number => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].users.size;\n\t\t\t},\n\t\t\t/** @function sidebar/members/hasNextPage */\n\t\t\thasNextPage: (state: MembersState) => (chatId: number): boolean => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].hasNextPage;\n\t\t\t},\n\t\t\t/** @function sidebar/members/getNextCursor */\n\t\t\tgetNextCursor: (state: MembersState) => (chatId: number): boolean => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].nextCursor;\n\t\t\t},\n\t\t\t/** @function sidebar/members/getInited */\n\t\t\tgetInited: (state: MembersState) => (chatId: number): boolean => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].inited;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/members/set */\n\t\t\tset: (store, payload: SetMembersPayload) => {\n\t\t\t\tconst { chatId, users, hasNextPage, nextCursor } = payload;\n\n\t\t\t\tif (!Type.isNil(hasNextPage))\n\t\t\t\t{\n\t\t\t\t\tstore.commit('setHasNextPage', { chatId, hasNextPage });\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setInited', { chatId, inited: true });\n\n\t\t\t\tif (users.length > 0)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('set', { chatId, users });\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** @function sidebar/members/setNextCursor */\n\t\t\tsetNextCursor: (store, payload: SetCursorPayload) => {\n\t\t\t\tstore.commit('setNextCursor', payload);\n\t\t\t},\n\t\t\t/** @function sidebar/members/delete */\n\t\t\tdelete: (store, payload) => {\n\t\t\t\tconst { chatId, userId } = payload;\n\t\t\t\tif (!Type.isNumber(chatId) || !Type.isNumber(userId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!store.state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('delete', { userId, chatId });\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tset: (state: MembersState, payload) => {\n\t\t\t\tconst { chatId, users } = payload;\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tusers.forEach((id: number) => {\n\t\t\t\t\tstate.collection[chatId].users.add(id);\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetHasNextPage: (state: MembersState, payload) => {\n\t\t\t\tconst { chatId, hasNextPage } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].hasNextPage = hasNextPage;\n\t\t\t},\n\t\t\tsetNextCursor: (state: MembersState, payload: { chatId: number, nextCursor: MembersPaginationCursor }) => {\n\t\t\t\tconst { chatId, nextCursor } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].nextCursor = nextCursor;\n\t\t\t},\n\t\t\tsetInited: (state: MembersState, payload) => {\n\t\t\t\tconst { chatId, inited } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].inited = inited;\n\t\t\t},\n\t\t\tdelete: (state: MembersState, payload: {chatId: number, userId: number}) => {\n\t\t\t\tconst { chatId, userId } = payload;\n\t\t\t\tstate.collection[chatId].users.delete(userId);\n\t\t\t},\n\t\t};\n\t}\n}\n","import { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\n\nimport type { GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\n\ntype MessageSearchState = {\n\thistoryLimitExceededCollection: {[chatId: number]: boolean},\n};\n\n/* eslint-disable no-param-reassign */\nexport class MessageSearchModel extends BuilderModel\n{\n\tgetState(): MessageSearchState\n\t{\n\t\treturn {\n\t\t\thistoryLimitExceededCollection: {},\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/messageSearch/isHistoryLimitExceeded */\n\t\t\tisHistoryLimitExceeded: (state) => (chatId: number): boolean => {\n\t\t\t\tconst isAvailable = Core.getStore().getters['application/tariffRestrictions/isHistoryAvailable'];\n\t\t\t\tif (isAvailable)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.historyLimitExceededCollection[chatId] ?? false;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/messageSearch/setHistoryLimitExceeded */\n\t\t\tsetHistoryLimitExceeded: (store, payload) => {\n\t\t\t\tconst { chatId, isHistoryLimitExceeded = false } = payload;\n\t\t\t\tstore.commit('setHistoryLimitExceeded', { chatId, isHistoryLimitExceeded });\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tsetHistoryLimitExceeded: (state, payload) => {\n\t\t\t\tconst { chatId, isHistoryLimitExceeded } = payload;\n\t\t\t\tif (state.historyLimitExceededCollection[chatId] && !isHistoryLimitExceeded)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstate.historyLimitExceededCollection[chatId] = isHistoryLimitExceeded;\n\t\t\t},\n\t\t};\n\t}\n}\n","import { Type } from 'main.core';\n\nimport { Utils } from 'im.v2.lib.utils';\n\nimport { formatFieldsWithConfig } from '../../../../utils/validate';\n\nimport type { FieldsConfig } from '../../../../utils/validate';\n\nexport const sidebarTaskFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'id',\n\t\ttargetFieldName: 'id',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'messageId',\n\t\ttargetFieldName: 'messageId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'chatId',\n\t\ttargetFieldName: 'chatId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'authorId',\n\t\ttargetFieldName: 'authorId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'dateCreate',\n\t\ttargetFieldName: 'date',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: Utils.date.cast,\n\t},\n\t{\n\t\tfieldName: 'task',\n\t\ttargetFieldName: 'task',\n\t\tcheckFunction: Type.isPlainObject,\n\t\tformatFunction: (target) => {\n\t\t\treturn formatFieldsWithConfig(target, taskFieldsConfig);\n\t\t},\n\t},\n];\n\nexport const taskFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'id',\n\t\ttargetFieldName: 'id',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'title',\n\t\ttargetFieldName: 'title',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'creatorId',\n\t\ttargetFieldName: 'creatorId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'responsibleId',\n\t\ttargetFieldName: 'responsibleId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'statusTitle',\n\t\ttargetFieldName: 'statusTitle',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'deadline',\n\t\ttargetFieldName: 'deadline',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: Utils.date.cast,\n\t},\n\t{\n\t\tfieldName: 'state',\n\t\ttargetFieldName: 'state',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'color',\n\t\ttargetFieldName: 'color',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'source',\n\t\ttargetFieldName: 'source',\n\t\tcheckFunction: Type.isString,\n\t},\n];\n","import { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\n\nimport { sidebarTaskFieldsConfig } from './format/field-config';\nimport { formatFieldsWithConfig } from '../../../utils/validate';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelSidebarTaskItem } from '../../../registry';\nimport type { GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\n\ntype TasksState = {\n\tcollection: {\n\t\t[chatId: number]: ChatState\n\t},\n};\n\ntype ChatState = {\n\thasNextPage: boolean,\n\titems: Map<ImModelSidebarTaskItem>,\n\tlastId: number\n}\n\ntype TasksPayload = {\n\tchatId?: number,\n\ttasks?: Object[],\n\thasNextPage?: boolean,\n\tlastId?: number,\n}\n\n/* eslint-disable no-param-reassign */\nexport class TasksModel extends BuilderModel\n{\n\tgetState(): TasksState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t\tcollectionSearch: {},\n\t\t\thistoryLimitExceededCollection: {},\n\t\t};\n\t}\n\n\tgetElementState(): ImModelSidebarTaskItem\n\t{\n\t\treturn {\n\t\t\tid: 0,\n\t\t\tmessageId: 0,\n\t\t\tchatId: 0,\n\t\t\tauthorId: 0,\n\t\t\tdate: new Date(),\n\t\t\ttask: {\n\t\t\t\tid: 0,\n\t\t\t\ttitle: '',\n\t\t\t\tcreatorId: 0,\n\t\t\t\tresponsibleId: 0,\n\t\t\t\tstatus: 0,\n\t\t\t\tstatusTitle: '',\n\t\t\t\tdeadline: new Date(),\n\t\t\t\tstate: '',\n\t\t\t\tcolor: '',\n\t\t\t\tsource: '',\n\t\t\t},\n\t\t};\n\t}\n\n\tgetChatState(): ChatState\n\t{\n\t\treturn {\n\t\t\titems: new Map(),\n\t\t\thasNextPage: true,\n\t\t\tlastId: 0,\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/tasks/get */\n\t\t\tget: (state) => (chatId: number): ImModelSidebarTaskItem[] => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\treturn [...state.collection[chatId].items.values()].sort((a, b) => b.id - a.id);\n\t\t\t},\n\t\t\t/** @function sidebar/tasks/getSearchResultCollection */\n\t\t\tgetSearchResultCollection: (state) => (chatId: number): ImModelSidebarTaskItem[] => {\n\t\t\t\tif (!state.collectionSearch[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\treturn [...state.collectionSearch[chatId].items.values()].sort((a, b) => b.id - a.id);\n\t\t\t},\n\t\t\t/** @function sidebar/tasks/getSize */\n\t\t\tgetSize: (state) => (chatId: number): number => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].items.size;\n\t\t\t},\n\t\t\t/** @function sidebar/tasks/hasNextPage */\n\t\t\thasNextPage: (state) => (chatId: number): boolean => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].hasNextPage;\n\t\t\t},\n\t\t\t/** @function sidebar/tasks/getLastId */\n\t\t\tgetLastId: (state) => (chatId: number): boolean => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].lastId;\n\t\t\t},\n\t\t\t/** @function sidebar/tasks/getSearchResultCollectionLastId */\n\t\t\tgetSearchResultCollectionLastId: (state) => (chatId: number): boolean => {\n\t\t\t\tif (!state.collectionSearch[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collectionSearch[chatId].lastId;\n\t\t\t},\n\t\t\t/** @function sidebar/tasks/isHistoryLimitExceeded */\n\t\t\tisHistoryLimitExceeded: (state) => (chatId: number): boolean => {\n\t\t\t\tconst isAvailable = Core.getStore().getters['application/tariffRestrictions/isHistoryAvailable'];\n\t\t\t\tif (isAvailable)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.historyLimitExceededCollection[chatId] ?? false;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/tasks/set */\n\t\t\tset: (store, payload) => {\n\t\t\t\tconst { chatId, tasks, hasNextPage, lastId, isHistoryLimitExceeded = false } = payload;\n\t\t\t\tif (!Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setHistoryLimitExceeded', { chatId, isHistoryLimitExceeded });\n\n\t\t\t\tif (!Type.isNil(hasNextPage))\n\t\t\t\t{\n\t\t\t\t\tstore.commit('setHasNextPage', { chatId, hasNextPage });\n\t\t\t\t}\n\n\t\t\t\tif (!Type.isNil(lastId))\n\t\t\t\t{\n\t\t\t\t\tstore.commit('setLastId', { chatId, lastId });\n\t\t\t\t}\n\n\t\t\t\ttasks.forEach((task) => {\n\t\t\t\t\tconst preparedTask = { ...this.getElementState(), ...this.formatFields(task) };\n\t\t\t\t\tstore.commit('add', { chatId, task: preparedTask });\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function sidebar/tasks/clearSearch */\n\t\t\tclearSearch: (store) => {\n\t\t\t\tstore.commit('clearSearch', {});\n\t\t\t},\n\t\t\t/** @function sidebar/tasks/setSearch */\n\t\t\tsetSearch: (store, payload: TasksPayload) => {\n\t\t\t\tconst { chatId, tasks, hasNextPage, lastId, isHistoryLimitExceeded = false } = payload;\n\t\t\t\tif (!Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setHistoryLimitExceeded', { chatId, isHistoryLimitExceeded });\n\t\t\t\tif (!Type.isNil(hasNextPage))\n\t\t\t\t{\n\t\t\t\t\tstore.commit('setHasNextPageSearch', { chatId, hasNextPage });\n\t\t\t\t}\n\n\t\t\t\tif (!Type.isNil(lastId))\n\t\t\t\t{\n\t\t\t\t\tstore.commit('setLastIdSearch', { chatId, lastId });\n\t\t\t\t}\n\n\t\t\t\ttasks.forEach((task) => {\n\t\t\t\t\tconst preparedTask = { ...this.getElementState(), ...this.formatFields(task) };\n\t\t\t\t\tstore.commit('addSearch', { chatId, task: preparedTask });\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function sidebar/tasks/delete */\n\t\t\tdelete: (store, payload) => {\n\t\t\t\tconst { chatId, id } = payload;\n\t\t\t\tif (!Type.isNumber(chatId) || !Type.isNumber(id))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!store.state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('delete', { id, chatId });\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tadd: (state, payload: {chatId: number, task: ImModelSidebarTaskItem}) => {\n\t\t\t\tconst { chatId, task } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].items.set(task.id, task);\n\t\t\t},\n\t\t\taddSearch: (state, payload: {chatId: number, task: ImModelSidebarTaskItem}) => {\n\t\t\t\tconst { chatId, task } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collectionSearch[chatId].items.set(task.id, task);\n\t\t\t},\n\t\t\tdelete: (state, payload: {id: number, chatId: number}) => {\n\t\t\t\tconst { id, chatId } = payload;\n\t\t\t\tconst hasCollectionSearch = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tif (hasCollectionSearch)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId].items.delete(id);\n\t\t\t\t}\n\t\t\t\tstate.collection[chatId].items.delete(id);\n\t\t\t},\n\t\t\tsetHasNextPage: (state, payload) => {\n\t\t\t\tconst { chatId, hasNextPage } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].hasNextPage = hasNextPage;\n\t\t\t},\n\t\t\tsetHasNextPageSearch: (state, payload: TasksPayload) => {\n\t\t\t\tconst { chatId, hasNextPage } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collectionSearch[chatId].hasNextPage = hasNextPage;\n\t\t\t},\n\t\t\tsetLastId: (state, payload) => {\n\t\t\t\tconst { chatId, lastId } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].lastId = lastId;\n\t\t\t},\n\t\t\tsetLastIdSearch: (state, payload: TasksPayload) => {\n\t\t\t\tconst { chatId, lastId } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collectionSearch[chatId].lastId = lastId;\n\t\t\t},\n\t\t\tclearSearch: (state) => {\n\t\t\t\tstate.collectionSearch = {};\n\t\t\t},\n\t\t\tsetHistoryLimitExceeded: (state, payload) => {\n\t\t\t\tconst { chatId, isHistoryLimitExceeded } = payload;\n\t\t\t\tif (state.historyLimitExceededCollection[chatId] && !isHistoryLimitExceeded)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstate.historyLimitExceededCollection[chatId] = isHistoryLimitExceeded;\n\t\t\t},\n\t\t};\n\t}\n\n\tformatFields(fields: JsonObject): JsonObject\n\t{\n\t\treturn formatFieldsWithConfig(fields, sidebarTaskFieldsConfig);\n\t}\n}\n","import { Type } from 'main.core';\n\nimport { Utils } from 'im.v2.lib.utils';\n\nimport { formatFieldsWithConfig } from '../../../../utils/validate';\n\nimport type { FieldsConfig } from '../../../../utils/validate';\n\nexport const sidebarMeetingFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'id',\n\t\ttargetFieldName: 'id',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'messageId',\n\t\ttargetFieldName: 'messageId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'chatId',\n\t\ttargetFieldName: 'chatId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'authorId',\n\t\ttargetFieldName: 'authorId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'dateCreate',\n\t\ttargetFieldName: 'date',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: Utils.date.cast,\n\t},\n\t{\n\t\tfieldName: 'calendar',\n\t\ttargetFieldName: 'meeting',\n\t\tcheckFunction: Type.isPlainObject,\n\t\tformatFunction: (target) => {\n\t\t\treturn formatFieldsWithConfig(target, meetingFieldsConfig);\n\t\t},\n\t},\n];\n\nexport const meetingFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'id',\n\t\ttargetFieldName: 'id',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'title',\n\t\ttargetFieldName: 'title',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'dateFrom',\n\t\ttargetFieldName: 'dateFrom',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: Utils.date.cast,\n\t},\n\t{\n\t\tfieldName: 'dateTo',\n\t\ttargetFieldName: 'dateTo',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: Utils.date.cast,\n\t},\n\t{\n\t\tfieldName: 'source',\n\t\ttargetFieldName: 'source',\n\t\tcheckFunction: Type.isString,\n\t},\n];\n","import { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\n\nimport { formatFieldsWithConfig } from '../../../utils/validate';\nimport { sidebarMeetingFieldsConfig } from './format/field-config';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelSidebarMeetingItem } from '../../../registry';\nimport type { GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\n\ntype MeetingsState = {\n\tcollection: {\n\t\t[chatId: number]: ChatState\n\t},\n};\n\ntype ChatState = {\n\thasNextPage: boolean,\n\titems: Map<ImModelSidebarMeetingItem>,\n\tlastId: number\n}\n\ntype MeetingsPayload = {\n\tchatId?: number,\n\tmeetings?: Object[],\n\thasNextPage?: boolean,\n\tlastId?: number,\n}\n\n/* eslint-disable no-param-reassign */\nexport class MeetingsModel extends BuilderModel\n{\n\tgetState(): MeetingsState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t\tcollectionSearch: {},\n\t\t\thistoryLimitExceededCollection: {},\n\t\t};\n\t}\n\n\tgetElementState(): ImModelSidebarMeetingItem\n\t{\n\t\treturn {\n\t\t\tid: 0,\n\t\t\tmessageId: 0,\n\t\t\tchatId: 0,\n\t\t\tauthorId: 0,\n\t\t\tdate: new Date(),\n\t\t\tmeeting: {\n\t\t\t\tid: 0,\n\t\t\t\ttitle: '',\n\t\t\t\tdateFrom: new Date(),\n\t\t\t\tdateTo: new Date(),\n\t\t\t\tsource: '',\n\t\t\t},\n\t\t};\n\t}\n\n\tgetChatState(): ChatState\n\t{\n\t\treturn {\n\t\t\titems: new Map(),\n\t\t\thasNextPage: true,\n\t\t\tlastId: 0,\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/meetings/get */\n\t\t\tget: (state) => (chatId: number): ImModelSidebarMeetingItem[] => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\treturn [...state.collection[chatId].items.values()].sort((a, b) => b.id - a.id);\n\t\t\t},\n\t\t\t/** @function sidebar/meetings/getSearchResultCollection */\n\t\t\tgetSearchResultCollection: (state) => (chatId: number): ImModelSidebarMeetingItem[] => {\n\t\t\t\tif (!state.collectionSearch[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\treturn [...state.collectionSearch[chatId].items.values()].sort((a, b) => b.id - a.id);\n\t\t\t},\n\t\t\t/** @function sidebar/meetings/getSize */\n\t\t\tgetSize: (state) => (chatId: number): number => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].items.size;\n\t\t\t},\n\t\t\t/** @function sidebar/meetings/hasNextPage */\n\t\t\thasNextPage: (state) => (chatId: number): boolean => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].hasNextPage;\n\t\t\t},\n\t\t\t/** @function sidebar/meetings/getLastId */\n\t\t\tgetLastId: (state) => (chatId: number): boolean => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId].lastId;\n\t\t\t},\n\t\t\t/** @function sidebar/meetings/getSearchResultCollectionLastId */\n\t\t\tgetSearchResultCollectionLastId: (state) => (chatId: number): boolean => {\n\t\t\t\tif (!state.collectionSearch[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collectionSearch[chatId].lastId;\n\t\t\t},\n\t\t\t/** @function sidebar/meetings/isHistoryLimitExceeded */\n\t\t\tisHistoryLimitExceeded: (state) => (chatId: number): boolean => {\n\t\t\t\tconst isAvailable = Core.getStore().getters['application/tariffRestrictions/isHistoryAvailable'];\n\t\t\t\tif (isAvailable)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.historyLimitExceededCollection[chatId] ?? false;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/meetings/set */\n\t\t\tset: (store, payload) => {\n\t\t\t\tconst { chatId, meetings, hasNextPage, lastId, isHistoryLimitExceeded = false } = payload;\n\t\t\t\tif (!Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setHistoryLimitExceeded', { chatId, isHistoryLimitExceeded });\n\t\t\t\tif (!Type.isNil(hasNextPage))\n\t\t\t\t{\n\t\t\t\t\tstore.commit('setHasNextPage', { chatId, hasNextPage });\n\t\t\t\t}\n\n\t\t\t\tif (!Type.isNil(lastId))\n\t\t\t\t{\n\t\t\t\t\tstore.commit('setLastId', { chatId, lastId });\n\t\t\t\t}\n\n\t\t\t\tmeetings.forEach((meeting) => {\n\t\t\t\t\tconst preparedMeeting = { ...this.getElementState(), ...this.formatFields(meeting) };\n\t\t\t\t\tstore.commit('add', { chatId, meeting: preparedMeeting });\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function sidebar/meetings/setSearch */\n\t\t\tsetSearch: (store, payload: MeetingsPayload) => {\n\t\t\t\tconst { chatId, meetings, hasNextPage, lastId, isHistoryLimitExceeded = false } = payload;\n\t\t\t\tif (!Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setHistoryLimitExceeded', { chatId, isHistoryLimitExceeded });\n\t\t\t\tif (!Type.isNil(hasNextPage))\n\t\t\t\t{\n\t\t\t\t\tstore.commit('setHasNextPageSearch', { chatId, hasNextPage });\n\t\t\t\t}\n\n\t\t\t\tif (!Type.isNil(lastId))\n\t\t\t\t{\n\t\t\t\t\tstore.commit('setLastIdSearch', { chatId, lastId });\n\t\t\t\t}\n\n\t\t\t\tmeetings.forEach((meeting) => {\n\t\t\t\t\tconst preparedMeeting = { ...this.getElementState(), ...this.formatFields(meeting) };\n\t\t\t\t\tstore.commit('addSearch', { chatId, meeting: preparedMeeting });\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function sidebar/meetings/delete */\n\t\t\tdelete: (store, payload) => {\n\t\t\t\tconst { chatId, id } = payload;\n\t\t\t\tif (!Type.isNumber(chatId) || !Type.isNumber(id))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!store.state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('delete', { id, chatId });\n\t\t\t},\n\t\t\t/** @function sidebar/meetings/clearSearch */\n\t\t\tclearSearch: (store) => {\n\t\t\t\tstore.commit('clearSearch', {});\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tadd: (state, payload: {chatId: number, meeting: ImModelSidebarMeetingItem}) => {\n\t\t\t\tconst { chatId, meeting } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].items.set(meeting.id, meeting);\n\t\t\t},\n\t\t\taddSearch: (state, payload: {chatId: number, meeting: ImModelSidebarMeetingItem}) => {\n\t\t\t\tconst { chatId, meeting } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collectionSearch[chatId].items.set(meeting.id, meeting);\n\t\t\t},\n\t\t\tdelete: (state, payload: {id: number, chatId: number}) => {\n\t\t\t\tconst { id, chatId } = payload;\n\t\t\t\tconst hasCollectionSearch = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tif (hasCollectionSearch)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId].items.delete(id);\n\t\t\t\t}\n\t\t\t\tstate.collection[chatId].items.delete(id);\n\t\t\t},\n\t\t\tsetHasNextPage: (state, payload) => {\n\t\t\t\tconst { chatId, hasNextPage } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].hasNextPage = hasNextPage;\n\t\t\t},\n\t\t\tsetHasNextPageSearch: (state, payload: MeetingsPayload) => {\n\t\t\t\tconst { chatId, hasNextPage } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collectionSearch[chatId].hasNextPage = hasNextPage;\n\t\t\t},\n\t\t\tsetLastId: (state, payload) => {\n\t\t\t\tconst { chatId, lastId } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId].lastId = lastId;\n\t\t\t},\n\t\t\tsetLastIdSearch: (state, payload: MeetingsPayload) => {\n\t\t\t\tconst { chatId, lastId } = payload;\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collectionSearch[chatId].lastId = lastId;\n\t\t\t},\n\t\t\tclearSearch: (state) => {\n\t\t\t\tstate.collectionSearch = {};\n\t\t\t},\n\t\t\tsetHistoryLimitExceeded: (state, payload) => {\n\t\t\t\tconst { chatId, isHistoryLimitExceeded } = payload;\n\t\t\t\tif (state.historyLimitExceededCollection[chatId] && !isHistoryLimitExceeded)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstate.historyLimitExceededCollection[chatId] = isHistoryLimitExceeded;\n\t\t\t},\n\t\t};\n\t}\n\n\tformatFields(fields: JsonObject): JsonObject\n\t{\n\t\treturn formatFieldsWithConfig(fields, sidebarMeetingFieldsConfig);\n\t}\n}\n","import { Type } from 'main.core';\n\nimport { Utils } from 'im.v2.lib.utils';\n\nimport type { FieldsConfig } from '../../../../utils/validate';\n\nexport const sidebarFilesFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'id',\n\t\ttargetFieldName: 'id',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'messageId',\n\t\ttargetFieldName: 'messageId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'chatId',\n\t\ttargetFieldName: 'chatId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'authorId',\n\t\ttargetFieldName: 'authorId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: ['dateCreate', 'date'],\n\t\ttargetFieldName: 'date',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: Utils.date.cast,\n\t},\n\t{\n\t\tfieldName: ['fileId', 'id'],\n\t\ttargetFieldName: 'fileId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n];\n","import { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\nimport { SidebarFileGroups } from 'im.v2.const';\n\nimport { formatFieldsWithConfig } from '../../../utils/validate';\nimport { sidebarFilesFieldsConfig } from './format/field-config';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelSidebarFileItem } from '../../../registry';\nimport type { GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\n\ntype FilesState = {\n\tcollection: {\n\t\t[chatId: number]: {\n\t\t\t[string]: ChatState\n\t\t}\n\t},\n};\n\ntype ChatState = {\n\titems: Map<number, ImModelSidebarFileItem>,\n\thasNextPage: boolean,\n\tlastId: number,\n};\n\ntype FilesPayload = {\n\tchatId?: number,\n\tfiles?: Object[],\n\tgroup?: string,\n\thasNextPage?: boolean,\n}\n\n/* eslint-disable no-param-reassign */\nexport class FilesModel extends BuilderModel\n{\n\tgetState(): FilesState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t\tcollectionSearch: {},\n\t\t\thistoryLimitExceededCollection: {},\n\t\t};\n\t}\n\n\tgetElementState(): ImModelSidebarFileItem\n\t{\n\t\treturn {\n\t\t\tid: 0,\n\t\t\tmessageId: 0,\n\t\t\tchatId: 0,\n\t\t\tauthorId: 0,\n\t\t\tdate: new Date(),\n\t\t\tfileId: 0,\n\t\t};\n\t}\n\n\tgetChatState(): ChatState\n\t{\n\t\treturn {\n\t\t\titems: new Map(),\n\t\t\thasNextPage: true,\n\t\t\tlastId: 0,\n\t\t};\n\t}\n\n\t// eslint-disable-next-line max-lines-per-function\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/files/get */\n\t\t\tget: (state) => (chatId: number, group: string): ImModelSidebarFileItem[] => {\n\t\t\t\tif (!state.collection[chatId] || !state.collection[chatId][group])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\treturn [...state.collection[chatId][group].items.values()].sort((a, b) => b.id - a.id);\n\t\t\t},\n\t\t\t/** @function sidebar/files/getSearchResultCollection */\n\t\t\tgetSearchResultCollection: (state) => (chatId: number, group: string): ImModelSidebarFileItem[] => {\n\t\t\t\tif (!state.collectionSearch[chatId] || !state.collectionSearch[chatId][group])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\treturn [...state.collectionSearch[chatId][group].items.values()].sort((a, b) => b.id - a.id);\n\t\t\t},\n\t\t\t/** @function sidebar/files/getLatest */\n\t\t\tgetLatest: (state, getters, rootState, rootGetters) => (chatId: number): ImModelSidebarFileItem[] => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\tlet media = [];\n\t\t\t\tlet audio = [];\n\t\t\t\tlet files = [];\n\t\t\t\tlet briefs = [];\n\n\t\t\t\tif (state.collection[chatId][SidebarFileGroups.media])\n\t\t\t\t{\n\t\t\t\t\tmedia = [...state.collection[chatId][SidebarFileGroups.media].items.values()];\n\t\t\t\t}\n\n\t\t\t\tif (state.collection[chatId][SidebarFileGroups.audio])\n\t\t\t\t{\n\t\t\t\t\taudio = [...state.collection[chatId][SidebarFileGroups.audio].items.values()];\n\t\t\t\t}\n\n\t\t\t\tif (state.collection[chatId][SidebarFileGroups.file])\n\t\t\t\t{\n\t\t\t\t\tfiles = [...state.collection[chatId][SidebarFileGroups.file].items.values()];\n\t\t\t\t}\n\n\t\t\t\tif (state.collection[chatId][SidebarFileGroups.brief])\n\t\t\t\t{\n\t\t\t\t\tbriefs = [...state.collection[chatId][SidebarFileGroups.brief].items.values()];\n\t\t\t\t}\n\n\t\t\t\tconst sortedFlatCollection = [media, audio, files, briefs]\n\t\t\t\t\t.flat()\n\t\t\t\t\t.sort((a, b) => b.id - a.id)\n\t\t\t\t;\n\n\t\t\t\treturn this.getTopThreeCompletedFiles(sortedFlatCollection, rootGetters);\n\t\t\t},\n\t\t\t/** @function sidebar/files/getLatestUnsorted */\n\t\t\tgetLatestUnsorted: (state, getters, rootState, rootGetters) => (chatId: number): ImModelSidebarFileItem[] => {\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\tlet unsorted = [];\n\n\t\t\t\tif (state.collection[chatId][SidebarFileGroups.fileUnsorted])\n\t\t\t\t{\n\t\t\t\t\tunsorted = [...state.collection[chatId][SidebarFileGroups.fileUnsorted].items.values()];\n\t\t\t\t}\n\n\t\t\t\tconst sortedCollection = unsorted.sort((a, b) => b.id - a.id);\n\n\t\t\t\treturn this.getTopThreeCompletedFiles(sortedCollection, rootGetters);\n\t\t\t},\n\t\t\t/** @function sidebar/files/getSize */\n\t\t\tgetSize: (state) => (chatId: number, group: string): number => {\n\t\t\t\tif (!state.collection[chatId] || !state.collection[chatId][group])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId][group].items.size;\n\t\t\t},\n\t\t\t/** @function sidebar/files/hasNextPage */\n\t\t\thasNextPage: (state) => (chatId: number, group: string): boolean => {\n\t\t\t\tif (!state.collection[chatId] || !state.collection[chatId][group])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId][group].hasNextPage;\n\t\t\t},\n\t\t\t/** @function sidebar/files/hasNextPageSearch */\n\t\t\thasNextPageSearch: (state) => (chatId: number, group: string): boolean => {\n\t\t\t\tif (!state.collectionSearch[chatId] || !state.collectionSearch[chatId][group])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collectionSearch[chatId][group].hasNextPage;\n\t\t\t},\n\t\t\t/** @function sidebar/files/getLastId */\n\t\t\tgetLastId: (state) => (chatId: number, group: string): boolean => {\n\t\t\t\tif (!state.collection[chatId] || !state.collection[chatId][group])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collection[chatId][group].lastId;\n\t\t\t},\n\t\t\t/** @function sidebar/files/getSearchResultCollectionLastId */\n\t\t\tgetSearchResultCollectionLastId: (state) => (chatId: number, group: string): boolean => {\n\t\t\t\tif (!state.collectionSearch[chatId] || !state.collectionSearch[chatId][group])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.collectionSearch[chatId][group].lastId;\n\t\t\t},\n\t\t\t/** @function sidebar/files/isHistoryLimitExceeded */\n\t\t\tisHistoryLimitExceeded: (state) => (chatId: number): boolean => {\n\t\t\t\tconst isAvailable = Core.getStore().getters['application/tariffRestrictions/isHistoryAvailable'];\n\t\t\t\tif (isAvailable)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn state.historyLimitExceededCollection[chatId] ?? false;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/files/set */\n\t\t\tset: (store, payload) => {\n\t\t\t\tconst { chatId, files, group } = payload;\n\t\t\t\tif (!Type.isArrayFilled(files) || !Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfiles.forEach((file) => {\n\t\t\t\t\tconst preparedFile = { ...this.getElementState(), ...this.formatFields(file) };\n\t\t\t\t\tstore.commit('add', { chatId, group, file: preparedFile });\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function sidebar/files/setSearch */\n\t\t\tsetSearch: (store, payload: FilesPayload) => {\n\t\t\t\tconst { chatId, files, group } = payload;\n\t\t\t\tif (!Type.isArrayFilled(files) || !Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfiles.forEach((file) => {\n\t\t\t\t\tconst preparedFile = { ...this.getElementState(), ...this.formatFields(file) };\n\t\t\t\t\tstore.commit('addSearch', { chatId, group, file: preparedFile });\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function sidebar/files/delete */\n\t\t\tdelete: (store, payload) => {\n\t\t\t\tconst { chatId, id } = payload;\n\t\t\t\tif (!Type.isNumber(id) || !Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!store.state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('delete', { chatId, id });\n\t\t\t},\n\t\t\t/** @function sidebar/files/setHasNextPage */\n\t\t\tsetHasNextPage: (store, payload) => {\n\t\t\t\tconst { chatId, group, hasNextPage } = payload;\n\t\t\t\tif (!Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!store.state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setHasNextPage', { chatId, group, hasNextPage });\n\t\t\t},\n\t\t\t/** @function sidebar/files/setHasNextPageSearch */\n\t\t\tsetHasNextPageSearch: (store, payload: FilesPayload) => {\n\t\t\t\tconst { chatId, group, hasNextPage } = payload;\n\t\t\t\tif (!Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!store.state.collectionSearch[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setHasNextPageSearch', { chatId, group, hasNextPage });\n\t\t\t},\n\t\t\t/** @function sidebar/files/setLastId */\n\t\t\tsetLastId: (store, payload) => {\n\t\t\t\tconst { chatId, group, lastId } = payload;\n\t\t\t\tif (!Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!store.state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setLastId', { chatId, group, lastId });\n\t\t\t},\n\t\t\t/** @function sidebar/files/setLastIdSearch */\n\t\t\tsetLastIdSearch: (store, payload) => {\n\t\t\t\tconst { chatId, group, lastId } = payload;\n\t\t\t\tif (!Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!store.state.collectionSearch[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setLastIdSearch', { chatId, group, lastId });\n\t\t\t},\n\t\t\t/** @function sidebar/files/clearSearch */\n\t\t\tclearSearch: (store) => {\n\t\t\t\tstore.commit('clearSearch', {});\n\t\t\t},\n\t\t\t/** @function sidebar/files/setHistoryLimitExceeded */\n\t\t\tsetHistoryLimitExceeded: (store, payload) => {\n\t\t\t\tconst { chatId, isHistoryLimitExceeded = false } = payload;\n\t\t\t\tstore.commit('setHistoryLimitExceeded', { chatId, isHistoryLimitExceeded });\n\t\t\t},\n\t\t};\n\t}\n\n\t// eslint-disable-next-line max-lines-per-function\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tadd: (state, payload: {chatId: number, group: string, file: ImModelSidebarFileItem}) => {\n\t\t\t\tconst { chatId, file, group } = payload;\n\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = {};\n\t\t\t\t}\n\n\t\t\t\tif (!state.collection[chatId][group])\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId][group] = this.getChatState();\n\t\t\t\t}\n\t\t\t\tstate.collection[chatId][group].items.set(file.id, file);\n\t\t\t},\n\t\t\taddSearch: (state, payload: {chatId: number, group: string, file: ImModelSidebarFileItem}) => {\n\t\t\t\tconst { chatId, file, group } = payload;\n\n\t\t\t\tif (!state.collectionSearch[chatId])\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId] = {};\n\t\t\t\t}\n\n\t\t\t\tif (!state.collectionSearch[chatId][group])\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId][group] = this.getChatState();\n\t\t\t\t}\n\t\t\t\tstate.collectionSearch[chatId][group].items.set(file.id, file);\n\t\t\t},\n\t\t\tdelete: (state, payload: {chatId: number, id: number}) => {\n\t\t\t\tconst { chatId, id } = payload;\n\t\t\t\tconst hasCollectionSearch = !Type.isNil(state.collectionSearch[chatId]);\n\t\t\t\tObject.values(SidebarFileGroups).forEach((group) => {\n\t\t\t\t\tif (state.collection[chatId][group] && state.collection[chatId][group].items.has(id))\n\t\t\t\t\t{\n\t\t\t\t\t\tstate.collection[chatId][group].items.delete(id);\n\t\t\t\t\t\tif (hasCollectionSearch)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstate.collectionSearch[chatId][group].items.delete(id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetHasNextPage: (state, payload) => {\n\t\t\t\tconst { chatId, group, hasNextPage } = payload;\n\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = {};\n\t\t\t\t}\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId][group]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId][group] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId][group].hasNextPage = hasNextPage;\n\t\t\t},\n\t\t\tsetHasNextPageSearch: (state, payload) => {\n\t\t\t\tconst { chatId, group, hasNextPage } = payload;\n\n\t\t\t\tif (!state.collectionSearch[chatId])\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId] = {};\n\t\t\t\t}\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collectionSearch[chatId][group]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId][group] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collectionSearch[chatId][group].hasNextPage = hasNextPage;\n\t\t\t},\n\t\t\tsetLastId: (state, payload) => {\n\t\t\t\tconst { chatId, group, lastId } = payload;\n\n\t\t\t\tif (!state.collection[chatId])\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId] = {};\n\t\t\t\t}\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collection[chatId][group]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collection[chatId][group] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collection[chatId][group].lastId = lastId;\n\t\t\t},\n\t\t\tsetLastIdSearch: (state, payload) => {\n\t\t\t\tconst { chatId, group, lastId } = payload;\n\n\t\t\t\tif (!state.collectionSearch[chatId])\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId] = {};\n\t\t\t\t}\n\n\t\t\t\tconst hasCollection = !Type.isNil(state.collectionSearch[chatId][group]);\n\t\t\t\tif (!hasCollection)\n\t\t\t\t{\n\t\t\t\t\tstate.collectionSearch[chatId][group] = this.getChatState();\n\t\t\t\t}\n\n\t\t\t\tstate.collectionSearch[chatId][group].lastId = lastId;\n\t\t\t},\n\t\t\tclearSearch: (state) => {\n\t\t\t\tstate.collectionSearch = {};\n\t\t\t},\n\t\t\tsetHistoryLimitExceeded: (state, payload) => {\n\t\t\t\tconst { chatId, isHistoryLimitExceeded } = payload;\n\t\t\t\tif (state.historyLimitExceededCollection[chatId] && !isHistoryLimitExceeded)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstate.historyLimitExceededCollection[chatId] = isHistoryLimitExceeded;\n\t\t\t},\n\t\t};\n\t}\n\n\tformatFields(fields: JsonObject): JsonObject\n\t{\n\t\treturn formatFieldsWithConfig(fields, sidebarFilesFieldsConfig);\n\t}\n\n\tgetTopThreeCompletedFiles(collection: ImModelSidebarFileItem[], rootGetters): ImModelSidebarFileItem[]\n\t{\n\t\treturn collection.filter((sidebarFile: ImModelSidebarFileItem) => {\n\t\t\tconst file = rootGetters['files/get'](sidebarFile.fileId, true);\n\n\t\t\treturn file.progress === 100;\n\t\t}).slice(0, 3);\n\t}\n}\n","import { Type } from 'main.core';\n\nimport { Utils } from 'im.v2.lib.utils';\n\nimport type { FieldsConfig } from '../../../../utils/validate';\n\nexport const sidebarMultidialogFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'dialogId',\n\t\ttargetFieldName: 'dialogId',\n\t\tcheckFunction: Type.String,\n\t},\n\t{\n\t\tfieldName: 'chatId',\n\t\ttargetFieldName: 'chatId',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'openSessionsLimit',\n\t\ttargetFieldName: 'openSessionsLimit',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'status',\n\t\ttargetFieldName: 'status',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'dateMessage',\n\t\ttargetFieldName: 'date',\n\t\tcheckFunction: Type.isString,\n\t\tformatFunction: Utils.date.cast,\n\t},\n];\n","import { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { MultidialogStatus } from 'im.v2.const';\nimport { Core } from 'im.v2.application.core';\n\nimport { formatFieldsWithConfig } from '../../../utils/validate';\nimport { sidebarMultidialogFieldsConfig } from './format/field-config';\n\nimport type { JsonObject } from 'main.core';\nimport type { GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\nimport type { ImModelSidebarMultidialogItem } from '../../../registry';\n\ntype MultidialogModelState = {\n\tisInited: boolean,\n\tisInitedDetail: boolean,\n\tchatsCount: number,\n\tunreadChats: Set<number>,\n\topenSessionsLimit: number,\n\tmultidialogs: Record<string, ImModelSidebarMultidialogItem>\n}\ntype StatusType = $Values<typeof MultidialogStatus>\n\n/* eslint-disable no-param-reassign */\nexport class MultidialogModel extends BuilderModel\n{\n\tgetState(): MultidialogModelState\n\t{\n\t\treturn {\n\t\t\tisInited: false,\n\t\t\tisInitedDetail: false,\n\t\t\tchatsCount: 0,\n\t\t\tunreadChats: new Set(),\n\t\t\topenSessionsLimit: 0,\n\t\t\tmultidialogs: {},\n\t\t};\n\t}\n\n\tgetElementState(): ImModelSidebarMultidialogItem\n\t{\n\t\treturn {\n\t\t\tdialogId: '',\n\t\t\tchatId: 0,\n\t\t\tstatus: '',\n\t\t\tdate: new Date(),\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/multidialog/isInited */\n\t\t\tisInited: ({ isInited }): boolean => {\n\t\t\t\treturn isInited;\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/isInitedDetail */\n\t\t\tisInitedDetail: ({ isInitedDetail }): boolean => {\n\t\t\t\treturn isInitedDetail;\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/getOpenSessionsLimit */\n\t\t\tgetOpenSessionsLimit: ({ openSessionsLimit }): number => {\n\t\t\t\treturn openSessionsLimit;\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/getChatsCount */\n\t\t\tgetChatsCount: ({ chatsCount }): number => {\n\t\t\t\treturn chatsCount;\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/getTotalChatCounter */\n\t\t\tgetTotalChatCounter: ({ unreadChats }): number => {\n\t\t\t\tlet count = 0;\n\t\t\t\tunreadChats.forEach((chatId: number) => {\n\t\t\t\t\tcount += Core.getStore().getters['counters/getChatCounterByChatId'](chatId);\n\t\t\t\t});\n\n\t\t\t\treturn count;\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/get */\n\t\t\tget: ({ multidialogs }) => (chatId): ImModelSidebarMultidialogItem => {\n\t\t\t\treturn multidialogs[chatId];\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/isSupport */\n\t\t\tisSupport: () => (dialogId): boolean => {\n\t\t\t\tconst isSupportBot = Core.getStore().getters['users/bots/isSupport'](dialogId);\n\t\t\t\tconst isSupportChat = Core.getStore().getters['chats/isSupport'](dialogId);\n\n\t\t\t\treturn isSupportChat || isSupportBot;\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/hasNextPage */\n\t\t\thasNextPage: ({ chatsCount, multidialogs }): boolean => {\n\t\t\t\treturn chatsCount > Object.keys(multidialogs).length;\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/getNumberMultidialogs */\n\t\t\tgetNumberMultidialogs: ({ multidialogs }): number => {\n\t\t\t\treturn Object.keys(multidialogs).length;\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/getMultidialogsByStatus */\n\t\t\tgetMultidialogsByStatus: ({ multidialogs }) => (status: StatusType[]): ImModelSidebarMultidialogItem[] => {\n\t\t\t\treturn Object.values(multidialogs)\n\t\t\t\t\t.filter((multidialog: ImModelSidebarMultidialogItem) => status.includes(multidialog.status));\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/multidialog/setInited */\n\t\t\tsetInited: (store, isInited: boolean) => {\n\t\t\t\tstore.commit('setInited', isInited);\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/setInitedDetail */\n\t\t\tsetInitedDetail: (store, isInitedDetail: boolean) => {\n\t\t\t\tstore.commit('setInitedDetail', isInitedDetail);\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/addMultidialogs */\n\t\t\taddMultidialogs: (store, multidialogs: ImModelSidebarMultidialogItem[]) => {\n\t\t\t\tif (!Type.isArray(multidialogs))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tmultidialogs.forEach((multidialog) => {\n\t\t\t\t\tconst preparedTicket = { ...this.getElementState(), ...this.formatFields(multidialog) };\n\t\t\t\t\tstore.commit('addMultidialog', preparedTicket);\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/setOpenSessionsLimit */\n\t\t\tsetOpenSessionsLimit: (store, openSessionsLimit: number) => {\n\t\t\t\tif (Type.isNumber(openSessionsLimit))\n\t\t\t\t{\n\t\t\t\t\tstore.commit('setOpenSessionsLimit', openSessionsLimit);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/setChatsCount */\n\t\t\tsetChatsCount: (store, chatsCount: number) => {\n\t\t\t\tif (Type.isNumber(chatsCount))\n\t\t\t\t{\n\t\t\t\t\tstore.commit('setChatsCount', chatsCount);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/setUnreadChats */\n\t\t\tsetUnreadChats: (store, unreadChats: number[]) => {\n\t\t\t\tif (Type.isArray(unreadChats))\n\t\t\t\t{\n\t\t\t\t\tstore.commit('setUnreadChats', unreadChats);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/set */\n\t\t\tset: (store, payload) => {\n\t\t\t\tconst { unreadChats, multidialogs, chatsCount, openSessionsLimit } = payload;\n\n\t\t\t\tstore.dispatch('setUnreadChats', unreadChats);\n\t\t\t\tstore.dispatch('setChatsCount', chatsCount);\n\t\t\t\tstore.dispatch('setOpenSessionsLimit', openSessionsLimit);\n\t\t\t\tstore.dispatch('addMultidialogs', multidialogs);\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/deleteUnreadChats */\n\t\t\tdeleteUnreadChats: (store, chatId: number) => {\n\t\t\t\tstore.commit('deleteUnreadChats', chatId);\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/multidialog/setInited */\n\t\t\tsetInited: (state, isInited) => {\n\t\t\t\tstate.isInited = isInited;\n\t\t\t},\n\t\t\t/** @function sidebar/multidialog/setInitedDetail */\n\t\t\tsetInitedDetail: (state, isInitedDetail) => {\n\t\t\t\tstate.isInitedDetail = isInitedDetail;\n\t\t\t},\n\t\t\taddMultidialog: (state, multidialog: ImModelSidebarMultidialogItem) => {\n\t\t\t\tstate.multidialogs[multidialog.chatId] = multidialog;\n\t\t\t},\n\t\t\tsetChatsCount: (state, chatsCount) => {\n\t\t\t\tstate.chatsCount = chatsCount;\n\t\t\t},\n\t\t\tsetOpenSessionsLimit: (state, openSessionsLimit) => {\n\t\t\t\tstate.openSessionsLimit = openSessionsLimit;\n\t\t\t},\n\t\t\tsetUnreadChats: (state, unreadChats) => {\n\t\t\t\tunreadChats.forEach((chatId) => {\n\t\t\t\t\tstate.unreadChats.add(chatId);\n\t\t\t\t});\n\t\t\t},\n\t\t\tdeleteUnreadChats: ({ unreadChats }, chatId) => {\n\t\t\t\tunreadChats.delete(chatId);\n\t\t\t},\n\t\t};\n\t}\n\n\tformatFields(fields: JsonObject): JsonObject\n\t{\n\t\treturn formatFieldsWithConfig(fields, sidebarMultidialogFieldsConfig);\n\t}\n}\n","import { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\n\nimport { LinksModel } from './nested-modules/links/links';\nimport { FavoritesModel } from './nested-modules/favorites/favorites';\nimport { MembersModel } from './nested-modules/members';\nimport { MessageSearchModel } from './nested-modules/message-search/message-search';\nimport { TasksModel } from './nested-modules/tasks/tasks';\nimport { MeetingsModel } from './nested-modules/meeting/meeting';\nimport { FilesModel } from './nested-modules/files/files';\nimport { MultidialogModel } from './nested-modules/multidialog/multidialog';\n\nimport type { GetterTree, ActionTree, MutationTree, NestedModuleTree } from 'ui.vue3.vuex';\n\ntype SidebarState = {\n\tinitedList: Set<number>,\n\tisFilesMigrated: boolean,\n\tisLinksMigrated: boolean,\n};\n\n/* eslint-disable no-param-reassign */\nexport class SidebarModel extends BuilderModel\n{\n\tgetName(): string\n\t{\n\t\treturn 'sidebar';\n\t}\n\n\tgetNestedModules(): NestedModuleTree\n\t{\n\t\treturn {\n\t\t\tmembers: MembersModel,\n\t\t\tlinks: LinksModel,\n\t\t\tfavorites: FavoritesModel,\n\t\t\ttasks: TasksModel,\n\t\t\tmeetings: MeetingsModel,\n\t\t\tfiles: FilesModel,\n\t\t\tmultidialog: MultidialogModel,\n\t\t\tmessageSearch: MessageSearchModel,\n\t\t};\n\t}\n\n\tgetState(): SidebarState\n\t{\n\t\treturn {\n\t\t\tinitedList: new Set(),\n\t\t\tisFilesMigrated: false,\n\t\t\tisLinksMigrated: false,\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/isInited */\n\t\t\tisInited: (state: SidebarState) => (chatId: number): boolean => {\n\t\t\t\treturn state.initedList.has(chatId);\n\t\t\t},\n\t\t\t/** @function sidebar/hasHistoryLimit */\n\t\t\thasHistoryLimit: () => (chatId: number): boolean => {\n\t\t\t\tconst limitsByPanel = [\n\t\t\t\t\t'sidebar/links/isHistoryLimitExceeded',\n\t\t\t\t\t'sidebar/files/isHistoryLimitExceeded',\n\t\t\t\t\t'sidebar/favorites/isHistoryLimitExceeded',\n\t\t\t\t\t'sidebar/meetings/isHistoryLimitExceeded',\n\t\t\t\t\t'sidebar/tasks/isHistoryLimitExceeded',\n\t\t\t\t\t'sidebar/messageSearch/isHistoryLimitExceeded',\n\t\t\t\t].map((getterName) => Core.getStore().getters[getterName](chatId));\n\n\t\t\t\treturn limitsByPanel.some((hasLimit) => hasLimit);\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function sidebar/setInited */\n\t\t\tsetInited: (store, chatId: number) => {\n\t\t\t\tif (!Type.isNumber(chatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setInited', chatId);\n\t\t\t},\n\t\t\t/** @function sidebar/setFilesMigrated */\n\t\t\tsetFilesMigrated: (store, value: boolean) => {\n\t\t\t\tif (!Type.isBoolean(value))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setFilesMigrated', value);\n\t\t\t},\n\t\t\t/** @function sidebar/setLinksMigrated */\n\t\t\tsetLinksMigrated: (store, value: boolean) => {\n\t\t\t\tif (!Type.isBoolean(value))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setLinksMigrated', value);\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tsetInited: (state: SidebarState, chatId: number) => {\n\t\t\t\tstate.initedList.add(chatId);\n\t\t\t},\n\t\t\tsetFilesMigrated: (state: SidebarState, payload: boolean) => {\n\t\t\t\tstate.isFilesMigrated = payload;\n\t\t\t},\n\t\t\tsetLinksMigrated: (state: SidebarState, payload: boolean) => {\n\t\t\t\tstate.isLinksMigrated = payload;\n\t\t\t},\n\t\t};\n\t}\n}\n","import {Type} from 'main.core';\nimport {BuilderModel} from 'ui.vue3.vuex';\n\nimport {PlacementType} from 'im.v2.const';\n\nimport type {MarketApplication} from '../type/market';\n\nexport class MarketModel extends BuilderModel\n{\n\tgetName(): string\n\t{\n\t\treturn 'market';\n\t}\n\n\tgetState()\n\t{\n\t\treturn {\n\t\t\tcollection: new Map(),\n\t\t\tplacementCollection: {\n\t\t\t\t[PlacementType.contextMenu]: new Set(),\n\t\t\t\t[PlacementType.navigation]: new Set(),\n\t\t\t\t[PlacementType.textarea]: new Set(),\n\t\t\t\t[PlacementType.sidebar]: new Set(),\n\t\t\t\t[PlacementType.smilesSelector]: new Set()\n\t\t\t},\n\t\t};\n\t}\n\n\tgetElementState(): MarketApplication\n\t{\n\t\treturn {\n\t\t\tid: 0,\n\t\t\ttitle: '',\n\t\t\toptions: {\n\t\t\t\trole: '',\n\t\t\t\textranet: '',\n\t\t\t\tcontext: null,\n\t\t\t\twidth: null,\n\t\t\t\theight: null,\n\t\t\t\tcolor: null,\n\t\t\t\ticonName: null\n\t\t\t},\n\t\t\tplacement: '',\n\t\t\torder: 0,\n\t\t\tloadConfiguration: {\n\t\t\t\tID: 0,\n\t\t\t\tPLACEMENT: '',\n\t\t\t\tPLACEMENT_ID: 0,\n\t\t\t},\n\t\t};\n\t}\n\n\tgetGetters()\n\t{\n\t\treturn {\n\t\t\tgetByPlacement: (state) => (placement: string): MarketApplication[] =>\n\t\t\t{\n\t\t\t\tconst appIds = [...state.placementCollection[placement].values()];\n\n\t\t\t\treturn appIds.map(id => {\n\t\t\t\t\treturn state.collection.get(id);\n\t\t\t\t});\n\t\t\t},\n\t\t\tgetById: (state) => (id: number): number =>\n\t\t\t{\n\t\t\t\treturn state.collection.get(id);\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions()\n\t{\n\t\treturn {\n\t\t\tset: (store, payload) =>\n\t\t\t{\n\t\t\t\tconst {items} = payload;\n\n\t\t\t\titems.forEach((item: MarketApplication) => {\n\t\t\t\t\tstore.commit('setPlacementCollection', {placement: item.placement, id: item.id});\n\t\t\t\t\tstore.commit('setCollection', item);\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations()\n\t{\n\t\treturn {\n\t\t\tsetPlacementCollection: (state, payload: MarketApplication) =>\n\t\t\t{\n\t\t\t\tstate.placementCollection[payload.placement].add(payload.id);\n\t\t\t},\n\t\t\tsetCollection: (state, payload: MarketApplication) =>\n\t\t\t{\n\t\t\t\tstate.collection.set(payload.id, {...this.getElementState(), ...this.#validate(payload)});\n\t\t\t},\n\t\t};\n\t}\n\n\t#validate(app: Object): MarketApplication\n\t{\n\t\tconst result = {};\n\n\t\tif (Type.isNumber(app.id) || Type.isStringFilled(app.id))\n\t\t{\n\t\t\tresult.id = app.id.toString();\n\t\t}\n\n\t\tif (Type.isString(app.title))\n\t\t{\n\t\t\tresult.title = app.title;\n\t\t}\n\n\t\tresult.options = this.#validateOptions(app.options);\n\n\t\tif (Type.isString(app.placement))\n\t\t{\n\t\t\tresult.placement = app.placement;\n\t\t}\n\n\t\tif (Type.isNumber(app.order))\n\t\t{\n\t\t\tresult.order = app.order;\n\t\t}\n\n\t\tresult.loadConfiguration = this.#validateLoadConfiguration(app.loadConfiguration);\n\n\t\treturn result;\n\t}\n\n\t#validateOptions(options: Object)\n\t{\n\t\tconst result = {\n\t\t\tcontext: null,\n\t\t\twidth: null,\n\t\t\theight: null,\n\t\t\tcolor: null,\n\t\t\ticonName: null\n\t\t};\n\n\t\tif (!Type.isPlainObject(options))\n\t\t{\n\t\t\treturn result;\n\t\t}\n\n\t\tif (Type.isArrayFilled(options.context))\n\t\t{\n\t\t\tresult.context = options.context;\n\t\t}\n\t\tif (Type.isNumber(options.width))\n\t\t{\n\t\t\tresult.width = options.width;\n\t\t}\n\n\t\tif (Type.isNumber(options.height))\n\t\t{\n\t\t\tresult.height = options.height;\n\t\t}\n\n\t\tif (Type.isStringFilled(options.color))\n\t\t{\n\t\t\tresult.color = options.color;\n\t\t}\n\n\t\tif (Type.isStringFilled(options.iconName))\n\t\t{\n\t\t\tresult.iconName = options.iconName;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t#validateLoadConfiguration(configuration: Object)\n\t{\n\t\tconst result = {\n\t\t\tID: 0,\n\t\t\tPLACEMENT: '',\n\t\t\tPLACEMENT_ID: 0,\n\t\t};\n\n\t\tif (!Type.isPlainObject(configuration))\n\t\t{\n\t\t\treturn result;\n\t\t}\n\n\t\tif (Type.isNumber(configuration.ID))\n\t\t{\n\t\t\tresult.ID = configuration.ID;\n\t\t}\n\n\t\tif (Type.isStringFilled(configuration.PLACEMENT))\n\t\t{\n\t\t\tresult.PLACEMENT = configuration.PLACEMENT;\n\t\t}\n\n\t\tif (Type.isNumber(configuration.PLACEMENT_ID))\n\t\t{\n\t\t\tresult.PLACEMENT_ID = configuration.PLACEMENT_ID;\n\t\t}\n\n\t\treturn result;\n\t}\n}","import { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\n\nimport type { GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\n\nimport type { RecentItem as ImModelRecentItem } from '../type/recent-item';\nimport type { Chat as ImModelChat } from '../type/chat';\n\ntype CountersState = {\n\tunloadedChatCounters: {[chatId: string]: number},\n\tunloadedLinesCounters: {[chatId: string]: number},\n\tunloadedCopilotCounters: {[chatId: string]: number},\n\tunloadedCollabCounters: {[chatId: string]: number},\n\tcommentCounters: CommentsCounters,\n};\n\ntype CommentsCounters = {\n\t[channelChatId: string]: {\n\t\t[commentChatId: string]: number,\n\t},\n}\n\ntype CommentsCounterPayload = {\n\tchannelId: number,\n\tcommentChatId: number\n};\n\nexport class CountersModel extends BuilderModel\n{\n\tgetName(): string\n\t{\n\t\treturn 'counters';\n\t}\n\n\tgetState(): CountersState\n\t{\n\t\treturn {\n\t\t\tunloadedChatCounters: {},\n\t\t\tunloadedLinesCounters: {},\n\t\t\tunloadedCopilotCounters: {},\n\t\t\tunloadedCollabCounters: {},\n\t\t\tcommentCounters: {},\n\t\t};\n\t}\n\n\t// eslint-disable-next-line max-lines-per-function\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function counters/getUnloadedChatCounters */\n\t\t\tgetUnloadedChatCounters: (state: CountersState): number => {\n\t\t\t\treturn state.unloadedChatCounters;\n\t\t\t},\n\t\t\t/** @function counters/getTotalChatCounter */\n\t\t\tgetTotalChatCounter: (state: CountersState): number => {\n\t\t\t\tconst recentCollection = Core.getStore().getters['recent/getRecentCollection'];\n\t\t\t\tconst loadedChatsCounter = this.#getLoadedChatsCounter(recentCollection);\n\n\t\t\t\tlet unloadedChatsCounter = 0;\n\t\t\t\tObject.values(state.unloadedChatCounters).forEach((counter) => {\n\t\t\t\t\tunloadedChatsCounter += counter;\n\t\t\t\t});\n\n\t\t\t\tconst channelCommentsCounter = Core.getStore().getters['counters/getTotalCommentsCounter'];\n\n\t\t\t\treturn loadedChatsCounter + unloadedChatsCounter + channelCommentsCounter;\n\t\t\t},\n\t\t\t/** @function counters/getTotalCopilotCounter */\n\t\t\tgetTotalCopilotCounter: (state: CountersState): number => {\n\t\t\t\tconst recentCollection = Core.getStore().getters['recent/getCopilotCollection'];\n\t\t\t\tconst loadedChatsCounter = this.#getLoadedChatsCounter(recentCollection);\n\n\t\t\t\tlet unloadedChatsCounter = 0;\n\t\t\t\tObject.values(state.unloadedCopilotCounters).forEach((counter) => {\n\t\t\t\t\tunloadedChatsCounter += counter;\n\t\t\t\t});\n\n\t\t\t\treturn loadedChatsCounter + unloadedChatsCounter;\n\t\t\t},\n\t\t\t/** @function counters/getTotalCollabCounter */\n\t\t\tgetTotalCollabCounter: (state: CountersState): number => {\n\t\t\t\tconst recentCollection = Core.getStore().getters['recent/getCollabCollection'];\n\t\t\t\tconst loadedChatsCounter = this.#getLoadedChatsCounter(recentCollection);\n\n\t\t\t\tlet unloadedChatsCounter = 0;\n\t\t\t\tObject.values(state.unloadedCollabCounters).forEach((counter) => {\n\t\t\t\t\tunloadedChatsCounter += counter;\n\t\t\t\t});\n\n\t\t\t\treturn loadedChatsCounter + unloadedChatsCounter;\n\t\t\t},\n\t\t\t/** @function counters/getTotalLinesCounter */\n\t\t\tgetTotalLinesCounter: (state: CountersState): number => {\n\t\t\t\tlet unloadedLinesCounter = 0;\n\t\t\t\tObject.values(state.unloadedLinesCounters).forEach((counter) => {\n\t\t\t\t\tunloadedLinesCounter += counter;\n\t\t\t\t});\n\n\t\t\t\treturn unloadedLinesCounter;\n\t\t\t},\n\t\t\t/** @function counters/getSpecificLinesCounter */\n\t\t\tgetSpecificLinesCounter: (state: CountersState) => (chatId: number): number => {\n\t\t\t\tif (!state.unloadedLinesCounters[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn state.unloadedLinesCounters[chatId];\n\t\t\t},\n\t\t\t/** @function counters/getTotalCommentsCounter */\n\t\t\tgetTotalCommentsCounter: (state: CountersState): number => {\n\t\t\t\tlet totalCounter = 0;\n\t\t\t\tObject.entries(state.commentCounters).forEach(([channelChatId, channelCounters]) => {\n\t\t\t\t\tconst channel = this.#getChatByChatId(channelChatId);\n\t\t\t\t\tif (this.#isChatMuted(channel))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tObject.values(channelCounters).forEach((commentCounter) => {\n\t\t\t\t\t\ttotalCounter += commentCounter;\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\treturn totalCounter;\n\t\t\t},\n\t\t\t/** @function counters/getChannelComments */\n\t\t\tgetChannelComments: (state: CountersState) => (chatId: number): number[] => {\n\t\t\t\tif (!state.commentCounters[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\treturn state.commentCounters[chatId];\n\t\t\t},\n\t\t\t/** @function counters/getChannelCommentsCounter */\n\t\t\tgetChannelCommentsCounter: (state: CountersState) => (chatId: number): number => {\n\t\t\t\tif (!state.commentCounters[chatId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\tlet result = 0;\n\t\t\t\tObject.values(state.commentCounters[chatId]).forEach((counter) => {\n\t\t\t\t\tresult += counter;\n\t\t\t\t});\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\t/** @function counters/getChatCounterByChatId */\n\t\t\tgetChatCounterByChatId: (state: CountersState) => (chatId: number): number => {\n\t\t\t\tconst recentCollection: ImModelRecentItem[] = Core.getStore().getters['recent/getRecentCollection'];\n\t\t\t\tconst recentItem = recentCollection.find((element) => {\n\t\t\t\t\tconst chat: ImModelChat = this.store.getters['chats/get'](element.dialogId, true);\n\n\t\t\t\t\treturn chat.chatId === chatId;\n\t\t\t\t});\n\n\t\t\t\tif (!recentItem)\n\t\t\t\t{\n\t\t\t\t\treturn state.unloadedChatCounters[chatId] ?? 0;\n\t\t\t\t}\n\n\t\t\t\treturn this.#getRecentItemCounter(recentItem);\n\t\t\t},\n\t\t\t/** @function counters/getSpecificCommentsCounter */\n\t\t\tgetSpecificCommentsCounter: (state: CountersState) => (payload: CommentsCounterPayload): number => {\n\t\t\t\tconst { channelId, commentChatId } = payload;\n\t\t\t\tif (!state.commentCounters[channelId])\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn state.commentCounters[channelId][commentChatId] ?? 0;\n\t\t\t},\n\t\t};\n\t}\n\n\t/* eslint-disable no-param-reassign */\n\t/* eslint-disable-next-line max-lines-per-function */\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function counters/setUnloadedChatCounters */\n\t\t\tsetUnloadedChatCounters: (store, payload: {[chatId: string]: number}) => {\n\t\t\t\tif (!Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setUnloadedChatCounters', payload);\n\t\t\t},\n\t\t\t/** @function counters/setUnloadedLinesCounters */\n\t\t\tsetUnloadedLinesCounters: (store, payload: {[chatId: string]: number}) => {\n\t\t\t\tif (!Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setUnloadedLinesCounters', payload);\n\t\t\t},\n\t\t\t/** @function counters/setUnloadedCopilotCounters */\n\t\t\tsetUnloadedCopilotCounters: (store, payload: {[chatId: string]: number}) => {\n\t\t\t\tif (!Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setUnloadedCopilotCounters', payload);\n\t\t\t},\n\t\t\t/** @function counters/setUnloadedCollabCounters */\n\t\t\tsetUnloadedCollabCounters: (store, payload: {[chatId: string]: number}) => {\n\t\t\t\tif (!Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setUnloadedCollabCounters', payload);\n\t\t\t},\n\t\t\t/** @function counters/setCommentCounters */\n\t\t\tsetCommentCounters: (store, payload: CommentsCounters) => {\n\t\t\t\tif (!Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setCommentCounters', payload);\n\t\t\t},\n\t\t\t/** @function counters/readAllChannelComments */\n\t\t\treadAllChannelComments: (store, channelChatId: number) => {\n\t\t\t\tif (!Type.isNumber(channelChatId))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('readAllChannelComments', channelChatId);\n\t\t\t},\n\t\t\t/** @function counters/deleteForChannel */\n\t\t\tdeleteForChannel: (store, payload: {channelChatId: number, commentChatId?: number}) => {\n\t\t\t\tif (!Type.isPlainObject(payload))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('deleteForChannel', payload);\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tsetUnloadedChatCounters: (state: CountersState, payload: {[chatId: string]: number}) => {\n\t\t\t\tObject.entries(payload).forEach(([chatId, counter]) => {\n\t\t\t\t\tif (counter === 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tdelete state.unloadedChatCounters[chatId];\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tstate.unloadedChatCounters[chatId] = counter;\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetUnloadedLinesCounters: (state: CountersState, payload: {[chatId: string]: number}) => {\n\t\t\t\tObject.entries(payload).forEach(([chatId, counter]) => {\n\t\t\t\t\tif (counter === 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tdelete state.unloadedLinesCounters[chatId];\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tstate.unloadedLinesCounters[chatId] = counter;\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetUnloadedCopilotCounters: (state: CountersState, payload: {[chatId: string]: number}) => {\n\t\t\t\tObject.entries(payload).forEach(([chatId, counter]) => {\n\t\t\t\t\tif (counter === 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tdelete state.unloadedCopilotCounters[chatId];\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tstate.unloadedCopilotCounters[chatId] = counter;\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetUnloadedCollabCounters: (state: CountersState, payload: {[chatId: string]: number}) => {\n\t\t\t\tObject.entries(payload).forEach(([chatId, counter]) => {\n\t\t\t\t\tif (counter === 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tdelete state.unloadedCollabCounters[chatId];\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tstate.unloadedCollabCounters[chatId] = counter;\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetCommentCounters: (state: CountersState, payload: CommentsCounters) => {\n\t\t\t\tObject.entries(payload).forEach(([channelChatId, countersMap]) => {\n\t\t\t\t\tif (!state.commentCounters[channelChatId])\n\t\t\t\t\t{\n\t\t\t\t\t\tstate.commentCounters[channelChatId] = {};\n\t\t\t\t\t}\n\n\t\t\t\t\tconst channelMap = state.commentCounters[channelChatId];\n\t\t\t\t\tObject.entries(countersMap).forEach(([commentChatId, counter]) => {\n\t\t\t\t\t\tif (counter === 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdelete channelMap[commentChatId];\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchannelMap[commentChatId] = counter;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\treadAllChannelComments: (state: CountersState, channelChatId: number) => {\n\t\t\t\tdelete state.commentCounters[channelChatId];\n\t\t\t},\n\t\t\tdeleteForChannel: (state: CountersState, payload: {channelChatId: number, commentChatId?: number}) => {\n\t\t\t\tconst { channelChatId, commentChatId } = payload;\n\t\t\t\tif (!state.commentCounters[channelChatId])\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!commentChatId)\n\t\t\t\t{\n\t\t\t\t\tdelete state.commentCounters[channelChatId];\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdelete state.commentCounters[channelChatId][commentChatId];\n\t\t\t},\n\t\t};\n\t}\n\n\t#getChat(dialogId): ImModelChat\n\t{\n\t\treturn Core.getStore().getters['chats/get'](dialogId, true);\n\t}\n\n\t#getChatByChatId(chatId): ImModelChat\n\t{\n\t\treturn Core.getStore().getters['chats/getByChatId'](chatId, true);\n\t}\n\n\t#isChatMuted(chat: ImModelChat): boolean\n\t{\n\t\treturn chat.muteList.includes(Core.getUserId());\n\t}\n\n\t#getRecentItemCounter(recentItem: ImModelRecentItem): number\n\t{\n\t\tconst chat = this.#getChat(recentItem.dialogId);\n\t\tif (this.#isChatMuted(chat))\n\t\t{\n\t\t\treturn 0;\n\t\t}\n\t\tconst isMarked = recentItem.unread;\n\t\tif (chat.counter === 0 && isMarked)\n\t\t{\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn chat.counter;\n\t}\n\n\t#getLoadedChatsCounter(recentCollection: ImModelRecentItem[]): number\n\t{\n\t\tlet loadedChatsCounter = 0;\n\n\t\trecentCollection.forEach((recentItem: ImModelRecentItem) => {\n\t\t\tconst recentItemCounter = this.#getRecentItemCounter(recentItem);\n\t\t\tloadedChatsCounter += recentItemCounter;\n\t\t});\n\n\t\treturn loadedChatsCounter;\n\t}\n}\n","import { Type } from 'main.core';\n\nimport { formatFieldsWithConfig, type FieldsConfig } from '../../utils/validate';\n\nexport const copilotFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'recommendedRoles',\n\t\ttargetFieldName: 'recommendedRoles',\n\t\tcheckFunction: Type.isArray,\n\t},\n\t{\n\t\tfieldName: 'roles',\n\t\ttargetFieldName: 'roles',\n\t\tcheckFunction: Type.isPlainObject,\n\t\tformatFunction: (target) => {\n\t\t\treturn Object.values(target).map((role) => {\n\t\t\t\treturn formatFieldsWithConfig(role, rolesFieldsConfig);\n\t\t\t});\n\t\t},\n\t},\n];\n\n\n\n\n","import { Type } from 'main.core';\n\nimport type { FieldsConfig } from 'im.v2.model';\n\nexport const chatFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'dialogId',\n\t\ttargetFieldName: 'dialogId',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'role',\n\t\ttargetFieldName: 'role',\n\t\tcheckFunction: Type.isString,\n\t},\n];\n","import { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\n\nimport { chatFieldsConfig } from './field-config';\nimport { formatFieldsWithConfig } from '../../../utils/validate';\n\nimport type { JsonObject } from 'main.core';\nimport type { GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\nimport type { CopilotRole } from '../../../type/copilot';\n\ntype ChatsState = {\n\tcollection: {[dialogId: string]: CopilotChat},\n}\n\ntype CopilotChat = {\n\tdialogId: string,\n\trole: string,\n}\n\n/* eslint-disable no-param-reassign */\nexport class ChatsModel extends BuilderModel\n{\n\tgetState(): ChatsState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t};\n\t}\n\n\tgetElementState(): CopilotChat\n\t{\n\t\treturn {\n\t\t\tdialogId: '',\n\t\t\trole: '',\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function copilot/chats/getRole */\n\t\t\tgetRole: (state) => (dialogId: number): ?CopilotRole => {\n\t\t\t\tconst chat = state.collection[dialogId];\n\t\t\t\tif (!chat)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn Core.getStore().getters['copilot/roles/getByCode'](chat.role);\n\t\t\t},\n\t\t\t/** @function copilot/chats/getRoleAvatar */\n\t\t\tgetRoleAvatar: (state, getters) => (dialogId: number): string => {\n\t\t\t\tconst role = getters.getRole(dialogId);\n\t\t\t\tif (!role)\n\t\t\t\t{\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\treturn Core.getStore().getters['copilot/roles/getAvatar'](role.code);\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function copilot/chats/add */\n\t\t\tadd: (store, payload) => {\n\t\t\t\tif (!payload)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst chatsToAdd = Type.isArrayFilled(payload) ? payload : [payload];\n\n\t\t\t\tchatsToAdd.forEach((chat) => {\n\t\t\t\t\tconst preparedChat = { ...this.getElementState(), ...this.formatFields(chat) };\n\t\t\t\t\tstore.commit('add', preparedChat);\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tadd: (state, payload) => {\n\t\t\t\tconst { dialogId } = payload;\n\t\t\t\tstate.collection[dialogId] = payload;\n\t\t\t},\n\t\t};\n\t}\n\n\tformatFields(fields: JsonObject): JsonObject\n\t{\n\t\treturn formatFieldsWithConfig(fields, chatFieldsConfig);\n\t}\n}\n","import { Type } from 'main.core';\n\nimport type { FieldsConfig } from 'im.v2.model';\n\nexport const messagesFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'id',\n\t\ttargetFieldName: 'id',\n\t\tcheckFunction: Type.isNumber,\n\t},\n\t{\n\t\tfieldName: 'role',\n\t\ttargetFieldName: 'roleCode',\n\t\tcheckFunction: Type.isString,\n\t},\n];\n","import { Core } from 'im.v2.application.core';\nimport { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { formatFieldsWithConfig } from '../../../utils/validate';\nimport { messagesFieldsConfig } from './field-config';\n\nimport type { JsonObject } from 'main.core';\nimport type { CopilotPrompt, CopilotRole, CopilotRoleCode } from '../../../type/copilot';\nimport type { GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\n\ntype MessagesState = {\n\tcollection: { [key: number]: CopilotRoleCode }\n}\n\ntype CopilotMessage = {\n\trole: string\n}\n\n/* eslint-disable no-param-reassign */\nexport class MessagesModel extends BuilderModel\n{\n\tgetState(): MessagesState\n\t{\n\t\treturn {\n\t\t\tcollection: {},\n\t\t};\n\t}\n\n\tgetElementState(): CopilotMessage\n\t{\n\t\treturn {\n\t\t\tid: 0,\n\t\t\troleCode: '',\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function copilot/messages/getRole */\n\t\t\tgetRole: (state) => (messageId: number): ?CopilotRole => {\n\t\t\t\tconst message = state.collection[messageId];\n\t\t\t\tif (!message)\n\t\t\t\t{\n\t\t\t\t\treturn Core.getStore().getters['copilot/roles/getDefault'];\n\t\t\t\t}\n\n\t\t\t\treturn Core.getStore().getters['copilot/roles/getByCode'](message.roleCode);\n\t\t\t},\n\t\t\t/** @function copilot/messages/getPrompts */\n\t\t\tgetPrompts: (state) => (messageId: number): CopilotPrompt[] => {\n\t\t\t\tconst message = state.collection[messageId];\n\t\t\t\tif (!message)\n\t\t\t\t{\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\treturn Core.getStore().getters['copilot/roles/getPrompts'](message.roleCode);\n\t\t\t},\n\t\t\tgetAvatar: (state, getters) => (messageId: number): string => {\n\t\t\t\tconst role = getters.getRole(messageId);\n\t\t\t\tif (!role)\n\t\t\t\t{\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\treturn Core.getStore().getters['copilot/roles/getAvatar'](role.code);\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function copilot/messages/add */\n\t\t\tadd: (store, payload) => {\n\t\t\t\tif (!Type.isArrayFilled(payload))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tpayload.forEach((message) => {\n\t\t\t\t\tconst preparedMessage = {\n\t\t\t\t\t\t...this.getElementState(),\n\t\t\t\t\t\t...this.formatFields(message),\n\t\t\t\t\t};\n\t\t\t\t\tstore.commit('add', preparedMessage);\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tadd: (state, payload) => {\n\t\t\t\tstate.collection[payload.id] = payload;\n\t\t\t},\n\t\t};\n\t}\n\n\tformatFields(fields: JsonObject): JsonObject\n\t{\n\t\treturn formatFieldsWithConfig(fields, messagesFieldsConfig);\n\t}\n}\n","import { Type } from 'main.core';\n\nimport { formatFieldsWithConfig } from 'im.v2.model';\n\nimport type { FieldsConfig } from 'im.v2.model';\n\nexport const rolesFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'avatar',\n\t\ttargetFieldName: 'avatar',\n\t\tcheckFunction: Type.isPlainObject,\n\t\tformatFunction: (target) => {\n\t\t\treturn formatFieldsWithConfig(target, avatarFieldsConfig);\n\t\t},\n\t},\n\t{\n\t\tfieldName: 'code',\n\t\ttargetFieldName: 'code',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: ['desc', 'description'],\n\t\ttargetFieldName: 'desc',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'name',\n\t\ttargetFieldName: 'name',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'default',\n\t\ttargetFieldName: 'default',\n\t\tcheckFunction: Type.isBoolean,\n\t},\n\t{\n\t\tfieldName: 'prompts',\n\t\ttargetFieldName: 'prompts',\n\t\tcheckFunction: Type.isArray,\n\t\tformatFunction: (target) => {\n\t\t\treturn target.map((prompt) => {\n\t\t\t\treturn formatFieldsWithConfig(prompt, promptsFieldsConfig);\n\t\t\t});\n\t\t},\n\t},\n];\n\nconst promptsFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'code',\n\t\ttargetFieldName: 'code',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'promptType',\n\t\ttargetFieldName: 'promptType',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'text',\n\t\ttargetFieldName: 'text',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'title',\n\t\ttargetFieldName: 'title',\n\t\tcheckFunction: Type.isString,\n\t},\n];\n\nconst avatarFieldsConfig: FieldsConfig = [\n\t{\n\t\tfieldName: 'small',\n\t\ttargetFieldName: 'small',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'medium',\n\t\ttargetFieldName: 'medium',\n\t\tcheckFunction: Type.isString,\n\t},\n\t{\n\t\tfieldName: 'large',\n\t\ttargetFieldName: 'large',\n\t\tcheckFunction: Type.isString,\n\t},\n];\n","import { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { rolesFieldsConfig } from './field-config';\nimport { formatFieldsWithConfig } from '../../../utils/validate';\n\nimport type { JsonObject } from 'main.core';\nimport type { GetterTree, ActionTree, MutationTree } from 'ui.vue3.vuex';\nimport type { CopilotPrompt, CopilotRole, CopilotRoleCode, AvatarSize } from '../../../type/copilot';\n\ntype RolesState = {\n\troles: {[CopilotRoleCode]: CopilotRole}\n}\nexport const AvatarSizes: {[AvatarSize]: string} = Object.freeze({\n\tS: 'small',\n\tM: 'medium',\n\tL: 'large',\n});\n\n/* eslint-disable no-param-reassign */\nexport class RolesModel extends BuilderModel\n{\n\tgetState(): RolesState\n\t{\n\t\treturn {\n\t\t\troles: {},\n\t\t};\n\t}\n\n\tgetElementState(): CopilotRole\n\t{\n\t\treturn {\n\t\t\tcode: '',\n\t\t\tname: '',\n\t\t\tdesc: '',\n\t\t\tdefault: false,\n\t\t\tavatar: {\n\t\t\t\tsmall: '',\n\t\t\t\tmedium: '',\n\t\t\t\tlarge: '',\n\t\t\t},\n\t\t\tprompts: [],\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function copilot/roles/get */\n\t\t\tget: (state) => (): CopilotRole[] => {\n\t\t\t\treturn Object.values(state.roles);\n\t\t\t},\n\t\t\t/** @function copilot/roles/getByCode */\n\t\t\tgetByCode: (state, getters) => (code: string): CopilotRole[] => {\n\t\t\t\treturn state.roles[code] ?? getters.getDefault;\n\t\t\t},\n\t\t\t/** @function copilot/roles/getPrompts */\n\t\t\tgetPrompts: (state, getters) => (roleCode: string): CopilotPrompt[] => {\n\t\t\t\tif (!state.roles[roleCode])\n\t\t\t\t{\n\t\t\t\t\treturn getters.getDefault?.prompts ?? [];\n\t\t\t\t}\n\n\t\t\t\treturn state.roles[roleCode].prompts;\n\t\t\t},\n\t\t\t/** @function copilot/roles/getDefault */\n\t\t\tgetDefault: (state): CopilotRole => {\n\t\t\t\treturn Object.values(state.roles).find((role: CopilotRole) => role.default);\n\t\t\t},\n\t\t\t/** @function copilot/roles/getAvatar */\n\t\t\tgetAvatar: (state, getters) => (roleCode: string, size: AvatarSize = 'M'): string => {\n\t\t\t\tif (!state.roles[roleCode])\n\t\t\t\t{\n\t\t\t\t\treturn getters.getDefault?.prompts ?? [];\n\t\t\t\t}\n\n\t\t\t\treturn state.roles[roleCode].avatar[AvatarSizes[size]];\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function copilot/roles/add */\n\t\t\tadd: (store, payload) => {\n\t\t\t\tconst roles = Object.values(payload);\n\t\t\t\tif (!Type.isArrayFilled(roles))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\troles.forEach((role) => {\n\t\t\t\t\tconst preparedRole = { ...this.getElementState(), ...this.formatFields(role) };\n\t\t\t\t\tstore.commit('add', preparedRole);\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tadd: (state, payload) => {\n\t\t\t\tstate.roles[payload.code] = payload;\n\t\t\t},\n\t\t};\n\t}\n\n\tformatFields(fields: JsonObject): JsonObject\n\t{\n\t\treturn formatFieldsWithConfig(fields, rolesFieldsConfig);\n\t}\n}\n","import { Type } from 'main.core';\nimport { BuilderModel } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\nimport { formatFieldsWithConfig } from 'im.v2.model';\n\nimport { copilotFieldsConfig } from './format/field-config';\nimport { ChatsModel } from './nested-modules/chats/chats';\nimport { MessagesModel } from './nested-modules/messages/messages';\nimport { RolesModel } from './nested-modules/roles/roles';\n\nimport type { JsonObject } from 'main.core';\nimport type { CopilotRole } from '../type/copilot';\nimport type { GetterTree, ActionTree, MutationTree, NestedModuleTree } from 'ui.vue3.vuex';\n\ntype CopilotModelState = {\n\trecommendedRoles: string[],\n\taiProvider: string,\n};\n\nconst RECOMMENDED_ROLES_LIMIT = 4;\n\n/* eslint-disable no-param-reassign */\nexport class CopilotModel extends BuilderModel\n{\n\tgetNestedModules(): NestedModuleTree\n\t{\n\t\treturn {\n\t\t\troles: RolesModel,\n\t\t\tmessages: MessagesModel,\n\t\t\tchats: ChatsModel,\n\t\t};\n\t}\n\n\tgetName(): string\n\t{\n\t\treturn 'copilot';\n\t}\n\n\tgetState(): CopilotModelState\n\t{\n\t\treturn {\n\t\t\trecommendedRoles: [],\n\t\t\taiProvider: '',\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree\n\t{\n\t\treturn {\n\t\t\t/** @function copilot/getProvider */\n\t\t\tgetProvider: (state): string => {\n\t\t\t\treturn state.aiProvider;\n\t\t\t},\n\t\t\t/** @function copilot/getRecommendedRoles */\n\t\t\tgetRecommendedRoles: (state) => (): CopilotRole[] => {\n\t\t\t\tconst roles = state.recommendedRoles.map((roleCode) => {\n\t\t\t\t\treturn Core.getStore().getters['copilot/roles/getByCode'](roleCode);\n\t\t\t\t});\n\n\t\t\t\treturn roles.slice(0, RECOMMENDED_ROLES_LIMIT);\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree\n\t{\n\t\treturn {\n\t\t\t/** @function copilot/setRecommendedRoles */\n\t\t\tsetRecommendedRoles: (store, payload) => {\n\t\t\t\tif (!Type.isArrayFilled(payload))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setRecommendedRoles', payload);\n\t\t\t},\n\t\t\t/** @function copilot/setProvider */\n\t\t\tsetProvider: (store, payload) => {\n\t\t\t\tif (!Type.isStringFilled(payload))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('setProvider', payload);\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree\n\t{\n\t\treturn {\n\t\t\tsetRecommendedRoles: (state, payload) => {\n\t\t\t\tstate.recommendedRoles = payload;\n\t\t\t},\n\t\t\tsetProvider: (state, payload) => {\n\t\t\t\tstate.aiProvider = payload;\n\t\t\t},\n\t\t};\n\t}\n\n\tformatFields(fields: JsonObject): JsonObject\n\t{\n\t\treturn formatFieldsWithConfig(fields, copilotFieldsConfig);\n\t}\n}\n"],"names":["isNumberOrString","target","Type","isNumber","isString","convertToString","toString","convertToNumber","Number","parseInt","convertToDate","Utils","date","cast","SNAKE_CASE_REGEXP","convertObjectKeysToCamelCase","targetObject","resultObject","Object","entries","forEach","key","value","newKey","prepareKey","isPlainObject","isArray","convertArrayItemsKeysToCamelCase","rawKey","search","toLowerCase","Text","toCamelCase","targetArray","map","arrayItem","SortWeight","im","prepareNotificationSettings","result","sortedTarget","sortNotificationSettingsBlock","block","preparedItems","notices","item","id","label","items","sort","a","b","weightA","weightB","settingsFieldsConfig","fieldName","Settings","notification","enableSound","targetFieldName","checkFunction","isBoolean","enableAutoRead","mode","enableWeb","enableMail","enablePush","formatFunction","message","bigSmiles","appearance","background","alignment","recent","showBirthday","showInvited","showLastMessage","hotkey","sendByEnter","desktop","enableRedirect","user","status","formatFieldsWithConfig","fields","config","rawFields","fieldConfig","foundFieldName","getValidFieldName","isFieldValueValid","formatFieldValue","fieldValue","currentResult","fieldNameList","isStringFilled","singleField","isUndefined","field","checkFunctionList","isFunction","some","singleFunction","params","SettingsModel","BuilderModel","getState","DialogAlignment","left","NotificationSettingsMode","simple","notifications","getGetters","get","state","getActions","set","store","payload","commit","formatFields","setNotificationOption","getMutations","moduleId","optionName","type","moduleOptions","tariffRestrictionsFieldsConfig","TariffRestrictionsModel","fullChatHistory","isAvailable","limitDays","isHistoryAvailable","ApplicationModel","getName","getNestedModules","settings","tariffRestrictions","layout","name","Layout","chat","entityId","contextId","getLayout","isChatOpen","dialogId","allowedLayouts","copilot","channel","collab","includes","isLinesChatOpen","openlines","openlinesV2","areNotificationsOpen","setLayout","previousLayout","newLayout","validateLayout","validateLayoutEntityId","EventEmitter","emit","EventType","onLayoutChange","from","to","updateLayout","prepareComponentId","componentId","supportedComponents","values","MessageComponent","unsupported","prepareAuthorId","system","isSystem","prepareKeyboard","rawKeyboardButtons","rawButton","disabled","vote","wait","messageFieldsConfig","text","isTempMessage","isDate","PinModel","collection","getPinned","chatId","pinnedMessageId","Core","getStore","getters","push","isPinned","messageId","has","setPinned","pinnedMessages","length","pinnedMessageIds","add","delete","Logger","warn","Set","reverse","Reaction","freeze","like","kiss","laugh","wonder","cry","angry","facepalm","USERS_TO_SHOW","ReactionsModel","getElementState","reactionCounters","reactionUsers","ownReactions","getByMessageId","prepareSetPayload","setReaction","reaction","removeReaction","clearCollection","newItem","currentItem","newOwnReaction","Boolean","userId","reactions","getUserId","removeAllCurrentUserReactions","currentCounter","initCollection","users","counter","commentFieldsConfig","LAST_USERS_TO_SHOW","CommentsModel","opened","channelDialogId","postId","lastUserIds","messageCount","isUserSubscribed","getMessageIdByChatId","foundItem","find","element","areOpened","areOpenedForChannel","areOpenedForChannelPost","getOpenedChannelId","rawPayload","Array","setLastUser","newUserId","subscribe","dispatch","unsubscribe","setOpened","setClosed","currentUsers","unshift","pop","commentsPostId","authorId","SelectModel","getCollection","preparedCollection","filteredMessageIds","filter","isBulkActionsModeActive","isMessageSelected","enableBulkMode","disableBulkMode","toggleMessageSelection","isAnchorsEqual","anchor1","anchor2","fromUserId","isAnchorWithTypeFromCurrentChat","anchor","anchorType","AnchorsModel","anchors","getChatMessageIdsWithAnchors","isMessageHasAnchors","currentUserId","isChatHasAnchors","isChatHasAnchorsWithType","getCounterInChatByType","getNextMessageIdWithAnchorType","anchorOne","anchorTwo","at","setAnchors","addAnchor","equalAnchor","removeAnchor","removeUserAnchorsFromMessage","removeChatAnchors","removeAllAnchors","removedAnchorIndex","findIndex","splice","MessagesModel","pin","comments","select","chatCollection","loadingMessages","replyId","Date","files","attach","keyboard","unread","viewed","viewedByOthers","sending","error","default","componentParams","forward","isEdited","isDeleted","getByChatId","fakeFirstMessage","firstLoadingMessages","reduce","acc","getById","getByIdList","idList","hasMessage","isForward","isExists","isInChatCollection","getFirstId","getLastId","getLastOwnMessageId","getFirstUnread","getChatUnreadMessages","messages","getMessageFiles","fileId","getMessageType","MessageType","self","opponent","getPreviousMessage","initialMessageIndex","indexOf","desiredMessageId","findPreviousMessageId","currentMessageIndex","findLastChatMessageId","lastMessage","hasLoadingMessageByPreviousSiblingId","getLoadingMessageByPreviousSiblingId","getLoadingMessageByMessageId","currentMessage","hasLoadingMessageByMessageId","isRealMessage","setChatCollection","preparedMessages","updateWithId","update","readMessages","messageIds","chatMessages","messagesToReadCount","maxMessageId","messageIdsToView","messageIdsToRead","chatMessage","setViewedByOthers","ids","newPreviousMessageId","oldId","newId","clearChatCollection","deleteAttach","attachId","attachItem","addLoadingMessage","previousSiblingId","isNull","deleteLoadingMessageByMessageId","initChatCollection","isOwnMessage","entry","updateLoadingMessagePreviousSiblingId","loadingMessage","messageParams","formattedFields","NAME","USER_ID","authorName","AVATAR","avatar","originalAuthorId","fakeAuthorId","userManager","UserManager","networkId","UserIdNetworkPrefix","setUsersToModel","firstId","lastId","lastOwnMessageId","z","resultId","isUuidV4","getTime","prepareManagerList","managerList","rawUserId","prepareChatName","chatName","decode","prepareAvatar","endsWith","startsWith","getHost","encodeURI","prepareMuteList","muteList","prepareLastMessageViews","rawLastMessageViews","countOfViewers","firstViewers","rawFirstViewers","firstViewer","rawFirstViewer","userName","Error","chatFieldsConfig","chatEntityFieldsConfig","autoDeleteFieldsConfig","AutoDeleteModel","Map","isEnabled","getDelay","AutoDeleteDelay","Off","formattedElement","delay","collabFieldsConfig","collabEntitiesFieldConfig","collabEntityFieldConfig","CollabsModel","collabId","guestCount","entities","tasks","url","calendar","collabInfo","setCounter","entity","currentRecord","setGuestCount","InputActionsModel","getByDialogId","chatActionList","isChatActive","isActionActive","isAlreadyActive","start","stop","stopUserActionsInChat","userRecord","list","ChatsModel","collabs","inputActions","autoDelete","ChatType","description","color","Color","base","extranet","containsCollaber","userCounter","lastReadId","markedId","lastMessageId","lastMessageViews","savedPositionMessageId","inputActionList","quoteId","ownerId","entityLink","dateCreate","public","code","link","inited","loading","hasPrevPage","hasNextPage","diskFolderId","role","UserRole","member","permissions","manageUi","none","manageSettings","manageUsersAdd","manageUsersDelete","manageMessages","isHistoryLimitExceeded","parentChatId","backgroundId","isTextareaEnabled","getBlank","preparedChatId","getQuoteId","isUser","getLastReadId","lastReadIdMessage","getInitialMessageId","Math","min","isSupport","support24Question","getBackgroundId","existingItem","clearCounters","mute","actionName","unmute","setLastMessageViews","newLastMessageViews","clearLastMessageViews","defaultLastMessageViews","incrementLastMessageViews","newCounter","keys","prepareDepartments","departments","rawDepartmentId","departmentId","preparePhones","phones","workPhone","personalMobile","personalPhone","innerPhone","userFieldsConfig","isNetworkUserId","botFieldsConfig","BotsModel","BotType","bot","appId","isHidden","isSupportOpenline","isHuman","getByUserId","isNetwork","network","support24","getCopilotUserId","BotCode","isCopilot","copilotUserId","botData","RawBotType","human","TYPES_MAPPED_TO_DEFAULT_BOT","openline","supervisor","UserPositionByType","UserType","Loc","getMessage","collaber","UsersModel","bots","absentList","absentCheckInterval","firstName","lastName","workPosition","gender","isAdmin","connector","externalAuthId","idle","lastActivityDate","mobileLastDate","birthday","isBirthday","absent","isAbsent","getTemporary","getList","userList","hasBirthday","hasVacation","getLastOnline","getLastDateText","getPosition","isSupportBot","existingUser","setStatus","UserStatusManager","getInstance","onUserUpdate","preparedFields","isBot","bot_data","addToAbsentList","startAbsentCheckInterval","TIME_TO_NEXT_DAY","setTimeout","setInterval","currentTime","now","absentEnd","getTimeToNextMidnight","FilesModel","temporaryFilesMap","extension","icon","size","image","FileStatus","done","progress","urlPreview","urlShow","urlDownload","viewerAttrs","file","hasMappedTemporaryFile","serverFileId","temporaryFile","getMappedTemporaryFile","isInCollection","temporaryFileId","hasOwn","preparedFile","validate","flat","setTemporaryFileMapping","currentFile","options","getIconTypeByExtension","width","height","prepareDraft","draft","prepareInvitation","invited","isActive","originator","originatorId","canResend","recentFieldsConfig","CallsModel","call","RecentCallStatus","waiting","getCallByDialog","hasActiveCall","activeCall","joined","existingCall","addActiveCall","uuid","validateActiveCall","prepareActiveCall","updateActiveCall","deleteActiveCall","isObjectLike","associatedEntity","RecentModel","calls","recentCollection","unreadCollection","copilotCollection","channelCollection","collabCollection","pinned","liked","invitation","isFakeElement","isBirthdayPlaceholder","getRecentCollection","dialog","getUnreadCollection","getCopilotCollection","getChannelCollection","getCollabCollection","getSortedCollection","recentCollectionAsArray","messageA","messageB","needsBirthdayPlaceholder","isSelfChat","hasTodayMessage","needsVacationPlaceholder","isNotes","getSortDate","getStartOfTheDay","lastActivity","needToUseActivityDate","ChannelManager","isChannel","setRecent","itemIds","setUnread","setCopilot","setChannel","setCollab","clearChannelCollection","itemsToUpdate","itemsToAdd","preparedElement","action","isLastMessage","isExactMessageLiked","setDraft","isRemovingDraft","existingCollectionItem","needsFakeItem","canDelete","clearUnread","setRecentCollection","deleteFromRecentCollection","setUnreadCollection","setCopilotCollection","deleteFromCopilotCollection","deleteFromChannelCollection","setChannelCollection","setCollabCollection","deleteFromCollabCollection","elementIsInRecent","currentElement","updateMethod","zeroedCountersForNewItems","isToday","NOT_DELETABLE_TYPES","openChannel","FakeDraftMessagePrefix","NotificationsModel","searchCollection","unreadCounter","title","replaces","notifyButtons","sectionCode","NotificationTypesCodes","read","settingName","sortByType","getSearchResultCollection","getConfirmsCount","confirm","notificationId","getCounter","initialSet","total_unread_count","isArrayFilled","setSearchResult","skipValidation","readAll","deleteFromSearch","clearSearchResult","addSearchResult","updateSearchResult","decreaseCounter","increaseCounter","clear","author_id","isNil","notify_title","notify_buttons","JSON","parse","buttons","button","COMMAND","COMMAND_PARAMS","VALUE","TEXT","TITLE","TYPE","DISPLAY","BG_COLOR","TEXT_COLOR","notify_type","notify_read","setting_name","sidebarLinksFieldsConfig","source","richData","richDataFieldsConfig","LinksModel","collectionSearch","counters","historyLimitExceededCollection","previewUrl","getChatState","getSize","hasNextPageSearch","getSearchResultCollectionSize","links","preparedLink","setSearch","clearSearch","setHasNextPage","hasCollection","setHasNextPageSearch","setHistoryLimitExceeded","addSearch","hasCollectionSearch","sidebarFavoritesFieldsConfig","FavoritesModel","isFavoriteMessage","chatFavorites","fromEntries","targetMessage","getSearchResultCollectionLastId","favorites","favorite","preparedFavoriteMessage","deleteByMessageId","targetLinkId","linkId","linkObject","setLastId","setLastIdSearch","MembersModel","nextCursor","getNextCursor","getInited","setNextCursor","setInited","MessageSearchModel","sidebarTaskFieldsConfig","taskFieldsConfig","TasksModel","task","creatorId","responsibleId","statusTitle","deadline","preparedTask","sidebarMeetingFieldsConfig","meetingFieldsConfig","MeetingsModel","meeting","dateFrom","dateTo","meetings","preparedMeeting","sidebarFilesFieldsConfig","group","getLatest","rootState","rootGetters","media","audio","briefs","SidebarFileGroups","brief","sortedFlatCollection","getTopThreeCompletedFiles","getLatestUnsorted","unsorted","fileUnsorted","sortedCollection","sidebarFile","slice","sidebarMultidialogFieldsConfig","String","MultidialogModel","isInited","isInitedDetail","chatsCount","unreadChats","openSessionsLimit","multidialogs","getOpenSessionsLimit","getChatsCount","getTotalChatCounter","count","isSupportChat","getNumberMultidialogs","getMultidialogsByStatus","multidialog","setInitedDetail","addMultidialogs","preparedTicket","setOpenSessionsLimit","setChatsCount","setUnreadChats","deleteUnreadChats","addMultidialog","SidebarModel","members","messageSearch","initedList","isFilesMigrated","isLinksMigrated","hasHistoryLimit","limitsByPanel","getterName","hasLimit","setFilesMigrated","setLinksMigrated","MarketModel","placementCollection","PlacementType","contextMenu","navigation","textarea","sidebar","smilesSelector","context","iconName","placement","order","loadConfiguration","ID","PLACEMENT","PLACEMENT_ID","getByPlacement","appIds","setPlacementCollection","setCollection","app","configuration","CountersModel","unloadedChatCounters","unloadedLinesCounters","unloadedCopilotCounters","unloadedCollabCounters","commentCounters","getUnloadedChatCounters","loadedChatsCounter","unloadedChatsCounter","channelCommentsCounter","getTotalCopilotCounter","getTotalCollabCounter","getTotalLinesCounter","unloadedLinesCounter","getSpecificLinesCounter","getTotalCommentsCounter","totalCounter","channelChatId","channelCounters","commentCounter","getChannelComments","getChannelCommentsCounter","getChatCounterByChatId","recentItem","getSpecificCommentsCounter","channelId","commentChatId","setUnloadedChatCounters","setUnloadedLinesCounters","setUnloadedCopilotCounters","setUnloadedCollabCounters","setCommentCounters","readAllChannelComments","deleteForChannel","countersMap","channelMap","isMarked","recentItemCounter","copilotFieldsConfig","rolesFieldsConfig","getRole","getRoleAvatar","chatsToAdd","preparedChat","messagesFieldsConfig","roleCode","getPrompts","getAvatar","preparedMessage","avatarFieldsConfig","prompt","promptsFieldsConfig","AvatarSizes","S","M","L","RolesModel","roles","desc","small","medium","large","prompts","getByCode","getDefault","preparedRole","RECOMMENDED_ROLES_LIMIT","CopilotModel","chats","recommendedRoles","aiProvider","getProvider","getRecommendedRoles","setRecommendedRoles","setProvider"],"mappings":"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"}

Youez - 2016 - github.com/yon3zu
LinuXploit