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 = { claimSubmit: { ...emptyTask }, eligibilityCheck: { ...emptyTask }, eligibilityBatchCheck: { ...emptyTask }, }; const seleniumTaskSlice = createSlice({ name: "seleniumTasks", initialState, reducers: { setTaskStatus: ( state, action: PayloadAction<{ key: TaskKey } & Partial> ) => { const { key, ...partial } = action.payload; state[key] = { ...state[key], ...partial, show: true }; }, clearTaskStatus: (state, action: PayloadAction) => { state[action.payload] = { ...emptyTask }; }, }, }); export const { setTaskStatus, clearTaskStatus } = seleniumTaskSlice.actions; export default seleniumTaskSlice.reducer;