import { CashoutMethodOut } from "@/api_fsb"; import type { RootState } from "@/store"; import { createSlice, createEntityAdapter } from "@reduxjs/toolkit"; // Entity adapter for normalized storage const cashoutMethodsAdapter = createEntityAdapter({ selectId: (model: CashoutMethodOut) => model.id!, sortComparer: (a, b) => { return (b.min_value ?? 0) - (a.min_value ?? 0); }, }); const cashoutMethodsSlice = createSlice({ name: "cashoutMethods", initialState: cashoutMethodsAdapter.getInitialState(), reducers: { addCashoutMethod: cashoutMethodsAdapter.addOne, addCashoutMethods: cashoutMethodsAdapter.addMany, upsertCashoutMethod: cashoutMethodsAdapter.upsertOne, // Add or Update }, }); export const { addCashoutMethod, addCashoutMethods, upsertCashoutMethod } = cashoutMethodsSlice.actions; export const cashoutMethodsSelectors = cashoutMethodsAdapter.getSelectors( (state: RootState) => state.cashoutMethods, ); export const selectAllCashoutMethods = ( state: RootState, ): CashoutMethodOut[] => { return cashoutMethodsSelectors.selectAll(state) ?? []; }; export default cashoutMethodsSlice.reducer;