UNPKG

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,

84 lines (83 loc) 2.69 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); const Vue = require("vue"); const pinia = require("pinia"); const Message = require("../../common/base/Message/Message.js"); const TUIRoomEngine = require("@tencentcloud/tuiroom-engine-js"); const useRoomEngine = require("../../../hooks/useRoomEngine.js"); const chat = require("../../../stores/chat.js"); const room = require("../../../stores/room.js"); const index = require("../../../locales/index.js"); const basic = require("../../../stores/basic.js"); const util = require("../util.js"); function useChatEditor() { const roomEngine = useRoomEngine.default(); const { t } = index.useI18n(); const basicStore = basic.useBasicStore(); const chatStore = chat.useChatStore(); const roomStore = room.useRoomStore(); const { roomId } = pinia.storeToRefs(basicStore); const { isMessageDisabled } = pinia.storeToRefs(chatStore); const editorInputEle = Vue.ref(); const sendMsg = Vue.ref(""); const isEmojiToolbarVisible = Vue.ref(false); Vue.watch(isMessageDisabled, (value) => { if (value) { sendMsg.value = ""; } }); const sendMessage = async () => { var _a; const result = util.decodeSendTextMsg(sendMsg.value); if (result === "") { return; } sendMsg.value = ""; isEmojiToolbarVisible.value = false; try { const tim = (_a = roomEngine.instance) == null ? void 0 : _a.getTIM(); if (!tim) { throw new Error("tim is null"); } const message = tim.createTextMessage({ to: roomId.value, conversationType: TUIRoomEngine.TencentCloudChat.TYPES.CONV_GROUP, payload: { text: result } }); await tim.sendMessage(message); chatStore.updateMessageList({ ID: Math.random().toString(), type: "TIMTextElem", payload: { text: result }, nick: roomStore.localUser.nameCard || roomStore.localUser.userName || roomStore.localUser.userId, from: roomStore.localUser.userId, flow: "out", sequence: Math.random() }); } catch (e) { Message.default({ type: "error", message: t("Failed to send the message") }); } }; const handleChooseEmoji = (emojiName) => { sendMsg.value += emojiName; editorInputEle.value.focus(); }; const togglePopover = () => { isEmojiToolbarVisible.value = !isEmojiToolbarVisible.value; }; return { t, editorInputEle, sendMsg, isMessageDisabled, sendMessage, handleChooseEmoji, isEmojiToolbarVisible, togglePopover }; } exports.default = useChatEditor;