mirror of
https://github.com/wassname/talk.git
synced 2026-07-16 11:22:16 +08:00
260 lines
6.0 KiB
JavaScript
260 lines
6.0 KiB
JavaScript
import * as actions from '../constants/auth';
|
|
import pym from 'coral-framework/services/pym';
|
|
|
|
const initialState = {
|
|
isLoading: false,
|
|
loggedIn: false,
|
|
user: null,
|
|
showSignInDialog: false,
|
|
signInDialogFocus: false,
|
|
showCreateUsernameDialog: false,
|
|
checkedInitialLogin: false,
|
|
view: 'SIGNIN',
|
|
error: '',
|
|
passwordRequestSuccess: null,
|
|
passwordRequestFailure: null,
|
|
emailVerificationFailure: false,
|
|
emailVerificationLoading: false,
|
|
emailVerificationSuccess: false,
|
|
successSignUp: false,
|
|
fromSignUp: false,
|
|
requireEmailConfirmation: false,
|
|
redirectUri: pym.parentUrl || location.href,
|
|
};
|
|
|
|
const purge = (user) => {
|
|
const {settings, ...userData} = user; // eslint-disable-line
|
|
return userData;
|
|
};
|
|
|
|
export default function auth (state = initialState, action) {
|
|
switch (action.type) {
|
|
case actions.FOCUS_SIGNIN_DIALOG:
|
|
return {
|
|
...state,
|
|
signInDialogFocus: true,
|
|
};
|
|
case actions.BLUR_SIGNIN_DIALOG:
|
|
return {
|
|
...state,
|
|
signInDialogFocus: false,
|
|
};
|
|
case actions.SHOW_SIGNIN_DIALOG:
|
|
return {
|
|
...state,
|
|
showSignInDialog: true,
|
|
signInDialogFocus: true,
|
|
};
|
|
case actions.HIDE_SIGNIN_DIALOG :
|
|
return {
|
|
...state,
|
|
isLoading: false,
|
|
showSignInDialog: false,
|
|
signInDialogFocus: false,
|
|
view: 'SIGNIN',
|
|
error: '',
|
|
passwordRequestFailure: null,
|
|
passwordRequestSuccess: null,
|
|
emailVerificationFailure: false,
|
|
emailVerificationSuccess: false,
|
|
emailVerificationLoading: false,
|
|
successSignUp: false
|
|
};
|
|
case actions.SHOW_CREATEUSERNAME_DIALOG:
|
|
return {
|
|
...state,
|
|
showCreateUsernameDialog: true,
|
|
};
|
|
case actions.HIDE_CREATEUSERNAME_DIALOG:
|
|
return {
|
|
...state,
|
|
showCreateUsernameDialog: false,
|
|
};
|
|
case actions.CREATE_USERNAME_SUCCESS:
|
|
return {
|
|
...state,
|
|
showCreateUsernameDialog: false,
|
|
error: '',
|
|
};
|
|
case actions.CREATE_USERNAME_FAILURE:
|
|
return {
|
|
...state,
|
|
error: action.error,
|
|
};
|
|
case actions.CHANGE_VIEW:
|
|
return {
|
|
...state,
|
|
error: action.error,
|
|
view: action.view,
|
|
};
|
|
case actions.CLEAN_STATE:
|
|
return initialState;
|
|
case actions.FETCH_SIGNIN_REQUEST:
|
|
return {
|
|
...state,
|
|
isLoading: true,
|
|
};
|
|
case actions.CHECK_LOGIN_FAILURE:
|
|
return {
|
|
...state,
|
|
checkedInitialLogin: true,
|
|
loggedIn: false,
|
|
user: null,
|
|
};
|
|
case actions.CHECK_LOGIN_SUCCESS:
|
|
return {
|
|
...state,
|
|
checkedInitialLogin: true,
|
|
loggedIn: true,
|
|
user: purge(action.user),
|
|
};
|
|
case actions.FETCH_SIGNIN_SUCCESS:
|
|
return {
|
|
...state,
|
|
loggedIn: true,
|
|
user: purge(action.user),
|
|
};
|
|
case actions.FETCH_SIGNIN_FAILURE:
|
|
return {
|
|
...state,
|
|
isLoading: false,
|
|
error: action.error,
|
|
user: null,
|
|
};
|
|
case actions.FETCH_SIGNUP_FACEBOOK_REQUEST:
|
|
return {
|
|
...state,
|
|
fromSignUp: true,
|
|
};
|
|
case actions.FETCH_SIGNIN_FACEBOOK_REQUEST:
|
|
return {
|
|
...state,
|
|
fromSignUp: false,
|
|
};
|
|
case actions.FETCH_SIGNIN_FACEBOOK_SUCCESS:
|
|
return {
|
|
...state,
|
|
loggedIn: true,
|
|
user: purge(action.user),
|
|
};
|
|
case actions.FETCH_SIGNIN_FACEBOOK_FAILURE:
|
|
return {
|
|
...state,
|
|
error: action.error,
|
|
user: null,
|
|
};
|
|
case actions.FETCH_SIGNUP_REQUEST:
|
|
return {
|
|
...state,
|
|
isLoading: true,
|
|
};
|
|
case actions.FETCH_SIGNUP_FAILURE:
|
|
return {
|
|
...state,
|
|
error: action.error,
|
|
isLoading: false,
|
|
};
|
|
case actions.FETCH_SIGNUP_SUCCESS:
|
|
return {
|
|
...state,
|
|
isLoading: false,
|
|
successSignUp: true,
|
|
};
|
|
case actions.LOGOUT:
|
|
return {
|
|
...state,
|
|
user: null,
|
|
isLoading: false,
|
|
loggedIn: false,
|
|
};
|
|
case actions.INVALID_FORM:
|
|
return {
|
|
...state,
|
|
error: action.error,
|
|
};
|
|
case actions.VALID_FORM:
|
|
return {
|
|
...state,
|
|
error: '',
|
|
};
|
|
case actions.FETCH_FORGOT_PASSWORD_SUCCESS:
|
|
return {
|
|
...state,
|
|
passwordRequestFailure: null,
|
|
passwordRequestSuccess: 'If you have a registered account, a password reset link was sent to that email',
|
|
};
|
|
case actions.FETCH_FORGOT_PASSWORD_FAILURE:
|
|
return {
|
|
...state,
|
|
passwordRequestFailure: 'There was an error sending your password reset email. Please try again soon!',
|
|
passwordRequestSuccess: null,
|
|
};
|
|
case actions.UPDATE_USERNAME:
|
|
return {
|
|
...state,
|
|
user: {
|
|
...state.user,
|
|
username: action.username,
|
|
}
|
|
};
|
|
case actions.VERIFY_EMAIL_FAILURE:
|
|
return {
|
|
...state,
|
|
emailVerificationFailure: true,
|
|
emailVerificationLoading: false,
|
|
};
|
|
case actions.VERIFY_EMAIL_REQUEST:
|
|
return {
|
|
...state,
|
|
emailVerificationLoading: true,
|
|
};
|
|
case actions.VERIFY_EMAIL_SUCCESS:
|
|
return {
|
|
...state,
|
|
emailVerificationSuccess: true,
|
|
emailVerificationLoading: false,
|
|
};
|
|
case actions.SET_REQUIRE_EMAIL_VERIFICATION:
|
|
return {
|
|
...state,
|
|
requireEmailConfirmation: action.required,
|
|
};
|
|
case actions.SET_REDIRECT_URI:
|
|
return {
|
|
...state,
|
|
redirectUri: action.uri,
|
|
};
|
|
case 'APOLLO_SUBSCRIPTION_RESULT':
|
|
if (action.operationName === 'UserBanned' && state.getIn(['user', 'id']) === action.variables.user_id) {
|
|
return {
|
|
...state,
|
|
user: {
|
|
...state.user,
|
|
...action.result.data.userBanned,
|
|
},
|
|
};
|
|
}
|
|
if (action.operationName === 'UserSuspended' && state.getIn(['user', 'id']) === action.variables.user_id) {
|
|
return {
|
|
...state,
|
|
user: {
|
|
...state.user,
|
|
...action.result.data.userSuspended,
|
|
},
|
|
};
|
|
}
|
|
if (action.operationName === 'UsernameRejected' && state.getIn(['user', 'id']) === action.variables.user_id) {
|
|
return {
|
|
...state,
|
|
user: {
|
|
...state.user,
|
|
...action.result.data.usernameRejected,
|
|
},
|
|
};
|
|
}
|
|
return state;
|
|
default :
|
|
return state;
|
|
}
|
|
}
|