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,

41 lines (40 loc) 1.81 kB
import { reactive, computed } from "vue"; import { TUIRole, TUIMediaDevice } from "@tencentcloud/tuiroom-engine-js"; import { IconRevokeAdmin, IconSetAdmin, TUIToast, TOAST_TYPE } from "@tencentcloud/uikit-base-component-vue3"; import useRoomEngine from "../../../../hooks/useRoomEngine.mjs"; import { useI18n } from "../../../../locales/index.mjs"; import { UserAction } from "../../../type/User.mjs"; const roomEngine = useRoomEngine(); const { t } = useI18n(); function useAdminAction(userInfo) { async function handleSetOrRevokeAdmin() { var _a, _b; const newRole = userInfo.userRole === TUIRole.kGeneralUser ? TUIRole.kAdministrator : TUIRole.kGeneralUser; await ((_a = roomEngine.instance) == null ? void 0 : _a.changeUserRole({ userId: userInfo.userId, userRole: newRole })); const tipMessage = newRole === TUIRole.kAdministrator ? `${t("sb has been set as administrator", { name: userInfo.displayName })}` : `${t("The administrator status of sb has been withdrawn", { name: userInfo.displayName })}`; TUIToast({ type: TOAST_TYPE.SUCCESS, message: tipMessage }); if (newRole === TUIRole.kGeneralUser && userInfo.hasScreenStream) { await ((_b = roomEngine.instance) == null ? void 0 : _b.closeRemoteDeviceByAdmin({ userId: userInfo.userId, device: TUIMediaDevice.kScreen })); } } const setOrRevokeAdmin = reactive({ key: UserAction.AdministratorAction, icon: computed( () => userInfo.userRole === TUIRole.kAdministrator ? IconRevokeAdmin : IconSetAdmin ), label: computed( () => userInfo.userRole === TUIRole.kAdministrator ? t("Remove administrator") : t("Set as administrator") ), handler: handleSetOrRevokeAdmin }); return setOrRevokeAdmin; } export { useAdminAction as default };