const ElectronStore = require('electron-store'); const eStore = new ElectronStore(); const PERSIST_KEY_NAME = '_persistKeys'; const keyList = { add(key) { const keys = this.get(); if (this.has(key)) { return; } keys.push(key); eStore.set(PERSIST_KEY_NAME, keys.join(',')); }, get() { return eStore .get(PERSIST_KEY_NAME, '') .split(',') .filter((a) => a); }, has(key, keys) { return (keys || this.get()).find((iKey) => iKey === key); }, remove(key) { const keys = this.get(); eStore.set(PERSIST_KEY_NAME, keys.filter((iKey) => iKey !== key).join(',')); }, }; const storage = { getItem(key) { return eStore.get(key); }, setItem(key, value) { if (key === PERSIST_KEY_NAME) return; keyList.add(key); return eStore.set(key, value); }, removeItem(key) { keyList.remove(key); return eStore.delete(key); }, getAllItem() { const keys = keyList.get(); const hash = { keyList: keys, }; keys.forEach((key) => { hash[key] = eStore.get(key); }); return hash; }, }; module.exports.storage = storage; module.exports.initialStorageEvents = function initialStorageEvents(ipcMain) { ipcMain.handle('storage:set', (_, { key, value }) => { storage.setItem(key, value); }); ipcMain.handle('storage:remove', (_, { key }) => { storage.removeItem(key); }); // ipcMain.handle('storage:getAll', () => { // return storage.getAllItem(); // }); };