diff --git a/App.js b/App.js index 08d0b9e..9073d92 100644 --- a/App.js +++ b/App.js @@ -8,8 +8,8 @@ import { import { createMaterialBottomTabNavigator } from 'react-navigation-material-bottom-tabs'; import { Font } from 'expo'; import { Provider } from 'react-redux'; -import { createStore } from 'redux'; -import reducers from './src/reducers'; +import configureStore from './configureStore'; +import { PersistGate } from 'redux-persist/integration/react'; import ManagebacStack from './src/ManagebacStack'; import TasksStack from './src/TasksStack'; @@ -20,8 +20,7 @@ import LogoutScreen from './src/screens/LogoutScreen'; import { colors } from './src/styles'; -// Initialise the entire Redux Store with all reducers combined. -const store = createStore(reducers); +const { store, persistor } = configureStore(); // The main app navigation stack. // Screens made later on (individual message screens, feed, or whatever) will be added here @@ -32,7 +31,7 @@ const AppStack = createMaterialBottomTabNavigator( SettingsTabs: SettingsStack }, { - initialRouteName: store.getState().settings.general.firstScreenManagebac ? 'ManagebacTabs' : 'TasksTabs', + initialRouteName: 'ManagebacTabs', shifting: true, activeColor: colors.primary, inactiveColor: colors.inactive, @@ -103,7 +102,9 @@ export default class Root extends React.Component { return ( this.state.fontLoaded && ( - + + + ) ); diff --git a/configureStore.js b/configureStore.js new file mode 100644 index 0000000..022c436 --- /dev/null +++ b/configureStore.js @@ -0,0 +1,21 @@ +import { createStore } from 'redux'; +import reducers from './src/reducers'; + +import { persistReducer, persistStore } from 'redux-persist'; +import storage from 'redux-persist/lib/storage'; + +export default function configureStore() { + const persistConfig = { + key: 'root', + storage + }; + + const persistedReducers = persistReducer(persistConfig, reducers); + + // Initialise the entire Redux Store with all reducers combined. + const store = createStore(persistedReducers); + + let persistor = persistStore(store); + + return { store, persistor }; +} diff --git a/package-lock.json b/package-lock.json index 91d410f..09ff1c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7416,8 +7416,7 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, - "optional": true + "bundled": true }, "minipass": { "version": "2.3.5", @@ -13534,6 +13533,11 @@ } } }, + "redux-persist": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-5.10.0.tgz", + "integrity": "sha512-sSJAzNq7zka3qVHKce1hbvqf0Vf5DuTVm7dr4GtsqQVOexnrvbV47RWFiPxQ8fscnyiuWyD2O92DOxPl0tGCRg==" + }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", diff --git a/package.json b/package.json index fb19ac3..25321d9 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "react-navigation-material-bottom-tabs": "^1.0.0", "react-redux": "^7.0.3", "redux": "^4.0.1", + "redux-persist": "^5.10.0", "socket.io-client": "^2.2.0" } } diff --git a/src/screens/LoginCheckScreen.js b/src/screens/LoginCheckScreen.js index 265223d..add9bdc 100644 --- a/src/screens/LoginCheckScreen.js +++ b/src/screens/LoginCheckScreen.js @@ -51,7 +51,7 @@ class LoginCheckScreen extends React.Component { this.props.setManagebacOverview( JSON.parse(response.headers.map['managebac-data']) ); - this.props.navigation.navigate('AppStack'); + this.props.navigation.navigate(this.props.firstScreenManagebac ? 'ManagebacTabs' : 'TasksTabs'); }) .catch(err => { console.warn(err); @@ -130,7 +130,8 @@ const mapDispatchToProps = dispatch => const mapStateToProps = state => { const managebac = state.managebac; - return { managebac }; + const firstScreenManagebac = state.settings.general.firstScreenManagebac; + return { managebac, firstScreenManagebac }; }; export default connect(