diff --git a/src/Dusken.js b/src/Dusken.js index 51e2274..ce052aa 100644 --- a/src/Dusken.js +++ b/src/Dusken.js @@ -3,12 +3,20 @@ import { connect } from 'react-redux'; import { Root } from 'native-base'; import DuskenNavigation from './navigation'; -import { userDataSuccess } from './actions'; +import { logout as logoutAction, registerUserSuccess as registerUserSuccessAction } from './actions'; import { migrateReduxPersistFourToFive } from './utils'; -const DuskenContainer = ({ setUserData }) => { +const DuskenContainer = ({ registerUserSuccess, userToken, user, logout }) => { useEffect(() => { - migrateReduxPersistFourToFive(setUserData); + async function inner() { + await migrateReduxPersistFourToFive(registerUserSuccess); + + // logout authenticated users without token + if (user && !userToken) { + logout(); + } + } + inner(); }); return ( @@ -18,11 +26,16 @@ const DuskenContainer = ({ setUserData }) => { ); }; +const mapStateToProps = (state) => ({ + userToken: state.userToken, + user: state.user, +}); const mapDispatchToProps = { - setUserData: userDataSuccess, + registerUserSuccess: registerUserSuccessAction, + logout: logoutAction, }; export default connect( - null, + mapStateToProps, mapDispatchToProps )(DuskenContainer); diff --git a/src/utils.js b/src/utils.js index 31990f6..8fe7efc 100644 --- a/src/utils.js +++ b/src/utils.js @@ -16,7 +16,7 @@ export function fetchWithTimeout(url, options, timeout = 10000) { ]); } -export async function migrateReduxPersistFourToFive(setUserData) { +export async function migrateReduxPersistFourToFive(registerUserSuccess) { const authedKey = 'reduxPersist:isAuthenticated'; const userKey = 'reduxPersist:user'; const userTokenKey = 'reduxPersist:userToken'; @@ -34,9 +34,10 @@ export async function migrateReduxPersistFourToFive(setUserData) { return; } + const userToken = await AsyncStorage.getItem(userTokenKey); const user = await AsyncStorage.getItem(userKey); console.log(userKey, user, JSON.parse(user)); - setUserData(JSON.parse(user)); + registerUserSuccess({ auth_token: userToken, ...JSON.parse(user) }); await AsyncStorage.multiRemove(v4Keys); console.log('successfully migrated to new redux-persist'); }