Switch to local storage and migrate old settings (#638)

This is a preparation for electron 14+, where electron-store is no longer
in a usable state (currently used version does not work due to remote module
removed in electron 14, latest version extends every app startup to 10 seconds).

Once sufficient migration period has passed, electron-store and
redux-persist-electron-storage and the ipc call introduced here
(electron-store-exists) can be removed.
This commit is contained in:
csett86 2021-09-20 10:40:27 +02:00 committed by GitHub
parent 9c13108eb3
commit 295ea6d1ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 2 deletions

View File

@ -1,14 +1,38 @@
// @flow // @flow
import { createStore } from 'redux'; import { createStore } from 'redux';
import { persistReducer } from 'redux-persist'; import { persistReducer, getStoredState } from 'redux-persist';
import storage from 'redux-persist/lib/storage'; // uses localStorage
import middleware from './middleware'; import middleware from './middleware';
import reducers from './reducers'; import reducers from './reducers';
const migrateFromElectronStore = async state => {
// migrate to local storage by checking if state is undefined
// (first launch or first launch after switch to local storage)
// and previous electron-store config.json exists.
if (state === undefined && window.jitsiNodeAPI.electronStoreExists) {
const electronStoreState = await getStoredState({
key: 'root',
storage: window.jitsiNodeAPI.createElectronStorage(),
debug: true
});
if ('onboarding' in electronStoreState) {
return electronStoreState;
}
}
return state;
};
const persistConfig = { const persistConfig = {
key: 'root', key: 'root',
storage: window.jitsiNodeAPI.createElectronStorage(),
// remove this and all electron-store-related dependencies end of 2021
// (3 months migration period from electron-store to local storage)
migrate: migrateFromElectronStore,
storage,
whitelist: [ whitelist: [
'onboarding', 'onboarding',
'recentList', 'recentList',

View File

@ -15,6 +15,7 @@ window.jitsiNodeAPI = {
openExternalLink, openExternalLink,
platform: process.platform, platform: process.platform,
jitsiMeetElectronUtils, jitsiMeetElectronUtils,
electronStoreExists: ipcRenderer.sendSync('electron-store-exists'),
ipc: { ipc: {
on: (channel, listener) => { on: (channel, listener) => {
if (!whitelistedIpcChannels.includes(channel)) { if (!whitelistedIpcChannels.includes(channel)) {

View File

@ -396,3 +396,7 @@ ipcMain.on('renderer-ready', () => {
.send('protocol-data-msg', protocolDataForFrontApp); .send('protocol-data-msg', protocolDataForFrontApp);
} }
}); });
ipcMain.on('electron-store-exists', event => {
event.returnValue = existsSync(path.join(app.getPath('userData'), 'config.json'));
});