diff --git a/apps/desktop/src/components/nav-secondary.tsx b/apps/desktop/src/components/nav-secondary.tsx index 249f619..4557a35 100644 --- a/apps/desktop/src/components/nav-secondary.tsx +++ b/apps/desktop/src/components/nav-secondary.tsx @@ -34,7 +34,13 @@ export function NavSecondary({ onNavigate?.(item)} + onClick={async () => { + if (item.external && item.url) { + await window.electronAPI.openExternal(item.url); + } else { + onNavigate?.(item); + } + }} > {item.title} diff --git a/apps/desktop/src/main/core/event-handlers.ts b/apps/desktop/src/main/core/event-handlers.ts index e75238b..33df47e 100644 --- a/apps/desktop/src/main/core/event-handlers.ts +++ b/apps/desktop/src/main/core/event-handlers.ts @@ -1,6 +1,7 @@ import { HelperEvent } from "@amical/types"; import { AppManager } from "./app-manager"; import { logger } from "../logger"; +import { ipcMain, shell } from "electron"; export class EventHandlers { private appManager: AppManager; @@ -11,6 +12,7 @@ export class EventHandlers { setupEventHandlers(): void { this.setupSwiftBridgeEventHandlers(); + this.setupGeneralIPCHandlers(); // Note: Audio IPC handlers are now managed by RecordingService } @@ -43,4 +45,12 @@ export class EventHandlers { logger.main.warn("Swift bridge not available for event handlers"); } } + + private setupGeneralIPCHandlers(): void { + // Handle opening external links + ipcMain.handle("open-external", async (event, url: string) => { + await shell.openExternal(url); + logger.main.debug("Opening external URL", { url }); + }); + } } diff --git a/apps/desktop/src/main/preload.ts b/apps/desktop/src/main/preload.ts index 8218466..be525cb 100644 --- a/apps/desktop/src/main/preload.ts +++ b/apps/desktop/src/main/preload.ts @@ -130,6 +130,9 @@ const api: ElectronAPI = { ipcRenderer.invoke("log-message", "debug", name, ...args), }), }, + + // External link handling + openExternal: (url: string) => ipcRenderer.invoke("open-external", url), }; contextBridge.exposeInMainWorld("electronAPI", api); diff --git a/apps/desktop/src/types/electron-api.ts b/apps/desktop/src/types/electron-api.ts index 5752ed9..5b8f943 100644 --- a/apps/desktop/src/types/electron-api.ts +++ b/apps/desktop/src/types/electron-api.ts @@ -65,4 +65,7 @@ export interface ElectronAPI { debug: (...args: any[]) => void; }; }; + + // External link handling + openExternal: (url: string) => Promise; }