You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
2.3 KiB
106 lines
2.3 KiB
import { |
|
IS_SENDING_AUTH_REQUEST, |
|
SET_AUTH_REQUEST_ERROR, |
|
CLEAR_AUTH_REQUEST_ERROR, |
|
SET_AUTH_REQUEST_SUCCESS, |
|
CLEAR_AUTH_REQUEST_SUCCESS, |
|
SET_SELF_USER_TOKEN, |
|
SET_FORM_EMAIL, |
|
SET_FORM_PASSWORD, |
|
SET_FORM_PASSWORD_CONFIRMATION, |
|
SET_FORM_EMAIL_VERIFICATION, |
|
SET_FORM_OLD_PASSWORD, |
|
SET_CLEAR_AUTH_STATE |
|
} from "../constants/auth.constants"; |
|
|
|
/** |
|
* Set the user's auth token, and return the value |
|
* @param {string} newToken |
|
*/ |
|
function me(newToken) { |
|
if (typeof newToken === "string") { |
|
localStorage.setItem("userToken", newToken); |
|
} |
|
const userToken = localStorage.getItem("userToken"); |
|
return userToken ? userToken : ""; |
|
} |
|
|
|
const initialState = { |
|
isSendingAuthRequest: false, |
|
authRequestError: "", |
|
authRequestSuccess: "", |
|
userToken: me(null), |
|
email: "", |
|
password: "", |
|
passwordConfirmation: "", |
|
emailVerificationString: "", |
|
oldPassword: "" // used for change password functionality |
|
}; |
|
|
|
function authReducer(state = initialState, action) { |
|
switch (action.type) { |
|
case IS_SENDING_AUTH_REQUEST: |
|
return { |
|
...state, |
|
isSendingAuthRequest: action.data |
|
}; |
|
case SET_AUTH_REQUEST_ERROR: |
|
return { |
|
...state, |
|
authRequestError: action.data |
|
}; |
|
case CLEAR_AUTH_REQUEST_ERROR: |
|
return { |
|
...state, |
|
authRequestError: "" |
|
}; |
|
case SET_AUTH_REQUEST_SUCCESS: |
|
return { |
|
...state, |
|
authRequestSuccess: action.data |
|
}; |
|
case CLEAR_AUTH_REQUEST_SUCCESS: |
|
return { |
|
...state, |
|
authRequestSuccess: "" |
|
}; |
|
case SET_SELF_USER_TOKEN: |
|
return { |
|
...state, |
|
userToken: me(action.data) |
|
}; |
|
case SET_FORM_EMAIL: |
|
return { |
|
...state, |
|
email: action.data |
|
}; |
|
case SET_FORM_PASSWORD: |
|
return { |
|
...state, |
|
password: action.data |
|
}; |
|
case SET_FORM_PASSWORD_CONFIRMATION: |
|
return { |
|
...state, |
|
passwordConfirmation: action.data |
|
}; |
|
case SET_FORM_EMAIL_VERIFICATION: |
|
return { |
|
...state, |
|
emailVerificationString: action.data |
|
}; |
|
case SET_FORM_OLD_PASSWORD: |
|
return { |
|
...state, |
|
oldPassword: action.data |
|
}; |
|
case SET_CLEAR_AUTH_STATE: |
|
return { |
|
...initialState |
|
}; |
|
default: |
|
return state; |
|
} |
|
} |
|
|
|
export default authReducer;
|
|
|