From 018c0c73c50f32e4ea022fd969e1caa27f6b8a19 Mon Sep 17 00:00:00 2001 From: haritabh-z01 Date: Sun, 6 Jul 2025 22:09:06 +0530 Subject: [PATCH] chore: handle opening docs and community via external shell --- apps/desktop/src/components/nav-secondary.tsx | 8 +++++++- apps/desktop/src/main/core/event-handlers.ts | 10 ++++++++++ apps/desktop/src/main/preload.ts | 3 +++ apps/desktop/src/types/electron-api.ts | 3 +++ 4 files changed, 23 insertions(+), 1 deletion(-) 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; }