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/component/recent-list/src/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/js/im/v2/component/recent-list/src/event-handler.js
import {Loc} from 'main.core';
import {EventEmitter} from 'main.core.events';
import {EventType} from 'im.v2.const';

export class EventHandler
{
	static instance = null;
	store: Object = null;

	static init($Bitrix): void
	{
		if (this.instance)
		{
			return;
		}

		this.instance = new this($Bitrix);
	}

	constructor($Bitrix)
	{
		this.store = $Bitrix.Data.get('controller').store;

		this.subscribeToEvents();
	}

	subscribeToEvents()
	{
		this.onSetCounterHandler = this.onSetCounter.bind(this);
		this.onSetMessageHandler = this.onSetMessage.bind(this);
		this.onHideChatHandler = this.onHideChat.bind(this);
		this.onLeaveChatHandler = this.onLeaveChat.bind(this);
		this.onClearLikeHandler = this.onClearLike.bind(this);
		this.onClearHistoryHandler = this.onClearHistory.bind(this);

		EventEmitter.subscribe(EventType.recent.setCounter, this.onSetCounterHandler);
		EventEmitter.subscribe(EventType.recent.setMessage, this.onSetMessageHandler);
		EventEmitter.subscribe(EventType.recent.hideChat, this.onHideChatHandler);
		EventEmitter.subscribe(EventType.recent.leaveChat, this.onLeaveChatHandler);
		EventEmitter.subscribe(EventType.recent.clearLike, this.onClearLikeHandler);
		EventEmitter.subscribe(EventType.dialog.clearHistory, this.onClearHistoryHandler);
	}

	onSetCounter({data: {dialogId, counter}})
	{
		const recentItem = this.store.getters['recent/get'](dialogId);
		const dialog = this.store.getters['dialogues/get'](dialogId);
		if (!recentItem || !dialog)
		{
			return false;
		}

		this.store.dispatch('dialogues/update', {
			dialogId: dialogId,
			fields: {
				counter: counter
			}
		});
	}

	onSetMessage({data: {id, dialogId, text, date}})
	{
		const recentItem = this.store.getters['recent/get'](dialogId);
		const dialog = this.store.getters['dialogues/get'](dialogId);
		if (!recentItem || !dialog)
		{
			return false;
		}

		if (id && !id.toString().startsWith('temp') && id !== recentItem.message.id)
		{
			return false;
		}

		this.store.dispatch('recent/update', {
			id: dialogId,
			fields: {
				message: {
					id: id || 0,
					text: text,
					senderId: this.getCurrentUserId(),
					status: recentItem.message.status,
					date: date || recentItem.message.date,
				}
			}
		});
	}

	onHideChat({data: {dialogId}})
	{
		const recentItem = this.store.getters['recent/get'](dialogId);
		if (!recentItem)
		{
			return false;
		}

		this.store.dispatch('recent/delete', {
			id: dialogId
		});
	}

	onLeaveChat({data: {dialogId}})
	{
		this.onHideChat({data: {dialogId}});
	}

	onClearLike({data: {dialogId}})
	{
		const recentItem = this.store.getters['recent/get'](dialogId);
		if (!recentItem || !recentItem.liked)
		{
			return false;
		}

		this.store.dispatch('recent/like', {
			id: dialogId,
			liked: false
		});
	}

	onClearHistory({data: {dialogId}})
	{
		const recentItem = this.store.getters['recent/get'](dialogId);
		if (!recentItem)
		{
			return false;
		}

		this.store.dispatch('recent/update', {
			id: dialogId,
			fields: {
				message: {
					...recentItem.message,
					text: Loc.getMessage('IM_RECENT_DELETED_MESSAGE'),
				}
			}
		});
	}

	getCurrentUserId(): number
	{
		return this.store.state.application.common.userId;
	}

	destroy()
	{
		this.unsubscribeEvents();
	}

	unsubscribeEvents()
	{
		EventEmitter.unsubscribe(EventType.recent.setCounter, this.onSetCounterHandler);
		EventEmitter.unsubscribe(EventType.recent.setMessage, this.onSetMessageHandler);
		EventEmitter.unsubscribe(EventType.recent.hideChat, this.onHideChatHandler);
		EventEmitter.unsubscribe(EventType.recent.leaveChat, this.onLeaveChatHandler);
		EventEmitter.unsubscribe(EventType.recent.clearLike, this.onClearLikeHandler);
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit