@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
JavaScript
;
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;