auth0-extensions/auth0-delegated-administration-extension

View on GitHub
client/reducers/fieldsChange.js

Summary

Maintainability
A
0 mins
Test Coverage
import _ from 'lodash';
import { fromJS } from 'immutable';

import * as constants from '../constants';
import createReducer from '../utils/createReducer';

const initialState = {
  error: null,
  userId: null,
  record: null,
  loading: false,
  validationErrors: {}
};

export const fieldsChange = createReducer(fromJS(initialState), { // eslint-disable-line import/prefer-default-export
  [constants.REQUEST_FIELDS_CHANGE]: (state, action) =>
    state.merge({
      ...initialState,
      userId: action.payload.user.user_id,
      record: action.payload.user
    }),
  [constants.CANCEL_FIELDS_CHANGE]: (state) =>
    state.merge({
      ...initialState
    }),
  [constants.FIELDS_CHANGE_PENDING]: (state) =>
    state.merge({
      loading: true
    }),
  [constants.FIELDS_CHANGE_REJECTED]: (state, action) =>
    state.merge({
      loading: false,
      validationErrors: {},
      error: action.errorData
    }),
  [constants.FIELDS_CHANGE_FULFILLED]: (state) =>
    state.merge({
      ...initialState
    })
});