169 lines
5.0 KiB
JavaScript
169 lines
5.0 KiB
JavaScript
import {createAction, handleActions} from 'redux-actions'
|
|
import {fromJS} from 'immutable'
|
|
import {thunkAction} from '../../utils/common'
|
|
import * as api from '../../../api/registrationApi'
|
|
import {push} from 'react-router-redux'
|
|
import { addAlert } from './alerts'
|
|
import i18n from '../../../i18n'
|
|
const NS = '[RESET PASS]'
|
|
/* const GET_BILLING_PLANS = `${NS} Get billing plans`
|
|
const SELECT_BILLING_PLAN = `${NS} Select billing plan`
|
|
const SEND_REGISTER_REQUEST = `${NS} Send register request`
|
|
const FINISH_REGISTER = `${NS} Finish register`
|
|
const SHOW_REGISTER_ERROR = `${NS} Show register error` */
|
|
const REQUEST_PASSWORD_RESET = `${NS} Request password reset`
|
|
const CONFIRM_PASSWORD_RESET = `${NS} Confirm password reset`
|
|
const CLEAR_MESSAGES = `${NS} Clear messages`
|
|
/*
|
|
const getBillingPlans = thunkAction(GET_BILLING_PLANS, ({token, fulfilled}) => {
|
|
return api
|
|
.getBillingPlans(token)
|
|
.then((plans) => {
|
|
fulfilled(plans)
|
|
})
|
|
}, true)
|
|
|
|
const selectBillingPlan = createAction(SELECT_BILLING_PLAN, (billingPlan) => ({billingPlan}))
|
|
|
|
const showRegisterError = createAction(SHOW_REGISTER_ERROR)
|
|
|
|
const sendRegisterRequest = thunkAction(SEND_REGISTER_REQUEST, (formValues, {token, fulfilled, getState, dispatch}) => {
|
|
|
|
const billingPlan = getState().getIn(['common', 'register', 'selectedBillingPlan'])
|
|
const privatePerson = Boolean(formValues.privatePerson)
|
|
|
|
let payload = {}
|
|
Object.assign(payload, formValues, {
|
|
billingPlanId: billingPlan.id,
|
|
privatePerson: privatePerson
|
|
})
|
|
|
|
if (privatePerson) {
|
|
delete payload.organizationName
|
|
delete payload.organizationAddress
|
|
delete payload.organizationEmail
|
|
delete payload.organizationPhone
|
|
}
|
|
|
|
return api
|
|
.sendRegistrationRequest(token, payload)
|
|
.then((response) => {
|
|
fulfilled(response)
|
|
dispatch(showRegisterError(null))
|
|
dispatch(push('/auth/register-finish'))
|
|
})
|
|
.catch((response) => {
|
|
dispatch(showRegisterError(response[0]))
|
|
throw response
|
|
})
|
|
|
|
}, true)
|
|
|
|
const finishRegistration = thunkAction(FINISH_REGISTER, (formValues, {getState, token, fulfilled}) => {
|
|
let verificationCode = getState().getIn(['common', 'register', 'registrationCode'])
|
|
const payload = Object.assign({}, {
|
|
code: verificationCode,
|
|
card: {
|
|
creditCardNumber: formValues.creditCardNumber,
|
|
CVV: formValues.CVV,
|
|
expireMonth: formValues.expireMonth,
|
|
expireYear: formValues.expireYear,
|
|
address: {
|
|
country: formValues.country,
|
|
city: formValues.city,
|
|
street: formValues.street,
|
|
postalCode: formValues.postalCode
|
|
}
|
|
}
|
|
})
|
|
return api
|
|
.finishRegistration(token, payload)
|
|
.then((response) => {
|
|
fulfilled(response)
|
|
})
|
|
}, true) */
|
|
|
|
const requestPasswordReset = thunkAction(REQUEST_PASSWORD_RESET, (email, {fulfilled}) => {
|
|
return api
|
|
.requestPasswordReset(null, {email})
|
|
.then(() => {
|
|
fulfilled(
|
|
i18n.t('loginApp:messages.forgotPasswordSubmit', { email: email })
|
|
);
|
|
})
|
|
})
|
|
|
|
const confirmPasswordReset = thunkAction(REQUEST_PASSWORD_RESET, (confirmationToken, password, {dispatch}) => {
|
|
return api
|
|
.confirmPasswordReset(null, {confirmationToken, password})
|
|
.then(() => {
|
|
dispatch(push('/auth/login'))
|
|
dispatch(addAlert({type: 'notice', message: i18n.t('loginApp:messages.passwordUpdated')}))
|
|
})
|
|
})
|
|
|
|
const clearMessages = createAction(CLEAR_MESSAGES)
|
|
|
|
export const actions = {
|
|
/* getBillingPlans,
|
|
selectBillingPlan,
|
|
sendRegisterRequest,
|
|
finishRegistration, */
|
|
requestPasswordReset,
|
|
confirmPasswordReset,
|
|
// showRegisterError,
|
|
clearMessages
|
|
}
|
|
|
|
export const initialState = fromJS({
|
|
selectedBillingPlan: '',
|
|
billingPlans: [],
|
|
isLoading: false,
|
|
error: null,
|
|
registrationCode: null,
|
|
successMessage: null
|
|
})
|
|
/*
|
|
const toggleLoading = (state, {payload: {isPending}}) => {
|
|
return state.set('isLoading', isPending)
|
|
} */
|
|
|
|
export default handleActions({
|
|
/*
|
|
[`${GET_BILLING_PLANS} fulfilled`]: (state, {payload: plans}) => state.set('billingPlans', plans),
|
|
|
|
[SELECT_BILLING_PLAN]: (state, {payload: {billingPlan}}) => {
|
|
console.log(billingPlan)
|
|
return state.set('selectedBillingPlan', billingPlan)
|
|
},
|
|
|
|
[`${SEND_REGISTER_REQUEST} pending`]: toggleLoading,
|
|
[`${SEND_REGISTER_REQUEST} fulfilled`]: (state, {payload: response}) => {
|
|
return state.merge({
|
|
'registrationCode': response.code,
|
|
'successMessage': response.message
|
|
})
|
|
},
|
|
|
|
[`${FINISH_REGISTER} pending`]: toggleLoading,
|
|
[`${FINISH_REGISTER} fulfilled`]: (state, {payload: response}) => {
|
|
return state.set('successMessage', response.message)
|
|
}, */
|
|
[`${REQUEST_PASSWORD_RESET} fulfilled`]: (state, {payload: message}) => {
|
|
return state.set('successMessage', message)
|
|
},
|
|
[`${CONFIRM_PASSWORD_RESET} fulfilled`]: (state, {payload: message}) => {
|
|
return state.set('successMessage', message)
|
|
},
|
|
[CLEAR_MESSAGES]: (state) => {
|
|
return state.set('successMessage', null)
|
|
}
|
|
/*
|
|
[SHOW_REGISTER_ERROR]: (state, {payload: error}) => {
|
|
return state.set('error', error)
|
|
},
|
|
|
|
[`${GET_BILLING_PLANS} pending`]: toggleLoading */
|
|
|
|
}, initialState)
|