This commit is contained in:
yj 2024-08-16 16:01:42 +08:00
parent 98d7911918
commit 17254b30fc
4 changed files with 26 additions and 12 deletions

View File

@ -17,7 +17,6 @@
box-sizing: border-box;
>div {
background: #FDC229;
border-radius: 6px;
padding: 4px;
display: flex;

View File

@ -122,7 +122,7 @@ const Meeting: React.FC = () => {
const [isShareUser, setIsShareUser] = useState<any>(null)
const [currentLookUserStatus, setCurrentLookUserStatus] = useState<0 | 1 | 2 | 3 | 4>(1)
let userInfo = JSON.parse(storage.getItem('user') as string)
const msgTips = '您不是管理员,无法开启此功能!'
const msgTips = '您不是管理员或主讲人,无法开启此功能!'
useEffect(() => {
let time = null as any;
setUser(userInfo)
@ -298,6 +298,13 @@ const Meeting: React.FC = () => {
break;
// 主讲人用户信息刷新
case 'ManagerRefresh':
if (item.uid === userInfo.uid) {
await agora.updateChannelMediaOptions(item.isRoomManager)
if (!item.isRoomManager) {
postOpenMicr(false, user.id)
postOpenCamera(false, user.id)
}
}
setAllUserListData('ManagerRefresh', item)
break;
}
@ -533,7 +540,7 @@ const Meeting: React.FC = () => {
setNoViewChatList(0)
break;
case '共享屏幕':
if (user.roleId === '1') {
if (getUserRoomInfo()) {
getDesktopCapturerVideo()
setIsSharedScreenModal(true)
} else {
@ -541,7 +548,7 @@ const Meeting: React.FC = () => {
}
break;
case '停止共享':
if (user.roleId === '1') {
if (getUserRoomInfo()) {
await agora.leaveChannelEx(userInfo.screenShareId)
agora.stopScreenCapture()
await allUserLook(userInfo.uid)
@ -725,7 +732,7 @@ const Meeting: React.FC = () => {
}
// 开关麦克风
const postOpenMicr = async (enableMicr: boolean, uid: string, isAll?: boolean): Promise<void> => {
if (user.roleId === '1') {
if (getUserRoomInfo()) {
if (isAll) {
await PostMuteAll({
roomNum: state.channelId,
@ -756,7 +763,7 @@ const Meeting: React.FC = () => {
}
// 开关视频
const postOpenCamera = async (enableCamera: boolean, uid: string): Promise<void> => {
if (user.roleId === '1') {
if (getUserRoomInfo()) {
let msg = '';
if (uid === user.uid) {
await agora.getVideoDeviceManager().then(res => {
@ -787,6 +794,14 @@ const Meeting: React.FC = () => {
// const changeSpeakerMode = (): void => {
// speakerModeModalRef.current.changeSpeakerMode()
// }
// 获取当前用户在房间的角色信息
const getUserRoomInfo = (): any => {
let userItem = roomUserList.find((item: any) => item.uid === user.uid)
if (userItem && (userItem.roleId === '1' || userItem.isRoomManager)) {
return userItem
}
return ''
}
// 获取当前模式样式
const getMeetingContentBodyLeftModeClass = (): string => {
switch (meetingMode) {
@ -1341,11 +1356,11 @@ const meetingContentUser = (item: any) => {
<div className={styles.meetingContentUser}>
<div className={styles.meetingContentUserName}>
{item.roleId === '1' || item.isRoomManager ?
<div>
<div style={{ background: item.roleId === '1' ? '#FDC229' : '#3F51B5' }}>
<img src={ImageUrl.icon32} alt="" />
</div> : null}
{!item.enableMicr ? <img src={item.enableMicr ? ImageUrl.icon22 : ImageUrl.icon22Active} alt="" /> : ''}
<span>{item.userName}</span>
<span>{item.userName}{item.roleId === '1' || item.isRoomManager ? item.roleId === '1' ? '(管理员)' : '(主讲人)' : ''}</span>
</div>
</div>
</>

View File

@ -189,12 +189,12 @@ const agora = {
joinChannel: async () => {
await rtcEngine.enableAudioVolumeIndication(100, 1, true)
await rtcEngine.joinChannel(option.token, option.channelId, option.uid);
await agora.updateChannelMediaOptions()
await agora.updateChannelMediaOptions(option.roleId === '1' ? true : false)
},
// 更新频道配置
updateChannelMediaOptions: async () => {
updateChannelMediaOptions: async (bool: boolean) => {
await rtcEngine.updateChannelMediaOptions({
clientRoleType: option.roleId === '1' ? ClientRoleType.ClientRoleBroadcaster : ClientRoleType.ClientRoleAudience, //用户角色 ClientRoleBroadcaster 主播 ClientRoleAudience 观众
clientRoleType: bool ? ClientRoleType.ClientRoleBroadcaster : ClientRoleType.ClientRoleAudience, //用户角色 ClientRoleBroadcaster 主播 ClientRoleAudience 观众
autoSubscribeAudio: true,//设置是否自动订阅所有音频流
autoSubscribeVideo: true,//设置是否自动订阅所有视频流
publishMicrophoneTrack: true,//设置是否发布麦克风采集到的音频

View File

@ -131,7 +131,7 @@ export const onSignalr = (callBack: Function) => {
user
})
});
// 管理员用户信息刷新
// 主讲人用户信息刷新
connection.on("ManagerRefresh", (user: any) => {
callBack({
key: 'ManagerRefresh',