46 lines
1.6 KiB
JavaScript
46 lines
1.6 KiB
JavaScript
const { contextBridge, ipcRenderer } = require('electron');
|
|
|
|
contextBridge.exposeInMainWorld('electronAPI', {
|
|
// Accept an optional apiKey argument so the renderer can pass a stored key from localStorage
|
|
generateAvatar: (prompt, apiKey) => ipcRenderer.invoke('generate-avatar', prompt, apiKey)
|
|
});
|
|
|
|
|
|
contextBridge.exposeInMainWorld('electronLog', {
|
|
info: (msg) => ipcRenderer.send('renderer-log', { level: 'info', msg }),
|
|
warn: (msg) => ipcRenderer.send('renderer-log', { level: 'warn', msg }),
|
|
error: (msg) => ipcRenderer.send('renderer-log', { level: 'error', msg }),
|
|
});
|
|
|
|
try {
|
|
ipcRenderer.send('renderer-log', { level: 'info', msg: 'preload loaded' });
|
|
} catch (e) {
|
|
}
|
|
|
|
try {
|
|
const forward = (level, args) => {
|
|
try {
|
|
const msg = args.map(a => {
|
|
try { return typeof a === 'string' ? a : JSON.stringify(a); } catch (e) { return String(a); }
|
|
}).join(' ');
|
|
ipcRenderer.send('renderer-log', { level, msg });
|
|
} catch (e) { }
|
|
};
|
|
|
|
const origError = console.error.bind(console);
|
|
console.error = (...args) => { forward('error', args); origError(...args); };
|
|
|
|
const origWarn = console.warn.bind(console);
|
|
console.warn = (...args) => { forward('warn', args); origWarn(...args); };
|
|
|
|
const origLog = console.log.bind(console);
|
|
console.log = (...args) => { forward('info', args); origLog(...args); };
|
|
|
|
// DOM snapshot logging removed — keep console forwarding only.
|
|
|
|
window.addEventListener('error', (ev) => {
|
|
try { ipcRenderer.send('renderer-log', { level: 'error', msg: `window.onerror: ${ev.message} ${ev.filename}:${ev.lineno}:${ev.colno}` }); } catch (e) {}
|
|
});
|
|
} catch (e) {
|
|
}
|