UNPKG

@tencentcloud/roomkit-web-vue3

Version:

<h1 align="center"> TUIRoomKit</h1> Conference (TUIRoomKit) is a product suitable for multi-person audio and video conversation scenarios such as business meetings, webinars, and online education. By integrating this product, you can add room management,

123 lines (122 loc) 4.55 kB
"use strict"; var __defProp = Object.defineProperty; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const TUICore = require("@tencentcloud/tui-core"); const types = require("../types.js"); const TUIRoomEngine = require("@tencentcloud/tuiroom-engine-js"); const avatar = require("../../assets/imgs/avatar.png.js"); const _ChatManager = class _ChatManager { constructor(service) { __publicField(this, "service"); this.service = service; this.bindEventContext(); this.bindEvent(); TUICore.TUICore.registerEvent( TUICore.TUIConstants.TUIChat.EVENT.CHAT_STATE_CHANGED, TUICore.TUIConstants.TUIChat.EVENT_SUB_KEY.CHAT_OPENED, this ); } static getInstance(ctx) { if (!_ChatManager.instance) { _ChatManager.instance = new _ChatManager(ctx); } return _ChatManager.instance; } static destroyInstance() { if (!_ChatManager.instance) return; _ChatManager.instance = void 0; } dispose() { this.unbindEvent(); } reset() { TUICore.TUICore.unregisterExtension( TUICore.TUIConstants.TUIChat.EVENT.CHAT_STATE_CHANGED, this ); } async onNotifyEvent(eventName, subKey, options) { if (options.groupID !== this.service.basicStore.roomId) return; if (eventName === TUICore.TUIConstants.TUIChat.EVENT.CHAT_STATE_CHANGED) { if (subKey === TUICore.TUIConstants.TUIChat.EVENT_SUB_KEY.CHAT_OPENED) { TUICore.TUICore.notifyEvent( TUICore.TUIConstants.TUIChat.EVENT.CHAT_TYPE_CHANGED, TUICore.TUIConstants.TUIChat.EVENT_SUB_KEY.CHANGE_SUCCESS, { chatType: TUICore.TUIConstants.TUIChat.TYPE.ROOM } ); const result = Object.fromEntries( this.service.roomStore.userList.map((item) => [ item.userId, { nick: item.userName, nameCard: item.nameCard, avatar: item.avatarUrl || avatar.default } ]) ); TUICore.TUICore.callService({ serviceName: TUICore.TUIConstants.TUIChat.SERVICE.NAME, method: TUICore.TUIConstants.TUIChat.SERVICE.METHOD.UPDATE_MESSAGE_INFO, params: { userInfo: result } }); } } } onLanguageChanged(language) { TUICore.TUICore.notifyEvent( TUICore.TUIConstants.TUITranslate.EVENT.LANGUAGE_CHANGED, TUICore.TUIConstants.TUITranslate.EVENT_SUB_KEY.CHANGE_SUCCESS, { language } ); } onThemeChanged(theme) { TUICore.TUICore.notifyEvent( TUICore.TUIConstants.TUITheme.EVENT.THEME_CHANGED, TUICore.TUIConstants.TUITheme.EVENT_SUB_KEY.CHANGE_SUCCESS, { theme } ); } onUserNameCardChanged(eventInfo) { var _a; const { userId, nameCard } = eventInfo.userInfo; const oldNameCard = (_a = this.service.roomStore.userInfoObj[userId]) == null ? void 0 : _a.nameCard; if (oldNameCard === nameCard) return; const result = { [userId]: { nameCard } }; TUICore.TUICore.callService({ serviceName: TUICore.TUIConstants.TUIChat.SERVICE.NAME, method: TUICore.TUIConstants.TUIChat.SERVICE.METHOD.UPDATE_MESSAGE_INFO, params: { userInfo: result } }); } bindEventContext() { this.onLanguageChanged = this.onLanguageChanged.bind(this); this.onThemeChanged = this.onThemeChanged.bind(this); this.onUserNameCardChanged = this.onUserNameCardChanged.bind(this); } bindEvent() { this.service.on(types.EventType.LANGUAGE_CHANGED, this.onLanguageChanged); this.service.on(types.EventType.THEME_CHANGED, this.onThemeChanged); TUIRoomEngine.once("ready", () => { var _a; (_a = this.service.roomEngine.instance) == null ? void 0 : _a.on( TUIRoomEngine.TUIRoomEvents.onUserInfoChanged, this.onUserNameCardChanged ); }); } unbindEvent() { var _a; this.service.off(types.EventType.LANGUAGE_CHANGED, this.onLanguageChanged); this.service.off(types.EventType.THEME_CHANGED, this.onThemeChanged); (_a = this.service.roomEngine.instance) == null ? void 0 : _a.off( TUIRoomEngine.TUIRoomEvents.onUserInfoChanged, this.onUserNameCardChanged ); } }; __publicField(_ChatManager, "instance"); let ChatManager = _ChatManager; exports.ChatManager = ChatManager;