import { CLOSE_SNACKBAR, SnackbarActionTypes, } from "../actions/snackbarActions"; import { BATCH_CANCEL_ACTIVE_TASKS_SUCCESS, BATCH_DELETE_ARCHIVED_TASKS_SUCCESS, BATCH_DELETE_RETRY_TASKS_SUCCESS, BATCH_DELETE_SCHEDULED_TASKS_SUCCESS, BATCH_ARCHIVE_RETRY_TASKS_SUCCESS, BATCH_ARCHIVE_SCHEDULED_TASKS_SUCCESS, BATCH_RUN_ARCHIVED_TASKS_SUCCESS, BATCH_RUN_RETRY_TASKS_SUCCESS, BATCH_RUN_SCHEDULED_TASKS_SUCCESS, CANCEL_ALL_ACTIVE_TASKS_SUCCESS, DELETE_ALL_ARCHIVED_TASKS_SUCCESS, DELETE_ALL_RETRY_TASKS_SUCCESS, DELETE_ALL_SCHEDULED_TASKS_SUCCESS, DELETE_ARCHIVED_TASK_SUCCESS, DELETE_RETRY_TASK_SUCCESS, DELETE_SCHEDULED_TASK_SUCCESS, ARCHIVE_ALL_RETRY_TASKS_SUCCESS, ARCHIVE_ALL_SCHEDULED_TASKS_SUCCESS, ARCHIVE_RETRY_TASK_SUCCESS, ARCHIVE_SCHEDULED_TASK_SUCCESS, RUN_ALL_ARCHIVED_TASKS_SUCCESS, RUN_ALL_RETRY_TASKS_SUCCESS, RUN_ALL_SCHEDULED_TASKS_SUCCESS, RUN_ARCHIVED_TASK_SUCCESS, RUN_RETRY_TASK_SUCCESS, RUN_SCHEDULED_TASK_SUCCESS, 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 BATCH_CANCEL_ACTIVE_TASKS_SUCCESS: { const n = action.payload.canceled_ids.length; return { isOpen: true, message: `Cancelation signal sent to ${n} ${ n === 1 ? "task" : "tasks" }`, }; } case CANCEL_ALL_ACTIVE_TASKS_SUCCESS: return { isOpen: true, message: `Cancelation signal sent to all tasks in ${action.queue} queue`, }; case RUN_SCHEDULED_TASK_SUCCESS: return { isOpen: true, message: `Scheduled task is now pending`, }; case RUN_RETRY_TASK_SUCCESS: return { isOpen: true, message: `Retry task is now pending`, }; case RUN_ARCHIVED_TASK_SUCCESS: return { isOpen: true, message: `Archived task is now pending`, }; case ARCHIVE_SCHEDULED_TASK_SUCCESS: return { isOpen: true, message: `Scheduled task is now archived`, }; case ARCHIVE_RETRY_TASK_SUCCESS: return { isOpen: true, message: `Retry task is now archived`, }; case DELETE_SCHEDULED_TASK_SUCCESS: return { isOpen: true, message: `Scheduled task deleted`, }; case BATCH_RUN_SCHEDULED_TASKS_SUCCESS: { const n = action.payload.pending_keys.length; return { isOpen: true, message: `${n} scheduled ${ n === 1 ? "task is" : "tasks are" } now pending`, }; } case BATCH_ARCHIVE_SCHEDULED_TASKS_SUCCESS: { const n = action.payload.archived_keys.length; return { isOpen: true, message: `${n} scheduled ${ n === 1 ? "task is" : "tasks are" } now archived`, }; } case BATCH_DELETE_SCHEDULED_TASKS_SUCCESS: { const n = action.payload.deleted_keys.length; return { isOpen: true, message: `${n} scheduled ${n === 1 ? "task" : "tasks"} deleted`, }; } case RUN_ALL_SCHEDULED_TASKS_SUCCESS: return { isOpen: true, message: "All scheduled tasks are now pending", }; case ARCHIVE_ALL_SCHEDULED_TASKS_SUCCESS: return { isOpen: true, message: "All scheduled tasks are now archived", }; case DELETE_ALL_SCHEDULED_TASKS_SUCCESS: return { isOpen: true, message: "All scheduled tasks deleted", }; case DELETE_RETRY_TASK_SUCCESS: return { isOpen: true, message: `Retry task deleted`, }; case BATCH_RUN_RETRY_TASKS_SUCCESS: { const n = action.payload.pending_keys.length; return { isOpen: true, message: `${n} retry ${n === 1 ? "task is" : "tasks are"} now pending`, }; } case BATCH_ARCHIVE_RETRY_TASKS_SUCCESS: { const n = action.payload.archived_keys.length; return { isOpen: true, message: `${n} retry ${n === 1 ? "task is" : "tasks are"} now archived`, }; } case BATCH_DELETE_RETRY_TASKS_SUCCESS: { const n = action.payload.deleted_keys.length; return { isOpen: true, message: `${n} retry ${n === 1 ? "task" : "tasks"} deleted`, }; } case RUN_ALL_RETRY_TASKS_SUCCESS: return { isOpen: true, message: "All retry tasks are now pending", }; case ARCHIVE_ALL_RETRY_TASKS_SUCCESS: return { isOpen: true, message: "All retry tasks are now archived", }; case DELETE_ALL_RETRY_TASKS_SUCCESS: return { isOpen: true, message: "All retry tasks deleted", }; case DELETE_ARCHIVED_TASK_SUCCESS: return { isOpen: true, message: `Archived task deleted`, }; case BATCH_RUN_ARCHIVED_TASKS_SUCCESS: { const n = action.payload.pending_keys.length; return { isOpen: true, message: `${n} archived ${ n === 1 ? "task is" : "tasks are" } now pending`, }; } case BATCH_DELETE_ARCHIVED_TASKS_SUCCESS: { const n = action.payload.deleted_keys.length; return { isOpen: true, message: `${n} archived ${n === 1 ? "task" : "tasks"} deleted`, }; } case RUN_ALL_ARCHIVED_TASKS_SUCCESS: return { isOpen: true, message: "All archived tasks are now pending", }; case DELETE_ALL_ARCHIVED_TASKS_SUCCESS: return { isOpen: true, message: "All archived tasks deleted", }; default: return state; } } export default snackbarReducer;