refactor: Remove electron-store to be ready for electron 14+ (#668)

Release this ~3 months after 2.9.0 was released (21 Sep 2021) so
that users had 3 months to migrate to local storage

Signed-off-by: Christoph Settgast <csett86@web.de>
This commit is contained in:
csett86 2021-12-01 11:33:34 +01:00 committed by GitHub
parent e5a93e89e4
commit 94f39ce107
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 325 additions and 254 deletions

View File

@ -1,37 +1,14 @@
// @flow // @flow
import { createStore } from 'redux'; import { createStore } from 'redux';
import { persistReducer, getStoredState } from 'redux-persist'; import { persistReducer } from 'redux-persist';
import storage from 'redux-persist/lib/storage'; // uses localStorage 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',
// remove this and all electron-store-related dependencies end of 2021
// (3 months migration period from electron-store to local storage)
migrate: migrateFromElectronStore,
storage, storage,
whitelist: [ whitelist: [
'onboarding', 'onboarding',

View File

@ -1,6 +1,5 @@
/* global process */ /* global process */
const createElectronStorage = require('redux-persist-electron-storage');
const { ipcRenderer } = require('electron'); const { ipcRenderer } = require('electron');
const os = require('os'); const os = require('os');
const jitsiMeetElectronUtils = require('@jitsi/electron-sdk'); const jitsiMeetElectronUtils = require('@jitsi/electron-sdk');
@ -10,12 +9,10 @@ const { openExternalLink } = require('../features/utils/openExternalLink');
const whitelistedIpcChannels = [ 'protocol-data-msg', 'renderer-ready' ]; const whitelistedIpcChannels = [ 'protocol-data-msg', 'renderer-ready' ];
window.jitsiNodeAPI = { window.jitsiNodeAPI = {
createElectronStorage,
osUserInfo: os.userInfo, osUserInfo: os.userInfo,
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

@ -399,7 +399,3 @@ 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'));
});

545
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -167,7 +167,6 @@
"electron-log": "^4.3.2", "electron-log": "^4.3.2",
"electron-notarize": "1.1.1", "electron-notarize": "1.1.1",
"electron-react-devtools": "0.5.3", "electron-react-devtools": "0.5.3",
"electron-store": "^5.2.0",
"electron-updater": "^4.3.9", "electron-updater": "^4.3.9",
"electron-window-state": "^5.0.3", "electron-window-state": "^5.0.3",
"eslint": "6.5.1", "eslint": "6.5.1",
@ -192,7 +191,6 @@
"redux": "^4.0.5", "redux": "^4.0.5",
"redux-logger": "^3.0.6", "redux-logger": "^3.0.6",
"redux-persist": "^5.10.0", "redux-persist": "^5.10.0",
"redux-persist-electron-storage": "^2.1.0",
"source-map-support": "^0.5.19", "source-map-support": "^0.5.19",
"style-loader": "1.1.3", "style-loader": "1.1.3",
"styled-components": "^3.4.10", "styled-components": "^3.4.10",