mirror of https://github.com/jeecgboot/jeecg-boot
44 lines
1.4 KiB
Vue
44 lines
1.4 KiB
Vue
import { Tray, ipcMain, BrowserWindow, app, Notification } from 'electron';
|
|
import type { NotificationConstructorOptions, IpcMainInvokeEvent } from 'electron';
|
|
import { openInBrowser } from '../utils';
|
|
import { omit } from 'lodash-es';
|
|
|
|
ipcMain.on('open-in-browser', (event: IpcMainInvokeEvent, url: string) => openInBrowser(url));
|
|
// 处理任务栏闪烁
|
|
ipcMain.on('notify-flash', (event: IpcMainInvokeEvent, count: number = 0) => {
|
|
const win = BrowserWindow.getAllWindows()[0];
|
|
if (!win) return;
|
|
if (win.isFocused()) return;
|
|
if (process.platform === 'win32') {
|
|
// windows
|
|
win.flashFrame(true);
|
|
} else if (process.platform === 'darwin') {
|
|
// Mac
|
|
if (app.dock) {
|
|
app.dock.bounce('informational');
|
|
// 设置角标(未读消息)
|
|
if (count > 0) {
|
|
app.dock.setBadge(count.toString());
|
|
} else {
|
|
app.dock.setBadge('');
|
|
}
|
|
}
|
|
}
|
|
});
|
|
// 通知 (点击通知打开指定页面)
|
|
ipcMain.on('notify-with-path', (event: IpcMainInvokeEvent, options: NotificationConstructorOptions & { path: string }) => {
|
|
const win = BrowserWindow.getAllWindows()[0];
|
|
if (!win) return;
|
|
if (win.isFocused()) return;
|
|
const notification = new Notification({
|
|
...omit(options, 'path'),
|
|
});
|
|
notification.on('click', () => {
|
|
if (win.isMinimized()) win.restore();
|
|
win.show();
|
|
win.focus();
|
|
// win.webContents.send('navigate-to', options.path);
|
|
});
|
|
notification.show();
|
|
});
|