Files
DentalManagementMH07/apps/Frontend/src/redux/slices/seleniumTaskSlice.ts

39 lines
1.1 KiB
TypeScript

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;