animiassumenda
Version:
Blox live, desktop app for managing staking accounts
40 lines (35 loc) • 1.16 kB
text/typescript
import produce from 'immer';
import * as actionTypes from '~app/components/PasswordHandler/actionTypes';
import { LOGOUT } from '~app/components/Login/components/CallbackPage/actionTypes';
const initialState = {
isValid: false,
isLoading: false,
};
/* eslint-disable default-case, no-param-reassign */
const passwordHandlerReducer = (state = initialState, action: Action) => produce(state, (draft) => {
switch (action.type) {
case actionTypes.SAVE_PASSWORD:
case actionTypes.REPLACE_PASSWORD:
case actionTypes.CHECK_PASSWORD_VALIDATION:
draft.isLoading = true;
break;
case actionTypes.SAVE_PASSWORD_SUCCESS:
case actionTypes.SAVE_PASSWORD_FAILURE:
draft.isLoading = initialState.isLoading;
break;
case actionTypes.SET_PASSWORD_VALIDATION:
draft.isValid = action.payload;
draft.isLoading = initialState.isLoading;
break;
case actionTypes.CLEAR_PASSWORD_DATA:
case LOGOUT:
draft.isValid = initialState.isValid;
draft.isLoading = initialState.isLoading;
break;
}
});
type Action = {
type: string;
payload: any;
};
export default passwordHandlerReducer;