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/src/messages/model/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/js/im/v2/model/src/messages/model/pin.js
import {BuilderModel} from 'ui.vue3.vuex';

import {Core} from 'im.v2.application.core';
import {Logger} from 'im.v2.lib.logger';

import type {ImModelMessage} from 'im.v2.model';

export class PinModel extends BuilderModel
{
	getState()
	{
		return {
			collection: {}
		};
	}

	getGetters(): Object
	{
		return {
			getPinned: (state: PinState) => (chatId: number): ImModelMessage[] =>
			{
				if (!state.collection[chatId])
				{
					return [];
				}

				return [...state.collection[chatId]].map(pinnedMessageId => {
					return Core.getStore().getters['messages/getById'](pinnedMessageId);
				});
			},
			isPinned: (state: PinState) => (payload: {chatId: number, messageId: number}): boolean =>
			{
				const {chatId, messageId} = payload;
				if (!state.collection[chatId])
				{
					return false;
				}

				return state.collection[chatId].has(messageId);
			},
		};
	}

	getActions(): Object
	{
		return {
			setPinned: (store, payload: {chatId: number, pinnedMessages: number[]}) =>
			{
				const {chatId, pinnedMessages} = payload;
				if (pinnedMessages.length === 0)
				{
					return;
				}

				store.commit('setPinned', {
					chatId,
					pinnedMessageIds: pinnedMessages
				});
			},
			set: (store, payload: {chatId: number, messageId: number, action: boolean}) =>
			{
				store.commit('set', payload);
			},
			add: (store, payload: {chatId: number, messageId: number}) =>
			{
				store.commit('add', payload);
			},
			delete: (store, payload: {chatId: number, messageId: number}) =>
			{
				store.commit('delete', payload);
			},
		};
	}

	getMutations(): Object
	{
		return {
			setPinned: (state: PinState, payload: {chatId: number, pinnedMessageIds: number[]}) =>
			{
				Logger.warn('Messages/pin model: setPinned mutation', payload);
				const {chatId, pinnedMessageIds} = payload;
				state.collection[chatId] = new Set(pinnedMessageIds.reverse());
			},
			add: (state: PinState, payload: {chatId: number, messageId: number}) =>
			{
				Logger.warn('Messages/pin model: add pin mutation', payload);
				const {chatId, messageId} = payload;
				if (!state.collection[chatId])
				{
					state.collection[chatId] = new Set();
				}

				state.collection[chatId].add(messageId);
			},
			delete: (state: PinState, payload: {chatId: number, messageId: number}) =>
			{
				Logger.warn('Messages/pin model: delete pin mutation', payload);
				const {chatId, messageId} = payload;
				if (!state.collection[chatId])
				{
					return;
				}

				state.collection[chatId].delete(messageId);
			}
		};
	}
}

type PinState = {
	collection: {
		[chatId: string]: Set
	}
};

Youez - 2016 - github.com/yon3zu
LinuXploit