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,

196 lines (195 loc) 7.62 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); const Vue = require("vue"); const TUIRoomEngine = require("@tencentcloud/tuiroom-engine-js"); const uikitBaseComponentVue3 = require("@tencentcloud/uikit-base-component-vue3"); const index = require("../../../../locales/index.js"); require("../../../../services/main.js"); const roomService = require("../../../../services/roomService.js"); require("../../../../utils/environment.js"); require("mitt"); require("../../../../services/manager/roomActionManager.js"); require("@tencentcloud/tui-core"); const message = require("../../../../constants/message.js"); const index$1 = require("../index.js"); const User = require("../../../type/User.js"); const useRoomEngine = require("../../../../hooks/useRoomEngine.js"); const { t } = index.useI18n(); const roomEngine = useRoomEngine.default(); const invitingUserOnSeatRequestObj = Vue.ref({}); function useInviteUserOnSeat(userInfo) { const { onSeatUserList } = index$1.default(); const invitingCurrentUserOnSeatRequest = Vue.computed(() => { return invitingUserOnSeatRequestObj.value[userInfo.userId]; }); async function toggleInviteUserOnSeat() { var _a, _b; if (invitingCurrentUserOnSeatRequest.value) { await ((_a = roomEngine.instance) == null ? void 0 : _a.cancelRequest({ requestId: invitingCurrentUserOnSeatRequest.value.requestId })); delete invitingUserOnSeatRequestObj.value[userInfo.userId]; } else { if (onSeatUserList.value.length === roomService.roomService.roomStore.maxSeatCount) { uikitBaseComponentVue3.TUIToast({ type: uikitBaseComponentVue3.TOAST_TYPE.WARNING, message: `${t("The stage is full")}`, duration: message.MESSAGE_DURATION.NORMAL }); return; } const request = await ((_b = roomEngine.instance) == null ? void 0 : _b.takeUserOnSeatByAdmin({ seatIndex: -1, userId: userInfo.userId, timeout: 60, requestCallback: (callbackInfo) => { const { requestCallbackType, code } = callbackInfo; delete invitingUserOnSeatRequestObj.value[userInfo.userId]; switch (requestCallbackType) { case TUIRoomEngine.TUIRequestCallbackType.kRequestAccepted: uikitBaseComponentVue3.TUIToast({ type: uikitBaseComponentVue3.TOAST_TYPE.SUCCESS, message: `${userInfo.displayName} ${t("accepted the invitation to the stage")}`, duration: message.MESSAGE_DURATION.NORMAL }); break; case TUIRoomEngine.TUIRequestCallbackType.kRequestRejected: uikitBaseComponentVue3.TUIToast({ type: uikitBaseComponentVue3.TOAST_TYPE.WARNING, message: `${userInfo.displayName} ${t("declined the invitation to the stage")}`, duration: message.MESSAGE_DURATION.NORMAL }); break; case TUIRoomEngine.TUIRequestCallbackType.kRequestTimeout: uikitBaseComponentVue3.TUIToast({ type: uikitBaseComponentVue3.TOAST_TYPE.WARNING, message: t( "The invitation to sb to go on stage has timed out", { name: userInfo.displayName } ), duration: message.MESSAGE_DURATION.NORMAL }); break; case TUIRoomEngine.TUIRequestCallbackType.kRequestError: if (code === TUIRoomEngine.TUIErrorCode.ERR_REQUEST_ID_REPEAT) { uikitBaseComponentVue3.TUIToast({ type: uikitBaseComponentVue3.TOAST_TYPE.WARNING, message: t( "This member has already received the same request, please try again later" ), duration: message.MESSAGE_DURATION.NORMAL }); } break; } } })); if (request && request.requestId) { invitingUserOnSeatRequestObj.value[userInfo.userId] = request; } } } const inviteUserOnSeat = Vue.reactive({ key: User.UserAction.InviteOnSeatAction, icon: Vue.computed( () => invitingCurrentUserOnSeatRequest.value ? uikitBaseComponentVue3.IconDenyOnStage : uikitBaseComponentVue3.IconInviteOnStage ), label: Vue.computed( () => invitingCurrentUserOnSeatRequest.value ? t("Cancel stage") : t("Invite stage") ), handler: toggleInviteUserOnSeat }); return inviteUserOnSeat; } function useAgreeUserOnSeat(userInfo) { const { seatApplicationRequestList } = index$1.default(); const onSeatRequest = Vue.computed(() => { return seatApplicationRequestList.value.find( (request) => request.userId === userInfo.userId ); }); const agreeUserOnSeat = Vue.reactive({ key: User.UserAction.AgreeOnSeatAction, icon: uikitBaseComponentVue3.IconOnStage, label: t("Agree to the stage"), handler: async () => { var _a; if (onSeatRequest.value) { try { await ((_a = roomEngine.instance) == null ? void 0 : _a.responseRemoteRequest({ requestId: onSeatRequest.value.requestId, agree: true })); } catch (error) { if (error.code === TUIRoomEngine.TUIErrorCode.ERR_ALL_SEAT_OCCUPIED) { uikitBaseComponentVue3.TUIToast({ type: uikitBaseComponentVue3.TOAST_TYPE.WARNING, message: t("The stage is full") }); } else { console.error("Failure to response a user request", error); } } } } }); return agreeUserOnSeat; } function useDenyUserOnSeat(userInfo) { const { seatApplicationRequestList } = index$1.default(); const onSeatRequest = Vue.computed(() => { return seatApplicationRequestList.value.find( (request) => request.userId === userInfo.userId ); }); const denyUserOnSeat = Vue.reactive({ key: User.UserAction.DenyOnSeatAction, icon: uikitBaseComponentVue3.IconDenyOnStage, label: t("Refuse stage"), handler: async () => { var _a; if (onSeatRequest.value) { try { await ((_a = roomEngine.instance) == null ? void 0 : _a.responseRemoteRequest({ requestId: onSeatRequest.value.requestId, agree: false })); } catch (error) { console.error("Failure to response a user request", error); } } } }); return denyUserOnSeat; } function useKickUserOffSeat(userInfo) { async function kickUserOffSeatByAdmin(userInfo2) { var _a; await ((_a = roomEngine.instance) == null ? void 0 : _a.kickUserOffSeatByAdmin({ seatIndex: -1, userId: userInfo2.userId })); } const kickUserOffSeat = Vue.reactive({ key: User.UserAction.KickOffSeatAction, icon: uikitBaseComponentVue3.IconOffStage, label: t("Step down"), handler: () => kickUserOffSeatByAdmin(userInfo) }); return kickUserOffSeat; } function useSeatAction(userInfo) { return { inviteUserOnSeat: useInviteUserOnSeat(userInfo), agreeUserOnSeat: useAgreeUserOnSeat(userInfo), denyUserOnSeat: useDenyUserOnSeat(userInfo), kickUserOffSeat: useKickUserOffSeat(userInfo) }; } exports.default = useSeatAction; exports.useAgreeUserOnSeat = useAgreeUserOnSeat; exports.useDenyUserOnSeat = useDenyUserOnSeat; exports.useInviteUserOnSeat = useInviteUserOnSeat; exports.useKickUserOffSeat = useKickUserOffSeat;