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 { ProductData } from "@/lib/dimensions_t"; import {Length} from "convert" const rememberedKeys = ['products']; const rootReducer = reducers; const isBrowser = (typeof window !== "undefined"); export function setupStore(preloadedState = { products: [] as ProductData[], units: "ft" as Length, }) { return configureStore({ reducer: rememberReducer(reducers), preloadedState, enhancers: (getDefaultEnhancers) => getDefaultEnhancers().concat( rememberEnhancer( AsyncStorage, rememberedKeys, { persistWholeStore: false, }, ) ), }); } export type RootState = ReturnType; export type AppStore = ReturnType; export type AppDispatch = AppStore['dispatch']; export const useAppDispatch = useDispatch.withTypes(); export const useAppSelector = useSelector.withTypes();