80 lines
2.4 KiB
JavaScript
80 lines
2.4 KiB
JavaScript
const { contextBridge, ipcRenderer } = require('electron');
|
|
|
|
const changedHandlers = [];
|
|
|
|
ipcRenderer.on('settings', (e, method, setting, newValue) => {
|
|
if (method === 'changed') {
|
|
for (const handler of changedHandlers) {
|
|
try {
|
|
handler(setting, newValue);
|
|
} catch (err) {
|
|
console.error('Error in settings changed handler:', err);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
contextBridge.exposeInMainWorld('api', {
|
|
settings: {
|
|
has(setting) {
|
|
return ipcRenderer.invoke('settings', 'has', setting);
|
|
},
|
|
set(setting, value) {
|
|
return ipcRenderer.invoke('settings', 'set', setting, value);
|
|
},
|
|
unset(setting) {
|
|
return ipcRenderer.invoke('settings', 'unset', setting);
|
|
},
|
|
get(setting) {
|
|
return ipcRenderer.invoke('settings', 'get', setting);
|
|
},
|
|
changed(callback) {
|
|
if (typeof callback === 'function') {
|
|
changedHandlers.push(callback);
|
|
} else {
|
|
console.warn('api.settings.changed: callback is not a function');
|
|
}
|
|
}
|
|
},
|
|
trayService: {
|
|
showEnvelope() {
|
|
return ipcRenderer.invoke('trayService', 'showEnvelope');
|
|
},
|
|
hideEnvelope() {
|
|
return ipcRenderer.invoke('trayService', 'hideEnvelope');
|
|
}
|
|
},
|
|
keytar: {
|
|
getPassword(service, login) {
|
|
return ipcRenderer.invoke('keytar', 'getPassword', service, login);
|
|
},
|
|
setPassword(service, login, password) {
|
|
return ipcRenderer.invoke('keytar', 'setPassword', service, login, password);
|
|
},
|
|
deletePassword(service, login) {
|
|
return ipcRenderer.invoke('keytar', 'deletePassword', service, login);
|
|
}
|
|
},
|
|
app: {
|
|
quit() {
|
|
ipcRenderer.send('app-quit');
|
|
}
|
|
}
|
|
});
|
|
|
|
window.addEventListener('wheel', (event) => {
|
|
if (event.ctrlKey) {
|
|
ipcRenderer.send(event.deltaY > 0 ? 'increaseZoom' : 'decreaseZoom');
|
|
}
|
|
});
|
|
|
|
window.addEventListener('keydown', (event) => {
|
|
if (event.ctrlKey) {
|
|
if (event.key === '+' || event.key === '=') {
|
|
ipcRenderer.send('increaseZoom');
|
|
} else if (event.key === '-') {
|
|
ipcRenderer.send('decreaseZoom');
|
|
}
|
|
}
|
|
});
|