diff --git a/package-lock.json b/package-lock.json index 1842396..755b4f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5548,11 +5548,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" }, - "lodash-es": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.14.tgz", - "integrity": "sha512-7zchRrGa8UZXjD/4ivUWP1867jDkhzTG2c/uj739utSd7O/pFFdxspCemIFKEEjErbcqRzn8nKnGsi7mvTgRPA==" - }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -7691,14 +7686,9 @@ } }, "redux-persist": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-4.10.2.tgz", - "integrity": "sha512-U+e0ieMGC69Zr72929iJW40dEld7Mflh6mu0eJtVMLGfMq/aJqjxUM1hzyUWMR1VUyAEEdPHuQmeq5ti9krIgg==", - "requires": { - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.4", - "lodash-es": "^4.17.4" - } + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-5.10.0.tgz", + "integrity": "sha512-sSJAzNq7zka3qVHKce1hbvqf0Vf5DuTVm7dr4GtsqQVOexnrvbV47RWFiPxQ8fscnyiuWyD2O92DOxPl0tGCRg==" }, "redux-persist-filesystem-storage": { "version": "1.4.0", diff --git a/package.json b/package.json index 11da733..bcdeb55 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "react-navigation-redux-helpers": "^3.0.2", "react-redux": "^5.0.3", "redux": "^4.0.4", - "redux-persist": "^4.10.2", + "redux-persist": "^5.10.0", "redux-persist-filesystem-storage": "^1.3.2", "redux-persist-transform-compress": "^4.2.0", "redux-persist-transform-filter": "0.0.18", diff --git a/src/index.js b/src/index.js index 779f585..c35c75a 100644 --- a/src/index.js +++ b/src/index.js @@ -24,13 +24,14 @@ import { syncReducer, userReducer, } from 'lbryinc'; -import { createStore, applyMiddleware, compose, combineReducers } from 'redux'; +import { createStore, applyMiddleware, compose } from 'redux'; import AppWithNavigationState, { AppNavigator, navigatorReducer, reactNavigationMiddleware, } from 'component/AppNavigator'; -import { persistStore, autoRehydrate } from 'redux-persist'; +import { REHYDRATE, PURGE, persistCombineReducers, persistStore } from 'redux-persist'; +import getStoredStateMigrateV4 from 'redux-persist/lib/integration/getStoredStateMigrateV4'; import AsyncStorage from '@react-native-community/async-storage'; import FilesystemStorage from 'redux-persist-filesystem-storage'; import createCompressor from 'redux-persist-transform-compress'; @@ -42,6 +43,7 @@ import thunk from 'redux-thunk'; const globalExceptionHandler = (error, isFatal) => { if (error && NativeModules.Firebase) { + console.log(error); NativeModules.Firebase.logException(isFatal, error.message ? error.message : 'No message', JSON.stringify(error)); } }; @@ -75,11 +77,30 @@ function enableBatching(reducer) { }; } -/* const router = AppNavigator.router; -const navAction = router.getActionForPathAndParams('FirstRun'); -const initialNavState = router.getStateForAction(navAction); */ +const compressor = createCompressor(); +const authFilter = createFilter('auth', ['authToken']); +const contentFilter = createFilter('content', ['positions']); +const saveClaimsFilter = createFilter('claims', ['byId', 'claimsByUri']); +const subscriptionsFilter = createFilter('subscriptions', ['enabledChannelNotifications', 'subscriptions']); +const settingsFilter = createFilter('settings', ['clientSettings']); +const tagsFilter = createFilter('tags', ['followedTags']); +const walletFilter = createFilter('wallet', ['receiveAddress']); -const reducers = combineReducers({ +const v4PersistOptions = { + whitelist: ['auth', 'claims', 'content', 'subscriptions', 'settings', 'tags', 'wallet'], + // Order is important. Needs to be compressed last or other transforms can't + // read the data + transforms: [authFilter, saveClaimsFilter, subscriptionsFilter, settingsFilter, walletFilter, compressor], + debounce: 10000, + storage: FilesystemStorage, +}; + +const persistOptions = Object.assign({}, v4PersistOptions, { + key: 'primary', + getStoredState: getStoredStateMigrateV4(v4PersistOptions), +}); + +const reducers = persistCombineReducers(persistOptions, { auth: authReducer, blacklist: blacklistReducer, claims: claimsReducer, @@ -111,28 +132,10 @@ const composeEnhancers = compose; const store = createStore( enableBatching(reducers), {}, // initial state, - composeEnhancers(autoRehydrate(), applyMiddleware(...middleware)) + composeEnhancers(applyMiddleware(...middleware)) ); window.store = store; -const compressor = createCompressor(); -const authFilter = createFilter('auth', ['authToken']); -const contentFilter = createFilter('content', ['positions']); -const saveClaimsFilter = createFilter('claims', ['byId', 'claimsByUri']); -const subscriptionsFilter = createFilter('subscriptions', ['enabledChannelNotifications', 'subscriptions']); -const settingsFilter = createFilter('settings', ['clientSettings']); -const tagsFilter = createFilter('tags', ['followedTags']); -const walletFilter = createFilter('wallet', ['receiveAddress']); - -const persistOptions = { - whitelist: ['auth', 'claims', 'content', 'subscriptions', 'settings', 'tags', 'wallet'], - // Order is important. Needs to be compressed last or other transforms can't - // read the data - transforms: [authFilter, saveClaimsFilter, subscriptionsFilter, settingsFilter, walletFilter, compressor], - debounce: 10000, - storage: FilesystemStorage, -}; - persistStore(store, persistOptions, err => { if (err) { console.log('Unable to load saved SETTINGS');