diff --git a/main.js b/main.js index f5fecb8..1ea14d0 100644 --- a/main.js +++ b/main.js @@ -24,6 +24,7 @@ const cancellationToken = new CancellationToken() app.allowRendererProcessReuse = false; let mainWindow = null; let childWindow = {} +let customizeChildWindow = {} let isMaximized = false; let env = 'development'; //development production xy let regKey; @@ -624,6 +625,48 @@ app.on('ready', () => { }) }); }); + // 创建自定义子窗口 + ipcMain.handle('customizeCreateChildWindow', (event, config) => { + if (config.open) { + customizeChildWindow[config.key].show() + customizeChildWindow[config.key].focus() + } else { + const customizeChild = new BrowserWindow({ + webPreferences: { + contextIsolation: false, + nodeIntegration: true, + enableRemoteModule: true, + nodeIntegrationInWorker: true, + allowMediaDevices: true, + }, + frame: true, + width: config.width, + height: config.height, + minWidth: config.width, + minHeight: config.height, + title: '会议监控', + }) + customizeChildWindow[config.key] = customizeChild; + customizeChild.loadURL(config.url) + customizeChild.once('ready-to-show', () => { + customizeChild.show() + customizeChild.setMenuBarVisibility(false) + }) + customizeChild.on('close', () => { + customizeChildWindow[config.key] = null + }) + } + }) + // 判断自定义窗口是否打开 + ipcMain.handle('isCustomizeCreateChildOpen', (event, key) => { + return customizeChildWindow[key] ? true : false + }) + // 关闭自定义窗口 + ipcMain.handle('closeCustomizeCreateChildWindow', (event, key) => { + if (customizeChildWindow[key]) { + customizeChildWindow[key].close() + } + }) // 创建子窗口 ipcMain.handle('createChildWindow', (event, config) => { const child = new BrowserWindow({ diff --git a/preload.js b/preload.js index 34b5281..d504511 100644 --- a/preload.js +++ b/preload.js @@ -123,6 +123,18 @@ window.electron = { setRegistry: (uuid) => { ipcRenderer.invoke('setRegistry', uuid) }, + // 创建自定义子窗口 + customizeCreateChildWindow: (config) => { + ipcRenderer.invoke('customizeCreateChildWindow', config) + }, + // 判断自定义窗口是否打开 + isCustomizeCreateChildOpen: (key) => { + return ipcRenderer.invoke('isCustomizeCreateChildOpen', key) + }, + // 关闭自定义窗口 + closeCustomizeCreateChildWindow: (key) => { + ipcRenderer.invoke('closeCustomizeCreateChildWindow', key) + }, // 创建子窗口 createChildWindow: (str) => { switch (str) { diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 13fd135..eff8d53 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -2007,12 +2007,20 @@ const Meeting: React.FC = () => { } break; case '会议监控': - - window.open( - location.hostname.includes('meeting-api.23544.com') ? - `http://192.168.2.9:8828?uid=${Number('1' + userInfo.screenShareId)}&channel=${state.channelId}&token=${userInfo.token}` : - `http://192.168.2.9:8828?uid=${Number('1' + userInfo.screenShareId)}&channel=${state.channelId}&token=${userInfo.token}` - ) + window.electron.isCustomizeCreateChildOpen('meetingMonitoring').then((req: boolean) => { + window.electron.getWindowSize().then((res: any) => { + window.electron.customizeCreateChildWindow({ + url: location.hostname.includes('meeting-api.23544.com') ? + `http://192.168.2.9:8828?uid=${Number('1' + userInfo.screenShareId)}&channel=${state.channelId}&token=${userInfo.token}` : + `http://192.168.2.9:8828?uid=${Number('1' + userInfo.screenShareId)}&channel=${state.channelId}&token=${userInfo.token}`, + key: 'meetingMonitoring', + title: '会议监控', + width: Math.ceil(res.width / 1.5), + height: Math.ceil(res.height / 1.3), + open: req, + }) + }) + }) break; case '签到': singInRef.current.changeModal() diff --git a/src/render.d.ts b/src/render.d.ts index b25715f..bd36096 100644 --- a/src/render.d.ts +++ b/src/render.d.ts @@ -32,6 +32,9 @@ export interface IElectronAPI { setRegistry: (uuid: string) => any; getRegistry: () => any; createChildWindow: (str: string) => void; + isCustomizeCreateChildOpen: (str: string) => Promise; + closeCustomizeCreateChildWindow: (str: string) => void; + customizeCreateChildWindow: (config: any) => void; setChildWindow: (config: any) => void; setChildWindowShow: (config: any) => void; closeChildWindow: (key: string) => void; diff --git a/src/utils/package/agora.ts b/src/utils/package/agora.ts index 72728c1..5783ed2 100644 --- a/src/utils/package/agora.ts +++ b/src/utils/package/agora.ts @@ -292,6 +292,7 @@ export const agora = { }) agora.stopScreenCapture() agora.release() + window.electron.closeCustomizeCreateChildWindow('meetingMonitoring') }, // 加入频道 joinChannel: async () => {