This commit is contained in:
yj 2024-10-17 17:17:26 +08:00
parent 0776b93130
commit 78c1dd5026
4 changed files with 33 additions and 6 deletions

17
main.js
View File

@ -57,14 +57,17 @@ function showWindow() {
// 如果主窗口已经存在但被最小化了,则恢复显示
if (mainWindow && mainWindow.isMinimized()) {
mainWindow.show();
console.log(3);
}
// 如果主窗口已存在但不是焦点窗口,则将其置为焦点
if (mainWindow && !mainWindow.isFocused()) {
console.log(2);
mainWindow.show();
mainWindow.focus();
}
// 如果主窗口还没有被创建,则创建它
if (!mainWindow) {
console.log(1);
createWindow();
}
}
@ -80,7 +83,7 @@ function createTray() {
const contextMenu = Menu.buildFromTemplate([
{
label: '打开', click: () => {
showWindow()
mainWindow.webContents.send('isOpenWindows');
},
// icon: iconPath,
},
@ -108,11 +111,7 @@ function createTray() {
tray.setToolTip('智汇享');
tray.setContextMenu(contextMenu);
tray.on('click', () => {
if (mainWindow.isVisible()) {
mainWindow.hide()
} else {
mainWindow.show()
}
mainWindow.webContents.send('isOpenWindows');
});
}
@ -191,6 +190,7 @@ app.on('ready', () => {
break;
case 'show':
mainWindow.show()
mainWindow.focus();
break;
}
});
@ -202,6 +202,10 @@ app.on('ready', () => {
ipcMain.handle('getVersion', () => {
return app.getVersion();
});
// 获取窗口是否显示
ipcMain.handle('isVisible', () => {
return mainWindow.isVisible();
});
// 获取共享屏幕列表
ipcMain.handle('getSources', async () => {
return await desktopCapturer.getSources({
@ -327,6 +331,7 @@ app.on('ready', () => {
child.once('ready-to-show', () => {
childWindow[config.key].show()
childWindow[config.key].setAlwaysOnTop(true, 'pop-up-menu')
childWindow[config.key].setSkipTaskbar(true)
windowOperation(config)
})
child.webContents.on('before-input-event', (event, input) => {

View File

@ -21,6 +21,10 @@ window.electron = {
getVersion: () => {
return ipcRenderer.invoke('getVersion')
},
// 获取窗口是否显示
isVisible: () => {
return ipcRenderer.invoke('isVisible')
},
// 获取共享屏幕列表
getSources: () => {
return ipcRenderer.invoke('getSources')
@ -49,6 +53,10 @@ window.electron = {
quitAndInstall: (callback) => {
ipcRenderer.on('quitAndInstall', callback)
},
// 点击任务栏图标是否打开窗口
isOpenWindows: (callback) => {
ipcRenderer.on('isOpenWindows', callback)
},
// 通知下载最新的包
onDownload: (type) => {
ipcRenderer.invoke('updateDownload', type)

View File

@ -24,6 +24,7 @@ import ChatSmallWindow from "@/page/Meeting/ChatSmallWindow";
import ChatBigWindow from "@/page/Meeting/ChatBigWindow";
import CurrentSpeakUserWindow from "@/page/Meeting/CurrentSpeakUserWindow";
import NoticeWindow from "@/page/Meeting/NoticeWindow";
import { getKeyOpenChildWindow } from "./utils/package/public";
const fs = require('fs').promises;
const { exec } = require('child_process');
const App: React.FC = () => {
@ -105,6 +106,17 @@ const App: React.FC = () => {
window.electron.quitAndInstall(async (_e: any) => {
storage.setItem('quitMeeting', true)
})
window.electron.isOpenWindows(async (_e: any) => {
let bool = await window.electron.isVisible()
if (location.hash.indexOf('/meeting') === -1) {
window.electron.setViewStatus(bool ? 'hide' : 'show')
} else {
let shareScreenWindow = await getKeyOpenChildWindow('shareScreenWindow')
if (!shareScreenWindow) {
window.electron.setViewStatus(bool ? 'hide' : 'show')
}
}
})
}, [])
useEffect(() => {
window.electron.onUpdate((_e: any, data: any) => {

2
src/render.d.ts vendored
View File

@ -15,7 +15,9 @@ export interface IElectronAPI {
quit: (bool) => any;
downFile: (callBack: Function) => void;
quitAndInstall: (callBack: Function) => void;
isOpenWindows: (callBack: Function) => void;
getVersion: () => Promise<string>;
isVisible: () => Promise<string>;
setRegistry: (uuid: string) => any;
getRegistry: () => any;
createChildWindow: (config: any) => void;