diff --git a/main.js b/main.js index 68b5415..e80381f 100644 --- a/main.js +++ b/main.js @@ -202,6 +202,7 @@ app.on('ready', () => { connection.off('ExitSharedScreen'); connection.off('SetSpeaker'); connection.off('ReceivedOperation'); + connection.off('StopedSharedScreen'); } }); ipcMain.handle('onStop', (event) => { @@ -221,7 +222,7 @@ app.on('ready', () => { await connection.invoke(str, data.roomNum, data.msg) break; case 'sendOper': - await connection.invoke(str, data.roomNum, data.type) + await connection.invoke(str, data.roomNum, data.contentString) break; case 'getDrivers': // 获取某个人的设备列表 @@ -281,10 +282,10 @@ app.on('ready', () => { }) }); // 扩展操作 - connection.on("Operation", (type) => { + connection.on("Operation", (contentString) => { mainWindow.webContents.send('onSignalr', { key: 'Operation', - type + contentString }) }); // 移出会议 @@ -433,6 +434,13 @@ app.on('ready', () => { contentString }) }); + // 共享人取消共享屏幕 + connection.on("StopedSharedScreen", (ScreenShareId) => { + mainWindow.webContents.send('onSignalr', { + key: 'StopedSharedScreen', + ScreenShareId + }) + }); } }); // 放大缩小退出窗口 diff --git a/src/api/Meeting/index.ts b/src/api/Meeting/index.ts index 6446c30..e8c28a6 100644 --- a/src/api/Meeting/index.ts +++ b/src/api/Meeting/index.ts @@ -171,7 +171,11 @@ export const PostSharedScreen = (roomNum: string) => url: `/room/shared-screen?roomNum=${roomNum}`, method: 'post' }) - +export const PostStopSharedScreen = (roomNum: string) => + request({ + url: `/room/stop-shared-screen?roomNum=${roomNum}`, + method: 'post' + }) export const PostHomeVerLog = (data: any) => request({ url: `/home/ver-log`, diff --git a/src/assets/virtualBackground/1.png b/src/assets/virtualBackground/1.png index a29260e..2a33629 100644 Binary files a/src/assets/virtualBackground/1.png and b/src/assets/virtualBackground/1.png differ diff --git a/src/assets/virtualBackground/2.png b/src/assets/virtualBackground/2.png index 8a025ca..cb03828 100644 Binary files a/src/assets/virtualBackground/2.png and b/src/assets/virtualBackground/2.png differ diff --git a/src/assets/virtualBackground/3.png b/src/assets/virtualBackground/3.png index 4211d42..601e8a6 100644 Binary files a/src/assets/virtualBackground/3.png and b/src/assets/virtualBackground/3.png differ diff --git a/src/assets/virtualBackground/4.png b/src/assets/virtualBackground/4.png index 692d2fd..3140b71 100644 Binary files a/src/assets/virtualBackground/4.png and b/src/assets/virtualBackground/4.png differ diff --git a/src/assets/virtualBackground/5.png b/src/assets/virtualBackground/5.png index ec14085..1b71286 100644 Binary files a/src/assets/virtualBackground/5.png and b/src/assets/virtualBackground/5.png differ diff --git a/src/assets/virtualBackground/6.png b/src/assets/virtualBackground/6.png index c9dffc7..d733b8f 100644 Binary files a/src/assets/virtualBackground/6.png and b/src/assets/virtualBackground/6.png differ diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 1d1b98b..4f06cb4 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -8,7 +8,7 @@ import { SearchOutlined, EllipsisOutlined, ExclamationCircleFilled, FullscreenEx import { useLocation, useNavigate } from 'react-router-dom'; import { thumbImageBufferToBase64 } from '@/utils/package/base64' import { storage } from '@/utils'; -import { GetRoomUser, PostOpenMicr, GetSharedScreen, PostOpenCamera, GetLeaveAll, PostRoomManager, DeleteRoomManager, GetRoomKickout, GetShowUser, PostShowUser, PostMuteAll, GetRoomUserItem, GetApplySpeak, PostSharedScreen } from '@/api/Meeting'; +import { GetRoomUser, PostOpenMicr, GetSharedScreen, PostOpenCamera, GetLeaveAll, PostRoomManager, DeleteRoomManager, GetRoomKickout, GetShowUser, PostShowUser, PostMuteAll, GetRoomUserItem, GetApplySpeak, PostSharedScreen, PostStopSharedScreen } from '@/api/Meeting'; import ImageUrl from '@/utils/package/imageUrl' import { agora } from '@/utils/package/agora' import dayjs from 'dayjs'; @@ -723,7 +723,7 @@ const Meeting: React.FC = () => { break; // 扩展操作 case 'Operation': - switch (item.type) { + switch (item.contentString) { } break; @@ -1001,6 +1001,21 @@ const Meeting: React.FC = () => { } break; + // 共享人取消共享屏幕 + case 'StopedSharedScreen': + setRoomUserList((newChatList: any) => { + setActiveSpeaker(res => { + let item = newChatList.find((item: any) => item.uid === res) + if (item && item.isRoom && item.isAdmin) { + renderVideo(res) + } else { + getShowUser() + } + return res + }) + return newChatList + }) + break; } }) return () => { @@ -1164,37 +1179,42 @@ const Meeting: React.FC = () => { timer = '' } timer = setTimeout(() => { - setRoomUserList((res: any) => { - let userItem = res.find((item: any) => item.uid === userInfo.uid) - if (!role.ID.includes(userInfo.roleId) && userItem && userItem.isRoomManager) { - DeleteRoomManager({ - roomId: state.roomId, - roomNum: state.channelId, - userId: userInfo.uid - }) - confirm({ - title: '提示', - icon: , - content: `由于您长时间未发言,已自动取消发言权限,是否重新申请发言?`, - centered: true, - okText: '确定', - cancelText: '取消', - async onOk() { - GetApplySpeak(state.channelId).then(res => { - if (res.code === 200) { - setIsClicked(true); - message.success('申请发言成功') + setIsShare((req: any) => { + if (!req) { + setRoomUserList((res: any) => { + let userItem = res.find((item: any) => item.uid === userInfo.uid) + if (!role.ID.includes(userInfo.roleId) && userItem && userItem.isRoomManager) { + DeleteRoomManager({ + roomId: state.roomId, + roomNum: state.channelId, + userId: userInfo.uid + }) + confirm({ + title: '提示', + icon: , + content: `由于您长时间未发言,已自动取消发言权限,是否重新申请发言?`, + centered: true, + okText: '确定', + cancelText: '取消', + async onOk() { + GetApplySpeak(state.channelId).then(res => { + if (res.code === 200) { + setIsClicked(true); + message.success('申请发言成功') + } + }) + }, + onCancel() { + } }) - }, - onCancel() { - } + clearTimeout(timer) + timer = '' + return res }) } - clearTimeout(timer) - timer = '' - return res + return req }) }, 1000 * 60 * 5); } else { @@ -2084,18 +2104,7 @@ const Meeting: React.FC = () => { // 设置全员看谁 const allUserLook = async (uid: string, name: string, bool?: boolean): Promise => { if (bool) { - setRoomUserList((newChatList: any) => { - setActiveSpeaker(res => { - let item = newChatList.find((item: any) => item.uid === res) - if (item && item.isRoom && item.isAdmin) { - PostShowUser(state.channelId, item.uid, name) - } else { - PostShowUser(state.channelId, uid, name) - } - return res - }) - return newChatList - }) + await PostStopSharedScreen(state.channelId) } else { await PostShowUser(state.channelId, uid, name) } diff --git a/src/utils/package/agora.ts b/src/utils/package/agora.ts index c2f33a5..34bc2c1 100644 --- a/src/utils/package/agora.ts +++ b/src/utils/package/agora.ts @@ -446,8 +446,8 @@ export const agora = { startCameraCapture: async (bool: boolean = false) => { await rtcEngine.startCameraCapture(VideoSourceType.VideoSourceCamera, { format: { - width: bool ? 160 : 1280, - height: bool ? 160 : 720, + width: bool ? 160 : 1920, + height: bool ? 160 : 1080, fps: 15, } })