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
|
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;
|