UNPKG

animiassumenda

Version:

Blox live, desktop app for managing staking accounts

69 lines (64 loc) 2.13 kB
import produce from 'immer'; import * as actionTypes from '~app/components/ProcessRunner/actionTypes'; import { LOGOUT } from '~app/components/Login/components/CallbackPage/actionTypes'; const initialState = { name: '', message: '', overallSteps: 0, currentStep: 0, isServerActive: false, data: null, isLoading: false, isDone: false, error: '', }; /* eslint-disable default-case, no-param-reassign */ const processRunnerReducer = (state = initialState, action: Action) => produce(state, (draft) => { const { payload } = action; switch (action.type) { case actionTypes.PROCESS_SUBSCRIBE: draft.isLoading = true; draft.name = payload.name; draft.message = payload.defaultMessage; draft.error = ''; break; case actionTypes.PROCESS_OBSERVE: draft.message = payload.message; draft.isServerActive = payload.isActive; draft.data = payload.data; draft.overallSteps = payload.overallSteps; draft.currentStep = payload.currentStep; break; case actionTypes.PROCESS_UNSUBSCRIBE: draft.isLoading = initialState.isLoading; draft.name = initialState.name; draft.message = initialState.message; draft.isDone = true; break; case actionTypes.PROCESS_FAILURE: draft.error = payload.message; draft.isLoading = initialState.isLoading; draft.name = initialState.name; draft.message = initialState.message; draft.isDone = true; break; case actionTypes.PROCESS_CLEAR_STATE: case LOGOUT: draft.name = initialState.name; draft.message = initialState.message; draft.overallSteps = initialState.overallSteps; draft.currentStep = initialState.currentStep; draft.data = initialState.data; draft.isDone = initialState.isDone; draft.overallSteps = initialState.overallSteps; draft.currentStep = initialState.currentStep; draft.isServerActive = initialState.isServerActive; draft.error = initialState.error; break; } }); type Action = { type: string; payload: any; }; export default processRunnerReducer;