Expanding react-persist reducers to each have their own keys, seems to fix restoring/resetting

This commit is contained in:
James Barnsley
2020-12-19 21:16:57 +13:00
parent fc64f8df65
commit 924df5b7a6
6 changed files with 55 additions and 80 deletions

View File

@ -47,11 +47,17 @@ class Reset extends React.Component {
e.preventDefault();
const tasks = [];
const stateKeysToReset = [];
const stateKeys = ['mopidy', 'pusher', 'ui', 'spotify', 'snapcast', 'lastfm', 'genius'];
if (preferences) {
tasks.push(
new Promise((resolve) => {
const keysToRemove = ['persist:root', 'persist:ui', 'persist:spotify', 'persist:pusher'];
const keysToRemove = [];
stateKeys.forEach((key) => {
keysToRemove.push(`persist:${key}`);
stateKeysToReset.push(key);
});
keysToRemove.forEach((key, index) => {
localForage.removeItem(key).then(() => {
console.debug(`Removed ${key}`);
@ -67,8 +73,9 @@ class Reset extends React.Component {
tasks.push(
new Promise((resolve) => {
localForage.keys().then((keys) => {
const keysToKeep = ['persist:root', 'persist:ui', 'persist:spotify', 'persist:pusher'];
const keysToRemove = keys.filter((key) => keysToKeep.indexOf(key) < 0);
const keysToRemove = keys.filter(
(key) => !stateKeys.includes(key.replace('persist:', '')),
);
keysToRemove.forEach((key, index) => {
localForage.removeItem(key).then(() => {
console.debug(`Removed ${key}`);
@ -120,9 +127,9 @@ class Reset extends React.Component {
Promise.all(tasks).then(() => {
console.log('Reset complete, refreshing...');
resetState();
resetState(stateKeysToReset);
setTimeout(
() => window.location = `/iris${test_mode ? '?test_mode=0' : ''}`,
() => window.location = `/iris/settings${test_mode ? '?test_mode=0' : ''}`,
1000,
);
});