ignite-jhipster
Version:
A React Native boilerplate for JHipster apps.
42 lines (30 loc) • 1.26 kB
JavaScript
import { createReducer, createActions } from 'reduxsauce'
import Immutable from 'seamless-immutable'
/* ------------- Types and Action Creators ------------- */
const { Types, Creators } = createActions({
forgotPasswordRequest: ['email'],
forgotPasswordSuccess: ['response'],
forgotPasswordFailure: ['error']
})
export const ForgotPasswordTypes = Types
export default Creators
/* ------------- Initial State ------------- */
export const INITIAL_STATE = Immutable({
response: null,
error: null,
fetching: false
})
/* ------------- Reducers ------------- */
// we're attempting to request a password reset email
export const request = (state) => state.merge({ fetching: true })
// we've successfully request to reset the password
export const success = (state) => state.merge({ fetching: false, error: null })
// we've had a problem requesting to reset the password
export const failure = (state, { error }) => state.merge({ fetching: false, error })
/* ------------- Hookup Reducers To Types ------------- */
export const reducer = createReducer(INITIAL_STATE, {
[Types.FORGOT_PASSWORD_REQUEST]: request,
[Types.FORGOT_PASSWORD_SUCCESS]: success,
[Types.FORGOT_PASSWORD_FAILURE]: failure
})
/* ------------- Selectors ------------- */