API/Client-Server/preload.js

34 lines
1.4 KiB
JavaScript

console.log('[PRELOAD] Preload script starting');
const { contextBridge, ipcRenderer } = require('electron');
console.log('[PRELOAD] Electron modules imported successfully');
// Expose protected methods that allow the renderer process to use
// the ipcRenderer without exposing the entire object
try {
contextBridge.exposeInMainWorld('electronAPI', {
// Window controls
minimizeWindow: () => ipcRenderer.send('minimize-window'),
closeWindow: () => ipcRenderer.send('close-window'),
toggleFullscreen: () => ipcRenderer.send('toggle-fullscreen'),
// Logging
log: (level, message, data) => ipcRenderer.send('log-message', { level, message, data }),
// Save operations
createSaveFolders: (saveSlots) => ipcRenderer.invoke('create-save-folders', saveSlots),
testFileAccess: (slotPath) => ipcRenderer.invoke('test-file-access', slotPath),
saveGame: (slot, saveData) => ipcRenderer.invoke('save-game', slot, saveData),
loadGame: (slot) => ipcRenderer.invoke('load-game', slot),
// System operations
getPath: (name) => ipcRenderer.invoke('get-path', name)
});
console.log('[PRELOAD] electronAPI exposed via contextBridge successfully');
} catch (error) {
console.error('[PRELOAD] Failed to expose electronAPI:', error);
console.error('[PRELOAD] Error stack:', error.stack);
}