Archived
Migrate redux-persist legacy data
This commit is contained in:
1 parent
7cc2030e89
commit
78ec4693d8
3 files changed
+51
-8
No files matched your search
+23
-7
@@ -1,12 +1,28 @@
|
||||
import React from 'react';
|
||||
import React, { useEffect } from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import { Root } from 'native-base';
|
||||
|
||||
import DuskenNavigation from './navigation';
|
||||
import { userDataSuccess } from './actions';
|
||||
import { migrateReduxPersistFourToFive } from './utils';
|
||||
|
||||
const DuskenContainer = () => (
|
||||
<Root>
|
||||
<DuskenNavigation />
|
||||
</Root>
|
||||
);
|
||||
const DuskenContainer = ({ setUserData }) => {
|
||||
useEffect(() => {
|
||||
migrateReduxPersistFourToFive(setUserData);
|
||||
});
|
||||
|
||||
export default connect()(DuskenContainer);
|
||||
return (
|
||||
<Root>
|
||||
<DuskenNavigation />
|
||||
</Root>
|
||||
);
|
||||
};
|
||||
|
||||
const mapDispatchToProps = {
|
||||
setUserData: userDataSuccess,
|
||||
};
|
||||
|
||||
export default connect(
|
||||
null,
|
||||
mapDispatchToProps
|
||||
)(DuskenContainer);
|
||||
@@ -1,4 +1,6 @@
|
||||
/* global fetch */
|
||||
import AsyncStorage from '@react-native-community/async-storage';
|
||||
|
||||
export function snakeToCamelCase(val) {
|
||||
return val.replace(/_([a-z])/g, function(g) {
|
||||
return g[1].toUpperCase();
|
||||
@@ -13,3 +15,28 @@ export function fetchWithTimeout(url, options, timeout = 10000) {
|
||||
new Promise((_, reject) => setTimeout(() => reject(new Error('Fetch request timed out')), timeout)),
|
||||
]);
|
||||
}
|
||||
|
||||
export async function migrateReduxPersistFourToFive(setUserData) {
|
||||
const authedKey = 'reduxPersist:isAuthenticated';
|
||||
const userKey = 'reduxPersist:user';
|
||||
const userTokenKey = 'reduxPersist:userToken';
|
||||
const v4Keys = [authedKey, userKey, userTokenKey];
|
||||
|
||||
const asyncStorageKeys = await AsyncStorage.getAllKeys();
|
||||
if (v4Keys.some((key) => !asyncStorageKeys.includes(key))) {
|
||||
return;
|
||||
}
|
||||
|
||||
const isAuthenticated = await AsyncStorage.getItem(authedKey);
|
||||
console.log(authedKey, isAuthenticated);
|
||||
if (isAuthenticated !== 'true') {
|
||||
await AsyncStorage.multiRemove(v4Keys);
|
||||
return;
|
||||
}
|
||||
|
||||
const user = await AsyncStorage.getItem(userKey);
|
||||
console.log(userKey, user, JSON.parse(user));
|
||||
setUserData(JSON.parse(user));
|
||||
await AsyncStorage.multiRemove(v4Keys);
|
||||
console.log('successfully migrated to new redux-persist');
|
||||
}
|
||||
Reference in new issue
Block a user