| |
| |
| |
| |
| |
| |
|
|
| import { contextBridge, ipcRenderer, OpenDialogOptions, SaveDialogOptions } from 'electron'; |
| import { createLogger } from '@automaker/utils/logger'; |
| import { IPC_CHANNELS } from './electron/ipc/channels'; |
|
|
| const logger = createLogger('Preload'); |
|
|
| |
| contextBridge.exposeInMainWorld('electronAPI', { |
| |
| platform: process.platform, |
| isElectron: true, |
|
|
| |
| ping: (): Promise<string> => ipcRenderer.invoke(IPC_CHANNELS.PING), |
|
|
| |
| getServerUrl: (): Promise<string> => ipcRenderer.invoke(IPC_CHANNELS.SERVER.GET_URL), |
|
|
| |
| getApiKey: (): Promise<string | null> => ipcRenderer.invoke(IPC_CHANNELS.AUTH.GET_API_KEY), |
|
|
| |
| isExternalServerMode: (): Promise<boolean> => |
| ipcRenderer.invoke(IPC_CHANNELS.AUTH.IS_EXTERNAL_SERVER_MODE), |
|
|
| |
| openDirectory: (): Promise<Electron.OpenDialogReturnValue> => |
| ipcRenderer.invoke(IPC_CHANNELS.DIALOG.OPEN_DIRECTORY), |
| openFile: (options?: OpenDialogOptions): Promise<Electron.OpenDialogReturnValue> => |
| ipcRenderer.invoke(IPC_CHANNELS.DIALOG.OPEN_FILE, options), |
| saveFile: (options?: SaveDialogOptions): Promise<Electron.SaveDialogReturnValue> => |
| ipcRenderer.invoke(IPC_CHANNELS.DIALOG.SAVE_FILE, options), |
|
|
| |
| openExternalLink: (url: string): Promise<{ success: boolean; error?: string }> => |
| ipcRenderer.invoke(IPC_CHANNELS.SHELL.OPEN_EXTERNAL, url), |
| openPath: (filePath: string): Promise<{ success: boolean; error?: string }> => |
| ipcRenderer.invoke(IPC_CHANNELS.SHELL.OPEN_PATH, filePath), |
| openInEditor: ( |
| filePath: string, |
| line?: number, |
| column?: number |
| ): Promise<{ success: boolean; error?: string }> => |
| ipcRenderer.invoke(IPC_CHANNELS.SHELL.OPEN_IN_EDITOR, filePath, line, column), |
|
|
| |
| getPath: (name: string): Promise<string> => ipcRenderer.invoke(IPC_CHANNELS.APP.GET_PATH, name), |
| getVersion: (): Promise<string> => ipcRenderer.invoke(IPC_CHANNELS.APP.GET_VERSION), |
| isPackaged: (): Promise<boolean> => ipcRenderer.invoke(IPC_CHANNELS.APP.IS_PACKAGED), |
|
|
| |
| updateMinWidth: (sidebarExpanded: boolean): Promise<void> => |
| ipcRenderer.invoke(IPC_CHANNELS.WINDOW.UPDATE_MIN_WIDTH, sidebarExpanded), |
|
|
| |
| quit: (): Promise<void> => ipcRenderer.invoke(IPC_CHANNELS.APP.QUIT), |
| }); |
|
|
| logger.info('Electron API exposed (TypeScript)'); |
|
|