import { IpcRendererEvent, ipcRenderer, webFrame } from 'electron'; import Store from 'electron-store'; import type { TitleTheme } from '/@/renderer/types'; const store = new Store(); const set = ( property: string, value: string | Record | boolean | string[] | undefined, ) => { if (value === undefined) { store.delete(property); return; } store.set(`${property}`, value); }; const get = (property: string) => { return store.get(`${property}`); }; const restart = () => { ipcRenderer.send('app-restart'); }; const enableMediaKeys = () => { ipcRenderer.send('global-media-keys-enable'); }; const disableMediaKeys = () => { ipcRenderer.send('global-media-keys-disable'); }; const passwordGet = async (server: string): Promise => { return ipcRenderer.invoke('password-get', server); }; const passwordRemove = (server: string) => { ipcRenderer.send('password-remove', server); }; const passwordSet = async (password: string, server: string): Promise => { return ipcRenderer.invoke('password-set', password, server); }; const setZoomFactor = (zoomFactor: number) => { webFrame.setZoomFactor(zoomFactor / 100); }; const fontError = (cb: (event: IpcRendererEvent, file: string) => void) => { ipcRenderer.on('custom-font-error', cb); }; const themeSet = (theme: TitleTheme): void => { ipcRenderer.send('theme-set', theme); }; export const localSettings = { disableMediaKeys, enableMediaKeys, fontError, get, passwordGet, passwordRemove, passwordSet, restart, set, setZoomFactor, themeSet, }; export type LocalSettings = typeof localSettings;