Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import {
- USER_LOGIN_SUCCESS, USER_LOGIN_FAILURE,
- USER_LOGOUT_SUCCESS, USER_LOGOUT_FAILURE,
- USER_DATA_SUCCESS, USER_DATA_FAILURE
- } from '../constants/actionTypes';
- import api from '../api/chartmill-rest';
- export function login(username, password) {
- console.log('executing login...');
- return (dispatch, getState) => {
- if (getState().user.loggedIn) {
- return dispatch(loginFailure('Already logged in.'));
- }
- console.log('about to do the login api call');
- return api.login(username, password)
- .then(() => dispatch(loginSuccess))
- .catch(err => {
- dispatch(() => loginFailure(err === 401 ? 'Wrong credentials.' : 'Something went wrong.'));
- });
- };
- }
- function loginSuccess() {
- console.log('executing `loginSuccess`');
- return dispatch => {
- dispatch(userData);
- dispatch({
- type: USER_LOGIN_SUCCESS,
- payload: {
- loggedIn: true,
- error: null
- }
- });
- };
- }
- function loginFailure(msg) {
- console.log('executing `loginFailure`');
- return {
- type: USER_LOGIN_FAILURE,
- payload: {
- loggedIn: false,
- error: msg,
- data: {}
- }
- };
- }
- export function userData() {
- return dispatch => {
- return api.getUserData()
- .then(data => dispatch(userDataSuccess(data)))
- .catch(() => dispatch(userDataFailure()));
- };
- }
- export function logout() {
- return (dispatch, getState) => {
- if (!getState().user.loggedIn) {
- return dispatch(() => logoutFailure('Not logged in.'));
- }
- // TODO: logout api stuff
- return dispatch(logoutSuccess);
- };
- }
- function logoutSuccess() {
- return {
- type: USER_LOGOUT_SUCCESS,
- payload: {
- data: {},
- loggedIn: false,
- error: null
- }
- };
- }
- function logoutFailure(msg) {
- return {
- type: USER_LOGOUT_FAILURE,
- payload: {
- error: msg
- }
- };
- }
- function userDataSuccess(data) {
- return {
- type: USER_DATA_SUCCESS,
- payload: {
- loggedIn: true,
- data
- }
- };
- }
- function userDataFailure() {
- return {
- type: USER_DATA_FAILURE,
- payload: {
- loggedIn: false,
- data: {}
- }
- };
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement