import { useDispatch, useSelector } from 'react-redux'; import { configureStore } from '@reduxjs/toolkit'; import { rememberReducer, rememberEnhancer } from 'redux-remember'; import reducers from "@/features/product/productSlice" import AsyncStorage from '@react-native-async-storage/async-storage'; import { Product, ProductData, } from "@/lib/product"; const rememberedKeys = ['products']; const rootReducer = reducers; export function setupStore(preloadedState = { products: [] as ProductData[], }) { return configureStore({ reducer: rememberReducer(reducers), preloadedState, enhancers: (getDefaultEnhancers) => getDefaultEnhancers().concat( rememberEnhancer( AsyncStorage, rememberedKeys, { persistWholeStore: true, } ) ), }); } export type RootState = ReturnType; export type AppStore = ReturnType; export type AppDispatch = AppStore['dispatch']; export const useAppDispatch = useDispatch.withTypes(); export const useAppSelector = useSelector.withTypes();