All files / app/main register-context-menus.ts

0% Statements 0/13
0% Branches 0/2
0% Functions 0/4
0% Lines 0/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27                                                     
/* eslint-disable @typescript-eslint/no-unsafe-argument */
import { Menu, ipcMain, clipboard, BrowserWindow } from 'electron';
 
export function registerIpcContextMenuHandlers(window: BrowserWindow) {
  //
  // TODO: refactor to be more generic
  // There's a bug where click handler doesn't fire for the top-level menu
  ipcMain.on(
    'context-menu-open',
    (
      _e,
      args: { menuItems: { menu: Electron.MenuItemConstructorOptions; textToCopy?: string }[] }
    ) => {
      const copyMenu = args.menuItems.map(item => {
        const newItem = { ...item };
        Iif (newItem.textToCopy) {
          newItem.menu.click = () => clipboard.writeText(newItem.textToCopy as any);
        }
        return newItem.menu;
      });
      const contextMenu = Menu.buildFromTemplate(copyMenu);
      const win = window.getParentWindow();
      Iif (win) contextMenu.popup({ window: win });
    }
  );
}