Newer
Older
dxCard-admin / electron / ipc / index.ts
YFJ on 23 Sep 1 KB 项目推送
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();
});