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