Skip to content

Commit

Permalink
added redux persist
Browse files Browse the repository at this point in the history
  • Loading branch information
Stephen-Gordon committed Jan 31, 2024
1 parent b4414f5 commit 5f3ec95
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 17 deletions.
46 changes: 38 additions & 8 deletions src/GlobalRedux/store.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,48 @@
'use client';

import { configureStore } from '@reduxjs/toolkit';
import { configureStore, combineReducers } from '@reduxjs/toolkit';
import { persistStore, persistReducer } from 'redux-persist';
import storage from 'redux-persist/lib/storage';
import loginReducer from './Features/login/loginSlice';
import addressReducer from './Features/address/addressSlice';
import searchReducer from './Features/search/searchSlice';
import kernalClientSliceReducer from './Features/kernalClient/kernalClientSlice';

// Define RootState type
type RootState = {
login: {
value: boolean;
};
address: {
value: string;
};
search: {
value: boolean;
};
kernalClient: {
value: {};
};
};

const persistConfig = {
key: 'root',
storage,
};

// Combine reducers with RootState type
const rootReducer = combineReducers<RootState>({
login: loginReducer,
address: addressReducer,
search: searchReducer,
kernalClient: kernalClientSliceReducer,
});

const persistedReducer = persistReducer(persistConfig, rootReducer);

export const store = configureStore({
reducer: {
login: loginReducer,
address: addressReducer,
search: searchReducer,
kernalClient: kernalClientSliceReducer,
},
reducer: persistedReducer,
});

export type RootState = ReturnType<typeof store.getState>;
export const persistor = persistStore(store);

export type AppDispatch = typeof store.dispatch;
20 changes: 11 additions & 9 deletions src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -89,15 +89,17 @@ export default function RootLayout({
<html>
<body>
<Providers>
<WagmiProvider config={config!}>
<QueryClientProvider client={queryClient}>
<nav>
<Link href='/search'>Open modal</Link>
</nav>
<div>{authState && auth}</div>
<main>{children}</main>
</QueryClientProvider>
</WagmiProvider>
<PersistGate loading={null} persistor={persistor}>
<WagmiProvider config={config!}>
<QueryClientProvider client={queryClient}>
<nav>
<Link href='/search'>Open modal</Link>
</nav>
<div>{authState && auth}</div>
<main>{children}</main>
</QueryClientProvider>
</WagmiProvider>
</PersistGate>
</Providers>
</body>
</html>
Expand Down

0 comments on commit 5f3ec95

Please sign in to comment.