All files / store store.ts

100% Statements 7/7
50% Branches 1/2
100% Functions 1/1
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46                    1x 1x 1x         1x         1x                     1x 4x                      
/**
 * Configure et exporte le store Redux de l'application.
 *
 * - Utilise le slice panier pour la gestion du panier d'achat.
 * - Charge l'état initial du panier depuis le localStorage si disponible.
 * - Sauvegarde automatiquement l'état du panier à chaque modification.
 * - Active les Redux DevTools en développement.
 *
 * @module store
 */
import { configureStore } from '@reduxjs/toolkit';
import panierSlice from "@/lib/reducer/panier/panierSlice";
import {loadState, saveState} from "@/store/localStorage";
 
/**
 * État du panier persistant chargé depuis le localStorage.
 */
const persistedState = loadState();
 
/**
 * Store Redux principal de l'application.
 */
export const store = configureStore({
  reducer: {
    panier: panierSlice,
  },
  preloadedState: persistedState ? { panier: persistedState } : undefined,
  devTools: process.env.NODE_ENV !== "production",
});
 
/**
 * Sauvegarde l'état du panier dans le localStorage à chaque modification du store.
 */
store.subscribe(() => {
  saveState(store.getState().panier);
});
 
/**
 * Type racine de l'état global Redux.
 */
export type RootState = ReturnType<typeof store.getState>;
 
/**
 * Type du dispatcher Redux de l'application.
 */
export type AppDispatch = typeof store.dispatch;