import { combineReducers, configureStore, createAction, } from "@reduxjs/toolkit"; import token, { actions as tokenActions, selectToken } from "./token"; import questionnaire, { actions as questionnaireActions, selectQuestionnaire, } from "./questionnaire"; import user, { actions as userActions, selectUser } from "./user"; import form, { actions as formActions, selectors as formSelectors, } from "./form"; import aura, { actions as auraActions } from "./aura"; import siteConfig, { selectHome, actions as siteConfigActions, } from "./siteConfig"; import onboardingConfig, { selectOnboarding, selectOnboardingBreath, selectOnboardingCompatibility, selectOnboardingHome, selectOnboardingNavbarFooter, actions as onboardingConfigActions, } from "./onboarding"; import payment, { actions as paymentActions, selectActiveSubPlan, selectIsDiscount, selectSubscriptionReceipt, } from "./payment"; import subscriptionPlans, { actions as subscriptionPlasActions, selectPlanById, } from "./subscriptionPlan"; import status, { actions as userStatusActions, selectStatus } from "./status"; import compatibility, { actions as compatibilityActions, selectSelfName, } from "./compatibility"; import compatibilities, { actions as compatibilitiesActions, selectCompatibilities, } from "./compatibilities"; import userCallbacks, { actions as userCallbacksActions, } from "./userCallbacks"; import { loadStore, backupStore } from "./storageHelper"; import { selectAuraCoordinates } from "./aura"; import { selectSelectedPrice } from "./payment"; import { selectRightUser, selectCategoryId } from "./compatibility"; import { selectUserCallbacksDescription, selectUserCallbacksPrevStat, } from "./userCallbacks"; const preloadedState = loadStore(); export const actions = { token: tokenActions, user: userActions, form: formActions, status: userStatusActions, subscriptionPlan: subscriptionPlasActions, aura: auraActions, siteConfig: siteConfigActions, compatibility: compatibilityActions, compatibilities: compatibilitiesActions, payment: paymentActions, userCallbacks: userCallbacksActions, onboardingConfig: onboardingConfigActions, questionnaire: questionnaireActions, reset: createAction("reset"), }; export const selectors = { selectToken, selectUser, selectStatus, selectPlanById, selectAuraCoordinates, selectRightUser, selectSelfName, selectCategoryId, selectSelectedPrice, selectActiveSubPlan, selectUserCallbacksDescription, selectUserCallbacksPrevStat, selectHome, selectIsDiscount, selectSubscriptionReceipt, selectOnboarding, selectOnboardingHome, selectOnboardingCompatibility, selectOnboardingBreath, selectOnboardingNavbarFooter, selectCompatibilities, selectQuestionnaire, ...formSelectors, }; export const reducer = combineReducers({ token, user, form, status, subscriptionPlans, aura, payment, compatibility, compatibilities, userCallbacks, siteConfig, onboardingConfig, questionnaire, }); export type RootState = ReturnType; export const store = configureStore({ reducer, preloadedState, devTools: import.meta.env.DEV, }); export type AppDispatch = typeof store.dispatch; export type StoreType = typeof store; export const unsubscribe = backupStore(store);