Skip to content

Instantly share code, notes, and snippets.

@johnrhampton
Created June 21, 2016 12:35
Show Gist options
  • Save johnrhampton/8b5f71e16f66e3cb2a2f4f1f2b3b4bc8 to your computer and use it in GitHub Desktop.
Save johnrhampton/8b5f71e16f66e3cb2a2f4f1f2b3b4bc8 to your computer and use it in GitHub Desktop.
/common/actions/user.action
'use strict';
import * as userService from '../services/user.service';
import {connectSocket} from '../adapters/socket.adapter';
import {changeRoute} from './navigation.action';
import {
showLoading,
hideLoading
} from './loading.action';
import {SITE_CONTEXT} from '../constants/system';
export const CHANGE_SITE_CONTEXT = 'CHANGE_SITE_CONTEXT';
export const LEADS_PROFILE = 'LEADS_PROFILE';
export const LOGIN_REQUEST = 'LOGIN_REQUEST';
export const LOGIN_COMPLETE = 'LOGIN_COMPLETE';
export const LOGOUT_REQUEST = 'LOGOUT_REQUEST';
export const LOGOUT_COMPLETE = 'LOGOUT_COMPLETE';
export const SET_ACTIVE_CALLBACK = 'SET_ACTIVE_CALLBACK';
export const TOGGLE_CALLBACKS = 'TOGGLE_CALLBACKS';
export const UPDATE_MY_CALLBACKS = 'UPDATE_MY_CALLBACKS';
export const UPDATE_LOGIN_FIELD = 'UPDATE_LOGIN_FIELD';
export function changeSiteContext(site_context) {
return dispatch => {
let dispatch_payload = {
type: CHANGE_SITE_CONTEXT,
site_context: site_context
};
let route = site_context === SITE_CONTEXT.ADMIN ?
'/admin' : '/dashboard';
dispatch(dispatch_payload);
dispatch(changeRoute(route));
}
}
export function loginComplete(payload) {
return {
type: LOGIN_COMPLETE,
profile: payload.profile,
error: payload.error
};
}
export function login(username, password, phoneExt) {
return dispatch => {
dispatch(loginRequest());
return userService.login(username, password, phoneExt)
.then(profile => {
connectSocket(profile.user.id);
dispatch(loginComplete({profile: profile}));
})
.catch(error => {
dispatch(loginComplete({error: error}));
});
}
}
export function logout() {
return dispatch => {
dispatch(showLoading());
return userService.logout()
.then(response => {
dispatch(logoutComplete({response: response}));
dispatch(hideLoading());
dispatch(changeRoute('/'));
})
.catch(error => {
dispatch(logoutComplete({error: error}));
dispatch(hideLoading());
dispatch(changeRoute('/'));
});
}
}
export function setActiveCallback(direction) {
return dispatch => {
dispatch({
type: SET_ACTIVE_CALLBACK,
direction: direction
});
}
}
export function toggleCallbacks() {
return dispatch => {
dispatch({type: TOGGLE_CALLBACKS});
};
}
export function updateLoginField(key, value) {
return dispatch => {
let dispatch_payload = {
type: UPDATE_LOGIN_FIELD,
key: key,
value: value
};
dispatch(dispatch_payload);
}
}
export function updateMyCallbacks(callbacks) {
return dispatch => {
let dispatch_payload = {
type: UPDATE_MY_CALLBACKS,
my_callbacks: callbacks
};
dispatch(dispatch_payload);
}
}
function logoutComplete(payload) {
return {
type: LOGOUT_COMPLETE,
error: payload.error
};
}
function loginRequest() {
return {
type: LOGIN_REQUEST
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment