From 48c36ed960e1023092352cbfb5ea55ac1529c64e Mon Sep 17 00:00:00 2001 From: Callum Macdonald Date: Thu, 21 Nov 2024 16:19:33 +0000 Subject: [PATCH] Use combineSlice, create keystore slice. --- nr-app/src/redux/slices/events.slice.ts | 2 -- nr-app/src/redux/slices/keystore.slice.ts | 26 ++++++++++++++++++++ nr-app/src/redux/slices/map.slice.ts | 4 +--- nr-app/src/redux/slices/relays.slice.ts | 4 +--- nr-app/src/redux/store.ts | 29 +++++++---------------- 5 files changed, 37 insertions(+), 28 deletions(-) create mode 100644 nr-app/src/redux/slices/keystore.slice.ts diff --git a/nr-app/src/redux/slices/events.slice.ts b/nr-app/src/redux/slices/events.slice.ts index a4f7f51..0f1cbee 100644 --- a/nr-app/src/redux/slices/events.slice.ts +++ b/nr-app/src/redux/slices/events.slice.ts @@ -125,8 +125,6 @@ export const eventsSlice = createSlice({ }, }); -export default eventsSlice.reducer; - export const { addEvent, setAllEventsWithMetadata } = eventsSlice.actions; export const eventsSelectors = eventsAdapter.getSelectors( diff --git a/nr-app/src/redux/slices/keystore.slice.ts b/nr-app/src/redux/slices/keystore.slice.ts new file mode 100644 index 0000000..a5cfb66 --- /dev/null +++ b/nr-app/src/redux/slices/keystore.slice.ts @@ -0,0 +1,26 @@ +import { createSlice, PayloadAction } from "@reduxjs/toolkit"; +import { nip19 } from "nostr-tools"; + +type KeystoreState = { + hasPrivateKeyInSecureStorage: boolean; + publicKeyNpub?: `npub${string}`; + publicKeyHex?: string; +}; + +const initialState: KeystoreState = { + hasPrivateKeyInSecureStorage: false, +}; + +const keystoreSlice = createSlice({ + name: "keystore", + initialState, + reducers: { + setPublicKeyHex: (state, action: PayloadAction) => { + state.hasPrivateKeyInSecureStorage = true; + state.publicKeyHex = action.payload; + state.publicKeyNpub = nip19.npubEncode(action.payload); + }, + }, +}); + +export const { setPublicKeyHex } = keystoreSlice.actions; diff --git a/nr-app/src/redux/slices/map.slice.ts b/nr-app/src/redux/slices/map.slice.ts index 0519bfb..0482462 100644 --- a/nr-app/src/redux/slices/map.slice.ts +++ b/nr-app/src/redux/slices/map.slice.ts @@ -23,7 +23,7 @@ const initialState: MapState = { }, }; -const mapSlice = createSlice({ +export const mapSlice = createSlice({ name: SLICE_NAME, initialState, reducers: { @@ -61,8 +61,6 @@ const mapSlice = createSlice({ }, }); -export default mapSlice.reducer; - export const { setMapSubscriptionIsUpdating, enableLayer, diff --git a/nr-app/src/redux/slices/relays.slice.ts b/nr-app/src/redux/slices/relays.slice.ts index bc25151..506ddb4 100644 --- a/nr-app/src/redux/slices/relays.slice.ts +++ b/nr-app/src/redux/slices/relays.slice.ts @@ -41,7 +41,7 @@ const initialState: RelaysState = { subscriptions: {}, }; -const relaysSlice = createSlice({ +export const relaysSlice = createSlice({ name: SLICE_NAME, initialState, reducers: { @@ -108,8 +108,6 @@ const relaysSlice = createSlice({ }, }); -export default relaysSlice.reducer; - export const { setRelays, setRelayConnected, diff --git a/nr-app/src/redux/store.ts b/nr-app/src/redux/store.ts index abb00a4..8867ada 100644 --- a/nr-app/src/redux/store.ts +++ b/nr-app/src/redux/store.ts @@ -1,21 +1,12 @@ -import { configureStore, StoreEnhancer } from "@reduxjs/toolkit"; +import { combineSlices, configureStore, StoreEnhancer } from "@reduxjs/toolkit"; import createSagaMiddleware from "redux-saga"; -import rootSaga from "./sagas/root.saga"; -import { - SLICE_NAME as eventsName, - default as eventsReducer, -} from "./slices/events.slice"; -import { - SLICE_NAME as mapName, - default as mapReducer, -} from "./slices/map.slice"; -import { - SLICE_NAME as relayName, - default as relayReducer, -} from "./slices/relays.slice"; -import devtoolsEnhancer from "redux-devtools-expo-dev-plugin"; import { Platform } from "react-native"; +import devtoolsEnhancer from "redux-devtools-expo-dev-plugin"; +import rootSaga from "./sagas/root.saga"; +import { eventsSlice } from "./slices/events.slice"; +import { mapSlice } from "./slices/map.slice"; +import { relaysSlice } from "./slices/relays.slice"; const sagaMiddleware = createSagaMiddleware(); @@ -24,12 +15,10 @@ const devToolsEnhancerOrNot: StoreEnhancer[] = isOnDevice ? [devtoolsEnhancer()] : []; +const reducer = combineSlices(eventsSlice, mapSlice, relaysSlice); + export const store = configureStore({ - reducer: { - [eventsName]: eventsReducer, - [mapName]: mapReducer, - [relayName]: relayReducer, - }, + reducer, middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(sagaMiddleware), devTools: !isOnDevice,