Advertisement
Guest User

Untitled

a guest
Jun 21st, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.93 KB | None | 0 0
  1. 'use strict';
  2.  
  3. import {cloneDeep} from 'lodash';
  4.  
  5. import {
  6. CHANGE_SITE_CONTEXT,
  7. LEADS_PROFILE,
  8. LOGIN_COMPLETE,
  9. LOGIN_REQUEST,
  10. LOGOUT_REQUEST,
  11. LOGOUT_COMPLETE,
  12. SET_ACTIVE_CALLBACK,
  13. TOGGLE_CALLBACKS,
  14. UPDATE_LOGIN_FIELD,
  15. UPDATE_MY_CALLBACKS
  16. } from '../actions/user.action';
  17.  
  18. const initial_login_state = {username: '', password: '', phone_ext: ''};
  19.  
  20. export function user_reducer(state = {}, action) {
  21. switch (action.type) {
  22. case CHANGE_SITE_CONTEXT:
  23. return changeSiteContext(state, action);
  24. case LOGIN_COMPLETE:
  25. return loginComplete(state, action);
  26. case LOGOUT_COMPLETE:
  27. return logoutComplete(state, action);
  28. case LOGIN_REQUEST:
  29. return loginRequest(state, action);
  30. case LOGOUT_REQUEST:
  31. return logoutRequest(state, action);
  32. case SET_ACTIVE_CALLBACK:
  33. return setActiveCallback(state, action);
  34. case TOGGLE_CALLBACKS:
  35. return toggleCallbacks(state, action);
  36. case UPDATE_LOGIN_FIELD:
  37. return updateLoginField(state, action);
  38. case UPDATE_MY_CALLBACKS:
  39. return updateMyCallbacks(state, action);
  40. default:
  41. return Object.assign({}, state, {
  42. login_profile: state.login_profile || initial_login_state,
  43. key_map: {
  44. 'login': 'enter'
  45. }
  46. });
  47. }
  48. }
  49.  
  50. function changeSiteContext(state, action) {
  51. let profile = Object.assign({}, state.profile);
  52. profile.site_context = action.site_context;
  53. localStorage[LEADS_PROFILE] = JSON.stringify(profile);
  54.  
  55. return Object.assign({}, state, {
  56. type: CHANGE_SITE_CONTEXT,
  57. error: null,
  58. profile: profile
  59. });
  60. }
  61.  
  62. function loginComplete(state, action) {
  63. let login_profile = Object.assign({}, state.login_profile);
  64. login_profile.password = '';
  65.  
  66. var callbacks = [];
  67. var active_callback = null;
  68. // ensure we have callbacks array
  69. if (action.profile && action.profile.user) {
  70. callbacks = action.profile.user.callbacks || [];
  71. active_callback = callbacks[0];
  72. }
  73.  
  74. return Object.assign({}, state, {
  75. type: LOGIN_COMPLETE,
  76. error: action.error,
  77. profile: action.profile,
  78. loading: false,
  79. login_profile: login_profile,
  80. callbacks_visible: false,
  81. active_callback: active_callback,
  82. active_callback_index: 0
  83. });
  84. }
  85.  
  86. function logoutComplete(state, action) {
  87. let logout_profile = {
  88. site_context: state.profile.site_context,
  89. user: {
  90. campaigns: [],
  91. callbacks: []
  92. }
  93. };
  94.  
  95. return Object.assign({}, state, {
  96. type: LOGOUT_COMPLETE,
  97. error: action.error,
  98. profile: logout_profile,
  99. loading: false
  100. });
  101. }
  102.  
  103. function loginRequest(state, action) {
  104. return Object.assign({}, state, {
  105. type: LOGIN_REQUEST,
  106. loading: true,
  107. error: null
  108. });
  109. }
  110.  
  111. function logoutRequest(state, action) {
  112. return Object.assign({}, state, {
  113. type: LOGOUT_REQUEST,
  114. loading: true,
  115. error: null
  116. });
  117. }
  118.  
  119. function setActiveCallback(state, action) {
  120. var active_cb_index = state.active_callback_index;
  121. if (action.direction === 'next') {
  122. ++active_cb_index;
  123. } else {
  124. --active_cb_index;
  125. }
  126.  
  127. return Object.assign({}, state, {
  128. type: SET_ACTIVE_CALLBACK,
  129. active_callback: state.profile.user.callbacks[active_cb_index],
  130. active_callback_index: active_cb_index
  131. });
  132. }
  133.  
  134. function toggleCallbacks(state, action) {
  135. return Object.assign({}, state, {
  136. type: TOGGLE_CALLBACKS,
  137. callbacks_visible: !state.callbacks_visible
  138. });
  139. }
  140.  
  141. function updateLoginField(state, action) {
  142. var login_profile = Object.assign({}, state.login_profile);
  143. login_profile[action.key] = action.value;
  144.  
  145. return Object.assign({}, state, {
  146. type: UPDATE_LOGIN_FIELD,
  147. error: null,
  148. login_profile: login_profile
  149. });
  150. }
  151.  
  152. function updateMyCallbacks(state, action) {
  153. var profile = cloneDeep(state.profile);
  154. profile.user.callbacks = action.my_callbacks || [];
  155.  
  156. var active_callback = profile.user.callbacks[0];
  157.  
  158. return Object.assign({}, state, {
  159. type: UPDATE_MY_CALLBACKS,
  160. profile: profile,
  161. active_callback: active_callback,
  162. active_callback_index: 0
  163. });
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement