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