asynqmon/ui/src/reducers/snackbarReducer.ts

102 lines
2.3 KiB
TypeScript
Raw Normal View History

2020-12-10 23:06:54 +08:00
import {
CLOSE_SNACKBAR,
SnackbarActionTypes,
} from "../actions/snackbarActions";
import {
BATCH_DELETE_DEAD_TASKS_SUCCESS,
2020-12-15 22:46:23 +08:00
BATCH_RUN_DEAD_TASKS_SUCCESS,
DELETE_ALL_DEAD_TASKS_SUCCESS,
2020-12-10 23:06:54 +08:00
DELETE_DEAD_TASK_SUCCESS,
DELETE_RETRY_TASK_SUCCESS,
DELETE_SCHEDULED_TASK_SUCCESS,
RUN_ALL_DEAD_TASKS_SUCCESS,
RUN_DEAD_TASK_SUCCESS,
2020-12-10 23:06:54 +08:00
TasksActionTypes,
} from "../actions/tasksActions";
interface SnackbarState {
isOpen: boolean;
message: string;
}
const initialState: SnackbarState = {
isOpen: false,
message: "",
};
function snackbarReducer(
state = initialState,
action: TasksActionTypes | SnackbarActionTypes
): SnackbarState {
switch (action.type) {
case CLOSE_SNACKBAR:
return {
// Note: We keep the message state unchanged for
// smoother transition animation.
...state,
isOpen: false,
};
case RUN_DEAD_TASK_SUCCESS:
return {
isOpen: true,
// TODO: show only task id
message: `Dead task ${action.taskKey} is now pending`,
};
2020-12-10 23:06:54 +08:00
case DELETE_SCHEDULED_TASK_SUCCESS:
return {
isOpen: true,
// TODO: show only task id
message: `Scheduled task ${action.taskKey} deleted`,
};
case DELETE_RETRY_TASK_SUCCESS:
return {
isOpen: true,
// TODO: show only task id
message: `Retry task ${action.taskKey} deleted`,
};
case DELETE_DEAD_TASK_SUCCESS:
return {
isOpen: true,
// TODO: show only task id
message: `Dead task ${action.taskKey} deleted`,
};
2020-12-15 22:46:23 +08:00
case BATCH_RUN_DEAD_TASKS_SUCCESS: {
const n = action.payload.pending_keys.length;
return {
isOpen: true,
message: `${n} Dead ${n === 1 ? "task is" : "tasks are"} now pending`,
};
}
case BATCH_DELETE_DEAD_TASKS_SUCCESS: {
const n = action.payload.deleted_keys.length;
return {
isOpen: true,
message: `${n} Dead ${n === 1 ? "task" : "tasks"} deleted`,
};
}
case RUN_ALL_DEAD_TASKS_SUCCESS:
return {
isOpen: true,
message: "All dead tasks are now pending",
};
case DELETE_ALL_DEAD_TASKS_SUCCESS:
return {
isOpen: true,
message: "All dead tasks delete",
};
2020-12-10 23:06:54 +08:00
default:
return state;
}
}
export default snackbarReducer;