LOCKING盒子版
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. const ElectronStore = require('electron-store');
  2. const eStore = new ElectronStore();
  3. const PERSIST_KEY_NAME = '_persistKeys';
  4. const keyList = {
  5. add(key) {
  6. const keys = this.get();
  7. if (this.has(key)) {
  8. return;
  9. }
  10. keys.push(key);
  11. eStore.set(PERSIST_KEY_NAME, keys.join(','));
  12. },
  13. get() {
  14. return eStore
  15. .get(PERSIST_KEY_NAME, '')
  16. .split(',')
  17. .filter((a) => a);
  18. },
  19. has(key, keys) {
  20. return (keys || this.get()).find((iKey) => iKey === key);
  21. },
  22. remove(key) {
  23. const keys = this.get();
  24. eStore.set(PERSIST_KEY_NAME, keys.filter((iKey) => iKey !== key).join(','));
  25. },
  26. };
  27. const storage = {
  28. getItem(key) {
  29. return eStore.get(key);
  30. },
  31. setItem(key, value) {
  32. if (key === PERSIST_KEY_NAME) return;
  33. keyList.add(key);
  34. return eStore.set(key, value);
  35. },
  36. removeItem(key) {
  37. keyList.remove(key);
  38. return eStore.delete(key);
  39. },
  40. getAllItem() {
  41. const keys = keyList.get();
  42. const hash = {
  43. keyList: keys,
  44. };
  45. keys.forEach((key) => {
  46. hash[key] = eStore.get(key);
  47. });
  48. return hash;
  49. },
  50. };
  51. module.exports.storage = storage;
  52. module.exports.initialStorageEvents = function initialStorageEvents(ipcMain) {
  53. ipcMain.handle('storage:set', (_, { key, value }) => {
  54. storage.setItem(key, value);
  55. });
  56. ipcMain.handle('storage:remove', (_, { key }) => {
  57. storage.removeItem(key);
  58. });
  59. // ipcMain.handle('storage:getAll', () => {
  60. // return storage.getAllItem();
  61. // });
  62. };