From 8bd09d6f01c8ad286a203ae806340b935c23be6a Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Wed, 22 Jan 2025 15:20:50 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E8=BF=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 12 ++++++++-- src/page/Meeting/index.tsx | 46 +++++++++++++++++++++++++++++++++++--- src/utils/styles/App.scss | 8 +++++++ 3 files changed, 61 insertions(+), 5 deletions(-) diff --git a/main.js b/main.js index 37e4acf..2df114e 100644 --- a/main.js +++ b/main.js @@ -186,6 +186,7 @@ app.on('ready', () => { connection.off('SetDriver'); connection.off('ShowDriverList'); connection.off('ModifyNickName'); + connection.off('JoinChannelCallback'); } }); ipcMain.handle('onStop', (event) => { @@ -221,11 +222,11 @@ app.on('ready', () => { await connection.invoke(str, data.uid, data.driversJsonString) break; case 'joinChannel': - // 设置某个人的设备列表 + // 加入房间 await connection.invoke(str, data.roomNum, data.enableMicr, data.enableCamera, data.isRoomManager || false) break; case 'levelChannel': - // 设置某个人的设备列表 + // 退出房间 await connection.invoke(str, data.roomNum) break; } @@ -383,6 +384,13 @@ app.on('ready', () => { nickName }) }); + // 加入房间回调 + connection.on("JoinChannelCallback", (isSuccess) => { + mainWindow.webContents.send('onSignalr', { + key: 'JoinChannelCallback', + isSuccess, + }) + }); } }); // 放大缩小退出窗口 diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index a0a501e..ba7fb34 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -204,6 +204,7 @@ const Meeting: React.FC = () => { ]) const [roomUserItem, setRoomUserItem] = useState(null) const [isAdmin, setIsAdmin] = useState(0) + const [_socketRemberNumber, setSocketRemberNumber] = useState(0) const [api, contextHolder] = notification.useNotification({ stack: { threshold: 3 @@ -895,6 +896,47 @@ const Meeting: React.FC = () => { case 'ModifyNickName': setAllUserListData('ModifyNickName', item) break; + // 加入房间回调 + case 'JoinChannelCallback': + if (item.isSuccess) { + await getRoomUser() + } else { + setSocketRemberNumber(res => { + if (res >= 3) { + confirm({ + keyboard: false, + title: '提示', + icon: , + content: `加入房间失败!`, + centered: true, + okText: '退出', + wrapClassName: 'hideCancelText', + cancelText: '', + async onOk() { + leaveChannel() + }, + }) + } else { + setTimeout(() => { + async function setUserStatus(res: any) { + let userItem = res.find((item: any) => item.uid === userInfo.uid) + await window.electron.onInvoke('joinChannel', { + roomNum: state.channelId, + enableMicr: !storeDevice[0][0].active, + enableCamera: !storeDevice[0][1].active, + isRoomManager: userItem ? userItem.isRoomManager : false, + }) + } + setRoomUserList((res: any) => { + setUserStatus(res) + return res + }) + }, 3000); + } + return res >= 3 ? 3 : res++ + }) + } + break; } }) return () => { @@ -1947,9 +1989,8 @@ const Meeting: React.FC = () => { roomNum: state.channelId, enableMicr: !storeDevice[0][0].active, enableCamera: !storeDevice[0][1].active, - isRoomManager: userItem.isRoomManager + isRoomManager: userItem ? userItem.isRoomManager : false, }) - await getRoomUser() await getShowUser() if (userItem.isRoomManager) { await postOpenMicr(!storeDevice[0][0].active, userInfo.uid) @@ -2231,7 +2272,6 @@ const Meeting: React.FC = () => { enableMicr, enableCamera }) - await getRoomUser() } // 离开房间 const getLeave = async (): Promise => { diff --git a/src/utils/styles/App.scss b/src/utils/styles/App.scss index fd3b3be..e20cc05 100644 --- a/src/utils/styles/App.scss +++ b/src/utils/styles/App.scss @@ -409,4 +409,12 @@ $pagination-hover-background-color: #5575F2; .ant-rate .ant-rate-star-first, .ant-rate .ant-rate-star-second { color: gray; +} + +.hideCancelText { + .ant-modal-confirm-btns { + >button:nth-child(1){ + display: none; + } + } } \ No newline at end of file