refactor: consolidate 3 identical Redux slices into one seleniumTaskSlice
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
|
||||
|
||||
export type TaskStatus = "idle" | "pending" | "success" | "error";
|
||||
export type TaskKey = "claimSubmit" | "eligibilityCheck" | "eligibilityBatchCheck";
|
||||
|
||||
export interface SeleniumTaskState {
|
||||
status: TaskStatus;
|
||||
message: string;
|
||||
show: boolean;
|
||||
}
|
||||
|
||||
const emptyTask: SeleniumTaskState = { status: "idle", message: "", show: false };
|
||||
|
||||
const initialState: Record<TaskKey, SeleniumTaskState> = {
|
||||
claimSubmit: { ...emptyTask },
|
||||
eligibilityCheck: { ...emptyTask },
|
||||
eligibilityBatchCheck: { ...emptyTask },
|
||||
};
|
||||
|
||||
const seleniumTaskSlice = createSlice({
|
||||
name: "seleniumTasks",
|
||||
initialState,
|
||||
reducers: {
|
||||
setTaskStatus: (
|
||||
state,
|
||||
action: PayloadAction<{ key: TaskKey } & Partial<SeleniumTaskState>>
|
||||
) => {
|
||||
const { key, ...partial } = action.payload;
|
||||
state[key] = { ...state[key], ...partial, show: true };
|
||||
},
|
||||
clearTaskStatus: (state, action: PayloadAction<TaskKey>) => {
|
||||
state[action.payload] = { ...emptyTask };
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
export const { setTaskStatus, clearTaskStatus } = seleniumTaskSlice.actions;
|
||||
export default seleniumTaskSlice.reducer;
|
||||
Reference in New Issue
Block a user