38 lines
1.5 KiB
JavaScript
38 lines
1.5 KiB
JavaScript
const { contextBridge, ipcRenderer } = require('electron');
|
|
|
|
console.log('Preload script loaded');
|
|
|
|
// Expose protected methods that allow the renderer process to use
|
|
// the ipcRenderer without exposing the entire object
|
|
contextBridge.exposeInMainWorld('electronAPI', {
|
|
// App info
|
|
getAppVersion: () => ipcRenderer.invoke('get-app-version'),
|
|
getPlatform: () => ipcRenderer.invoke('get-platform'),
|
|
|
|
// Server configuration
|
|
getServerConfig: () => ipcRenderer.invoke('get-server-config'),
|
|
saveServerConfig: (config) => ipcRenderer.invoke('save-server-config', config),
|
|
testServerConnection: (serverUrl) => ipcRenderer.invoke('test-server-connection', serverUrl),
|
|
|
|
// File dialogs
|
|
showSaveDialog: (options) => ipcRenderer.invoke('show-save-dialog', options),
|
|
showOpenDialog: (options) => ipcRenderer.invoke('show-open-dialog', options),
|
|
|
|
// Update events
|
|
onUpdateAvailable: (callback) => ipcRenderer.on('update-available', callback),
|
|
onUpdateDownloaded: (callback) => ipcRenderer.on('update-downloaded', callback),
|
|
|
|
// Utility
|
|
removeAllListeners: (channel) => ipcRenderer.removeAllListeners(channel),
|
|
isElectron: true,
|
|
isDev: process.env.NODE_ENV === 'development',
|
|
|
|
// Generic invoke method
|
|
invoke: (channel, ...args) => ipcRenderer.invoke(channel, ...args)
|
|
});
|
|
|
|
// Also set the legacy IS_ELECTRON flag for backward compatibility
|
|
window.IS_ELECTRON = true;
|
|
|
|
console.log('electronAPI exposed to window');
|