UNPKG

@tencentcloud/roomkit-electron-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,

189 lines (188 loc) 5.96 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); const Vue = require("vue"); const basic = require("../../stores/basic.js"); const room = require("../../stores/room.js"); const Message = require("../common/base/Message/Message.js"); const pinia = require("pinia"); const index = require("../../locales/index.js"); const utils = require("../../utils/utils.js"); const environment = require("../../utils/environment.js"); const InviteIcon = require("../common/icons/InviteIcon.vue.js"); const ShareIcon = require("../common/icons/ShareIcon.vue.js"); require("../../services/main.js"); const roomService = require("../../services/roomService.js"); require("@tencentcloud/tuiroom-engine-electron"); require("mitt"); require("../../services/manager/roomActionManager.js"); require("@tencentcloud/tui-core"); const message = require("../../constants/message.js"); const adapter = require("../../utils/adapter.js"); function useRoomInvite() { const { t } = index.useI18n(); const basicStore = basic.useBasicStore(); const roomLinkConfig = roomService.roomService.getComponentConfig("RoomLink"); const roomStore = room.useRoomStore(); const { remoteEnteredUserList, roomName, isSeatEnabled, password } = pinia.storeToRefs(roomStore); const { roomId, shareLink, isRoomLinkVisible, isSchemeLinkVisible, userId, userName, sidebarName } = pinia.storeToRefs(basicStore); const { origin, pathname } = location || {}; const showContacts = Vue.ref(false); const isShowRoomShareForm = Vue.ref(false); const inviteLink = Vue.computed(() => { if (shareLink.value) { const urlConcatenation = shareLink.value.indexOf("?") !== -1 ? "&" : "?"; return `${shareLink.value}${urlConcatenation}roomId=${roomId.value}`; } return `${origin}${pathname}#/home?roomId=${roomId.value}`; }); const schemeLink = Vue.computed( () => `tuiroom://joinroom?roomId=${roomId.value}` ); const inviteBarTitle = Vue.computed( () => isRoomLinkVisible.value ? t( "You can share the room number or link to invite more people to join the room." ) : t( "You can share the room number to invite more people to join the room" ) ); const isShowPassword = Vue.computed(() => !!(password == null ? void 0 : password.value)); const invitationFeatureDetails = Vue.ref([ { icon: Vue.shallowRef(InviteIcon.default), text: "addMember", function: async () => { contacts.value = await roomService.roomService.scheduleConferenceManager.fetchFriendList(); showContacts.value = true; } }, { icon: Vue.shallowRef(ShareIcon.default), text: "shareRoom", function: () => { isShowRoomShareForm.value = true; } } ]); const contacts = Vue.ref([]); async function onCopy(value) { try { await adapter.clipBoard(value); Message.default({ message: t("Copied successfully"), type: "success" }); } catch (error) { Message.default({ message: t("Copied failure"), type: "error" }); } } const inviteInfoList = Vue.computed(() => [ { title: "Room Name", content: roomName.value, isShowCopyIcon: false, isVisible: true }, { title: "Room Type", content: `${t(getSeatModeDisplay(!!isSeatEnabled.value))}`, isShowCopyIcon: false, isVisible: true }, { title: "Room ID", content: roomId.value, isShowCopyIcon: true, isVisible: true }, { title: "Room Password", content: password == null ? void 0 : password.value, isShowCopyIcon: true, isVisible: isShowPassword.value }, { title: "Room Link", content: utils.getUrlWithRoomId(roomId.value), isShowCopyIcon: true, isVisible: isRoomLinkVisible.value && roomLinkConfig.visible }, { title: "Scheme", content: schemeLink.value, isShowCopyIcon: true, isVisible: isSchemeLinkVisible.value } ]); const displayedInviteInfoList = Vue.computed( () => inviteInfoList.value.filter((item) => item.isVisible) ); function getSeatModeDisplay(isSeatEnabled2) { return isSeatEnabled2 ? "On-stage Speaking Room" : "Free Speech Room"; } function copyRoomIdAndRoomLink() { const invitationList = [ roomName.value, `${t("Room Type")}: ${t(getSeatModeDisplay(!!isSeatEnabled.value))}`, `${t("Room ID")}: ${roomId.value}` ]; if (isShowPassword.value) { invitationList.push(`${t("Room Password")}: ${password == null ? void 0 : password.value}`); } if (isRoomLinkVisible.value && roomLinkConfig.visible) { invitationList.push( `${t("Room Link")}: ${utils.getUrlWithRoomId(roomId.value)}` ); } if (isSchemeLinkVisible.value) { invitationList.push(`${t("Scheme")}: ${schemeLink.value}`); } const invitation = invitationList.join("\n"); onCopy(invitation); isShowRoomShareForm.value = false; } const contactsConfirm = async (contacts2) => { const userIdList = contacts2.map((contacts3) => contacts3.userId); await roomService.roomService.conferenceInvitationManager.inviteUsers({ userIdList }); Message.default({ type: "success", message: t("Invitation sent, waiting for members to join."), duration: message.MESSAGE_DURATION.NORMAL }); }; return { t, isRoomLinkVisible, roomId, origin, pathname, isElectron: environment.isElectron, inviteLink, schemeLink, inviteBarTitle, onCopy, displayedInviteInfoList, invitationFeatureDetails, showContacts, contactsConfirm, contacts, remoteEnteredUserList, isShowRoomShareForm, userId, userName, inviteInfoList, copyRoomIdAndRoomLink, sidebarName }; } exports.default = useRoomInvite;