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/rospirotorg.ru/bitrix/js/im/event-handler/src/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/im/event-handler/src/dialog-action-handler.js
import { EventEmitter } from "main.core.events";
import { EventType, RestMethod } from "im.const";
import { Logger } from "im.lib.logger";

export class DialogActionHandler
{
	restClient: Object = null;

	constructor($Bitrix)
	{
		this.restClient = $Bitrix.RestClient.get();

		this.subscribeToEvents();
	}

	subscribeToEvents()
	{
		this.clickOnMentionHandler = this.onClickOnMention.bind(this);
		this.clickOnUserNameHandler = this.onClickOnUserName.bind(this);
		this.clickOnMessageMenuHandler = this.onClickOnMessageMenu.bind(this);
		this.clickOnReadListHandler = this.onClickOnReadList.bind(this);
		this.clickOnChatTeaserHandler = this.onClickOnChatTeaser.bind(this);
		this.clickOnDialogHandler = this.onClickOnDialog.bind(this);
		EventEmitter.subscribe(EventType.dialog.clickOnMention, this.clickOnMentionHandler);
		EventEmitter.subscribe(EventType.dialog.clickOnUserName, this.clickOnUserNameHandler);
		EventEmitter.subscribe(EventType.dialog.clickOnMessageMenu, this.clickOnMessageMenuHandler);
		EventEmitter.subscribe(EventType.dialog.clickOnReadList, this.clickOnReadListHandler);
		EventEmitter.subscribe(EventType.dialog.clickOnChatTeaser, this.clickOnChatTeaserHandler);
		EventEmitter.subscribe(EventType.dialog.clickOnDialog, this.clickOnDialogHandler);
	}

	onClickOnMention({data: event})
	{
		if (event.type === 'USER')
		{
			Logger.warn('DialogActionHandler: open user profile', event);
		}
		else if (event.type === 'CHAT')
		{
			Logger.warn('DialogActionHandler: open dialog from mention click', event);
		}
		else if (event.type === 'CALL')
		{
			Logger.warn('DialogActionHandler: open phone menu', event);
		}
	}

	onClickOnUserName({data: event})
	{
		EventEmitter.emit(EventType.textarea.insertText, {
			text: `${event.user.name}, `
		});
	}

	onClickOnMessageMenu({data: event})
	{
		Logger.warn('DialogActionHandler: open message menu', event);
	}

	onClickOnReadList({data: event})
	{
		Logger.warn('DialogActionHandler: open read list', event);
	}

	onClickOnChatTeaser({data: event})
	{
		this.joinParentChat(event.message.id, `chat${event.message.params.CHAT_ID}`)
			.then((dialogId) => {
				Logger.warn('DialogActionHandler: open dialog from teaser click', dialogId);
			})
			.catch((error) => {
				console.error('DialogActionHandler: error joining parent chat', error);
			});
	}

	onClickOnDialog()
	{
		Logger.warn('DialogActionHandler: click on dialog');
	}

	joinParentChat(messageId, dialogId)
	{
		return new Promise((resolve, reject) =>
		{
			if (!messageId || !dialogId)
			{
				return reject();
			}

			// TODO: what is this for
			if (typeof this.tempJoinChat === 'undefined')
			{
				this.tempJoinChat = {};
			}
			else if (this.tempJoinChat['wait'])
			{
				return reject();
			}

			this.tempJoinChat['wait'] = true;

			this.restClient.callMethod(RestMethod.imChatParentJoin, {
				'DIALOG_ID': dialogId,
				'MESSAGE_ID': messageId
			}).then(() => {
				this.tempJoinChat['wait'] = false;
				this.tempJoinChat[dialogId] = true;

				return resolve(dialogId);
			}).catch(() => {
				this.tempJoinChat['wait'] = false;

				return reject();
			});
		});
	}

	unsubscribeEvents()
	{
		EventEmitter.unsubscribe(EventType.dialog.clickOnMention, this.clickOnMentionHandler);
		EventEmitter.unsubscribe(EventType.dialog.clickOnUserName, this.clickOnUserNameHandler);
		EventEmitter.unsubscribe(EventType.dialog.clickOnMessageMenu, this.clickOnMessageMenuHandler);
		EventEmitter.unsubscribe(EventType.dialog.clickOnReadList, this.clickOnReadListHandler);
		EventEmitter.unsubscribe(EventType.dialog.clickOnChatTeaser, this.clickOnChatTeaserHandler);
		EventEmitter.unsubscribe(EventType.dialog.clickOnDialog, this.clickOnDialogHandler);
	}

	destroy()
	{
		this.unsubscribeEvents();
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit