@@ -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; | ||||
}); | }); | ||||
@@ -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: | ||||
@@ -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; | |||||
// }; | |||||
} | } | ||||
} | } |
@@ -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; |