tooot/src/startup/checkSecureStorageVersion.ts

42 lines
1.2 KiB
TypeScript

import AsyncStorage from '@react-native-async-storage/async-storage'
import { persistor } from '@root/store'
import log from './log'
// Used to upgrade/invalidate secure storage
const dataKey = '@mastodon_app_database_version'
const currentVersion = '20210105'
const checkSecureStorageVersion = async (): Promise<any> => {
log(
'log',
'checkSecureStorageVersion',
'Start checking secure storage version'
)
try {
const value = await AsyncStorage.getItem(dataKey)
if (value !== currentVersion) {
log(
'warn',
'checkSecureStorageVersion',
`Version does not match. Prev: ${value}. Current: ${currentVersion}.`
)
persistor.purge()
try {
await AsyncStorage.setItem(dataKey, currentVersion)
} catch (e) {
log('error', 'checkSecureStorageVersion', 'Storing storage data error')
return Promise.reject()
}
} else {
log('log', 'checkSecureStorageVersion', 'Storing storage version matched')
}
return Promise.resolve()
} catch (e) {
log('error', 'checkSecureStorageVersion', 'Getting storage data error')
return Promise.reject()
}
}
export default checkSecureStorageVersion