From e13cef605a576964b9b9b2d0a66f28f7d77588e6 Mon Sep 17 00:00:00 2001 From: Prakash Maity Date: Wed, 7 Aug 2024 18:57:27 +0530 Subject: [PATCH] fix(reduxLocalStorageConnect) --- package.json | 1 + src/app/layout.tsx | 11 +++++++---- src/services/store/index.tsx | 27 ++++++++++++++++++++------- yarn.lock | 7 ++++++- 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index eadb499..30d4e32 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "react-dom": "^18", "react-hook-form": "^7.52.2", "react-redux": "^9.1.2", + "redux-persist": "^6.0.0", "sass": "^1.77.8", "zod": "^3.23.8" }, diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 977e82e..21b9b8f 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -4,7 +4,8 @@ import { ThemeProvider } from "@mui/material/styles"; import theme from "../theme"; import "./globals.scss"; import { Provider } from 'react-redux'; -import store from "@/services/store"; +import { PersistGate } from 'redux-persist/integration/react'; +import { store, persistor } from '.././services/store'; import AuthGuard from "@/hoc/authGuard/authGuard"; import { useRouter } from "next/navigation"; import { useEffect } from "react"; @@ -31,9 +32,11 @@ function RootLayout(props: RootLayoutProps): JSX.Element { - - {children} - + + + {children} + + diff --git a/src/services/store/index.tsx b/src/services/store/index.tsx index b3f906d..5f37f81 100644 --- a/src/services/store/index.tsx +++ b/src/services/store/index.tsx @@ -1,15 +1,28 @@ - // store/index.ts -import { configureStore } from '@reduxjs/toolkit'; +import { configureStore, combineReducers } from '@reduxjs/toolkit'; +import { persistStore, persistReducer } from 'redux-persist'; +import storage from 'redux-persist/lib/storage'; // defaults to localStorage for web import authReducer from './authSlice'; +const rootReducer = combineReducers({ + auth: authReducer, +}); + +const persistConfig = { + key: 'root', + storage, + whitelist: ['auth'], // only auth will be persisted +}; + +const persistedReducer = persistReducer(persistConfig, rootReducer); + const store = configureStore({ - reducer: { - auth: authReducer, - }, + reducer: persistedReducer, }); -export type RootState = ReturnType; +const persistor = persistStore(store); + +export type RootState = ReturnType; export type AppDispatch = typeof store.dispatch; -export default store; +export { store, persistor }; diff --git a/yarn.lock b/yarn.lock index 2c1625a..e50f994 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4013,12 +4013,17 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +redux-persist@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz" + integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ== + redux-thunk@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz" integrity sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw== -redux@^5.0.0, redux@^5.0.1: +redux@^5.0.0, redux@^5.0.1, redux@>4.0.0: version "5.0.1" resolved "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz" integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==