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,

48 lines (41 loc) 1.48 kB
import { computed, ref } from 'vue'; import { UserInfo, useRoomStore } from '../../../stores/room'; import { storeToRefs } from 'pinia'; import { TUIRole } from '@tencentcloud/tuiroom-engine-js'; // The user ID that needs to display the operation panel const showUserId = ref(''); export default function useMemberItem(userInfo: UserInfo) { const roomStore = useRoomStore(); const { isMaster, isAdmin } = storeToRefs(roomStore); // Does the current user have permission to operate const isCanOperateCurrentMember = computed(() => { const isTargetUserRoomOwner = userInfo.userRole === TUIRole.kRoomOwner; const isTargetUserGeneral = userInfo.userRole === TUIRole.kGeneralUser; const isTargetUserMySelf = userInfo.userId === roomStore.localUser.userId; return ( (isMaster.value && !isTargetUserRoomOwner) || (isAdmin.value && isTargetUserGeneral) || isTargetUserMySelf ); }); const isCanOperateMySelf = computed(() => { return userInfo.userId === roomStore.localUser.userId; }); const isMemberControlAccessible = computed( () => userInfo.userId === showUserId.value && (isCanOperateMySelf.value || isCanOperateCurrentMember.value) ); function openMemberControl() { showUserId.value = userInfo.userId; } function closeMemberControl() { showUserId.value = ''; } return { isMemberControlAccessible, openMemberControl, closeMemberControl, isCanOperateMySelf, }; }