Ver a proveniência

'调整初始化localStorage数据方式,避免在preload中引用electron-store'

main
郑州 há 3 anos
ascendente
cometimento
df4356e587
4 ficheiros alterados com 25 adições e 23 eliminações
  1. +5
    -1
      electron/main.js
  2. +3
    -2
      electron/preload.js
  3. +8
    -4
      src/global.d.ts
  4. +9
    -16
      src/utils/storage.ts

+ 5
- 1
electron/main.js Ver ficheiro

@@ -1,7 +1,7 @@
const { app, BrowserWindow, dialog, ipcMain, shell } = require('electron'); const { app, BrowserWindow, dialog, ipcMain, shell } = require('electron');
const path = require('path'); const path = require('path');
const url = require('url'); const url = require('url');
const { initialStorageEvents } = require('./storage');
const { initialStorageEvents, storage } = require('./storage');


let mainWindow; let mainWindow;


@@ -44,6 +44,10 @@ function createWindow() {
}), }),
); );
} }
// 加载初始localStorage数据
mainWindow.webContents.on('did-finish-load', () => {
mainWindow.webContents.send('initialStorageData', storage.getAllItem());
});
mainWindow.on('closed', () => { mainWindow.on('closed', () => {
mainWindow = null; mainWindow = null;
}); });


+ 3
- 2
electron/preload.js Ver ficheiro

@@ -1,9 +1,10 @@
const electron = require('electron'); const electron = require('electron');
const { contextBridge, ipcRenderer } = electron; const { contextBridge, ipcRenderer } = electron;
const { storage } = require('./storage');


contextBridge.exposeInMainWorld('ipcRenderer', ipcRenderer); contextBridge.exposeInMainWorld('ipcRenderer', ipcRenderer);
contextBridge.exposeInMainWorld('initialStorage', storage.getAllItem());
contextBridge.exposeInMainWorld('addIpcRendererListener', (event, callback) => {
ipcRenderer.on(event, callback);
});


/** /**
* todo: * todo:


+ 8
- 4
src/global.d.ts Ver ficheiro

@@ -3,9 +3,13 @@ import { IpcRenderer } from 'electron';
declare global { declare global {
interface Window { interface Window {
ipcRenderer: IpcRenderer; ipcRenderer: IpcRenderer;
initialStorage?: {
keyList: string[];
[key: string]: any;
};
addIpcRendererListener(
eventName: string,
callback: (event: any, data: any) => void,
): void;
// initialStorage?: {
// keyList: string[];
// [key: string]: any;
// };
} }
} }

+ 9
- 16
src/utils/storage.ts Ver ficheiro

@@ -32,28 +32,21 @@ const storage = {
localStorage.setItem(key, tempStorage[key]); localStorage.setItem(key, tempStorage[key]);
}); });
}, },
init() {
if (window.initialStorage) {
const hash = window.initialStorage || {};
};

if (isClient && window.addIpcRendererListener) {
storage.clear();
window.addIpcRendererListener(
'initialStorageData',
(_, hash: { keyList?: string[]; [key: string]: any }) => {
const kList = hash.keyList || []; const kList = hash.keyList || [];


kList.forEach((key: string) => { kList.forEach((key: string) => {
keepSaveKeyMap.set(key, true); keepSaveKeyMap.set(key, true);
storage.set(key, hash[key]); storage.set(key, hash[key]);
}); });
}
},
};

if (window.initialStorage) {
storage.clear();
const hash = window.initialStorage || {};
const kList = hash.keyList || [];

kList.forEach((key: string) => {
keepSaveKeyMap.set(key, true);
storage.set(key, hash[key]);
});
},
);
} }


export default storage; export default storage;

Carregando…
Cancelar
Guardar