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,

189 lines (188 loc) 5.68 kB
import { ref, computed, shallowRef } from "vue"; import { useBasicStore } from "../../stores/basic.mjs"; import { useRoomStore } from "../../stores/room.mjs"; import renderMsg from "../common/base/Message/Message.mjs"; import { storeToRefs } from "pinia"; import { useI18n } from "../../locales/index.mjs"; import { getUrlWithRoomId } from "../../utils/utils.mjs"; import { isElectron } from "../../utils/environment.mjs"; import InviteIcon from "../common/icons/InviteIcon.vue.mjs"; import ShareIcon from "../common/icons/ShareIcon.vue.mjs"; import "../../services/main.mjs"; import { roomService } from "../../services/roomService.mjs"; import "@tencentcloud/tuiroom-engine-js"; import "mitt"; import "../../services/manager/roomActionManager.mjs"; import "@tencentcloud/tui-core"; import { MESSAGE_DURATION } from "../../constants/message.mjs"; import { clipBoard } from "../../utils/adapter.mjs"; function useRoomInvite() { const { t } = useI18n(); const basicStore = useBasicStore(); const roomLinkConfig = roomService.getComponentConfig("RoomLink"); const roomStore = useRoomStore(); const { remoteEnteredUserList, roomName, isSeatEnabled, password } = storeToRefs(roomStore); const { roomId, shareLink, isRoomLinkVisible, isSchemeLinkVisible, userId, userName, sidebarName } = storeToRefs(basicStore); const { origin, pathname } = location || {}; const showContacts = ref(false); const isShowRoomShareForm = ref(false); const inviteLink = 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 = computed( () => `tuiroom://joinroom?roomId=${roomId.value}` ); const inviteBarTitle = 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 = computed(() => !!(password == null ? void 0 : password.value)); const invitationFeatureDetails = ref([ { icon: shallowRef(InviteIcon), text: "addMember", function: async () => { contacts.value = await roomService.scheduleConferenceManager.fetchFriendList(); showContacts.value = true; } }, { icon: shallowRef(ShareIcon), text: "shareRoom", function: () => { isShowRoomShareForm.value = true; } } ]); const contacts = ref([]); async function onCopy(value) { try { await clipBoard(value); renderMsg({ message: t("Copied successfully"), type: "success" }); } catch (error) { renderMsg({ message: t("Copied failure"), type: "error" }); } } const inviteInfoList = 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: getUrlWithRoomId(roomId.value), isShowCopyIcon: true, isVisible: isRoomLinkVisible.value && roomLinkConfig.visible }, { title: "Scheme", content: schemeLink.value, isShowCopyIcon: true, isVisible: isSchemeLinkVisible.value } ]); const displayedInviteInfoList = 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")}: ${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.conferenceInvitationManager.inviteUsers({ userIdList }); renderMsg({ type: "success", message: t("Invitation sent, waiting for members to join."), duration: MESSAGE_DURATION.NORMAL }); }; return { t, isRoomLinkVisible, roomId, origin, pathname, isElectron, inviteLink, schemeLink, inviteBarTitle, onCopy, displayedInviteInfoList, invitationFeatureDetails, showContacts, contactsConfirm, contacts, remoteEnteredUserList, isShowRoomShareForm, userId, userName, inviteInfoList, copyRoomIdAndRoomLink, sidebarName }; } export { useRoomInvite as default };