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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | 540x 540x 540x 540x 540x 540x | import { RootState } from "@redux/types/store";
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { findIndex } from "lodash";
import { ConversionRangeType, SweepstakesState, TicketType } from "./types";
const initialState: SweepstakesState = {
names: {
type: [],
amount: [],
conversion: [],
transactions: [],
purchases: [],
visitors: [],
created: [],
status: [],
},
minibuilder: {
tickets: {
globalTicketId: "1",
list: [],
},
},
};
const sweepstakesSlice = createSlice({
name: "fundraisers",
initialState,
reducers: {
addConversionRangeFilter: (
state: SweepstakesState,
action: PayloadAction<ConversionRangeType>,
) => {
const range = action.payload;
state.names.conversion = range;
},
disableConversionRangeFilter: (state: SweepstakesState) => {
state.names.conversion = [];
},
addTicket: (state: SweepstakesState, action: PayloadAction<TicketType>) => {
state.minibuilder.tickets.list = [
...state.minibuilder.tickets.list,
action.payload,
];
},
editTicket: (
state: SweepstakesState,
action: PayloadAction<TicketType>,
) => {
const isTicketExist = (newName: string, id: string) => {
return state.minibuilder.tickets.list.some(
(item) => item.name === newName && id !== item.id,
);
};
if (isTicketExist(action.payload.name, action.payload.id)) return;
const updatedTickets = [...state.minibuilder.tickets.list].map((item) => {
if (item.id === action.payload.id) {
return action.payload;
}
return item;
});
state.minibuilder.tickets.list = [...updatedTickets];
},
removeTicket: (
state: SweepstakesState,
action: PayloadAction<{ id: string }>,
) => {
state.minibuilder.tickets.list = state.minibuilder.tickets.list.filter(
(item) => item.id !== action.payload.id,
);
},
showTicket: (
state: SweepstakesState,
action: PayloadAction<{ id: string }>,
) => {
const index = findIndex(state.minibuilder.tickets.list, {
id: action.payload.id,
});
if (index > -1) {
state.minibuilder.tickets.list[index] = {
...state.minibuilder.tickets.list[index],
active: !state.minibuilder.tickets.list[index].active,
};
}
},
setTicketList: (
state: SweepstakesState,
action: PayloadAction<TicketType[]>,
) => {
state.minibuilder.tickets.list = action.payload;
},
setIncrementGlobalTicketId: (state: SweepstakesState) => {
state.minibuilder.tickets.globalTicketId = (
parseInt(state.minibuilder.tickets.globalTicketId) + 1
).toString();
},
},
});
export const {
// addFilter,
// removeFilter,
addConversionRangeFilter,
disableConversionRangeFilter,
addTicket,
showTicket,
removeTicket,
setTicketList,
editTicket,
setIncrementGlobalTicketId,
} = sweepstakesSlice.actions;
export const selectFilters = (state: RootState) => state.sweepstakes.names;
export const selectTickets = (state: RootState) =>
state.sweepstakes.minibuilder.tickets.list;
export const selectGlobalTicketID = (state: RootState) =>
state.sweepstakes.minibuilder.tickets.globalTicketId;
export default sweepstakesSlice.reducer;
|