diff --git a/App.tsx b/App.tsx index 145069e9..4a016667 100644 --- a/App.tsx +++ b/App.tsx @@ -3,7 +3,7 @@ import { QueryCache, ReactQueryCacheProvider, setConsole } from 'react-query' import { Provider } from 'react-redux' import { Index } from 'src/Index' -import store from 'src/store' +import { store } from 'src/store' const queryCache = new QueryCache() diff --git a/src/api/client.ts b/src/api/client.ts index 98efb6b5..e8536891 100644 --- a/src/api/client.ts +++ b/src/api/client.ts @@ -1,4 +1,4 @@ -import store, { RootState } from 'src/store' +import { store, RootState } from 'src/store' import ky from 'ky' const client = async ({ diff --git a/src/components/Status/ActionsStatus.tsx b/src/components/Status/ActionsStatus.tsx index b58ec455..e657ed82 100644 --- a/src/components/Status/ActionsStatus.tsx +++ b/src/components/Status/ActionsStatus.tsx @@ -14,7 +14,7 @@ import { Feather } from '@expo/vector-icons' import client from 'src/api/client' import { getLocalAccountId } from 'src/utils/slices/instancesSlice' -import store from 'src/store' +import {store} from 'src/store' const fireMutation = async ({ id, diff --git a/src/components/Status/Header.tsx b/src/components/Status/Header.tsx index 7bbf1021..35e50e0a 100644 --- a/src/components/Status/Header.tsx +++ b/src/components/Status/Header.tsx @@ -13,7 +13,7 @@ import { getLocalAccountId, getLocalUrl } from 'src/utils/slices/instancesSlice' -import store from 'src/store' +import {store} from 'src/store' const fireMutation = async ({ id, diff --git a/src/screens/Me/Root.tsx b/src/screens/Me/Root.tsx index b9bcc36c..d2fc013b 100644 --- a/src/screens/Me/Root.tsx +++ b/src/screens/Me/Root.tsx @@ -1,12 +1,15 @@ import React from 'react' import { View } from 'react-native' -import store from 'src/store' -import { getLocalRegistered } from 'src/utils/slices/instancesSlice' +import { useSelector } from 'react-redux' + +import { RootState } from 'src/store' import Login from './Root/Login' const ScreenMeRoot: React.FC = () => { - const localRegistered = getLocalRegistered(store.getState()) + const localRegistered = useSelector( + (state: RootState) => state.instances.local.url + ) return {localRegistered ? <> : } } diff --git a/src/screens/Shared/Compose.tsx b/src/screens/Shared/Compose.tsx index 589c2268..bedf281c 100644 --- a/src/screens/Shared/Compose.tsx +++ b/src/screens/Shared/Compose.tsx @@ -10,7 +10,7 @@ import { SafeAreaView } from 'react-native-safe-area-context' import { createNativeStackNavigator } from 'react-native-screens/native-stack' import { useNavigation } from '@react-navigation/native' -import store from 'src/store' +import { store } from 'src/store' import PostMain from './Compose/PostMain' import client from 'src/api/client' import { getLocalAccountPreferences } from 'src/utils/slices/instancesSlice' diff --git a/src/store.ts b/src/store.ts index f7be2d7e..c002c584 100644 --- a/src/store.ts +++ b/src/store.ts @@ -1,13 +1,23 @@ import { configureStore } from '@reduxjs/toolkit' +import { persistReducer, persistStore } from 'redux-persist' +import createSecureStore from 'redux-persist-expo-securestore' import instancesSlice from 'src/utils/slices/instancesSlice' +const secureStorage = createSecureStore() + +const instancesPersistConfig = { + key: 'instances', + storage: secureStorage +} + const store = configureStore({ reducer: { - instances: instancesSlice + instances: persistReducer(instancesPersistConfig, instancesSlice) } }) -export default store +let persistor = persistStore(store) +export { store, persistor } export type RootState = ReturnType