user.js 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import {
  2. SET,
  3. UPDATE,
  4. USER_CONNECTED,
  5. USER_DISCONNECTED,
  6. USER_DATA,
  7. USER_LANG
  8. } from '../action-creator.sync.js'
  9. import { generateAvatarFromPublicName } from 'tracim_frontend_lib'
  10. const defaultUser = {
  11. user_id: -1,
  12. logged: null, // null avoid to be redirected to /login while whoami ep has not responded yet
  13. auth: '',
  14. timezone: '',
  15. profile: {
  16. id: 1,
  17. slug: 'user'
  18. },
  19. email: '',
  20. is_active: true,
  21. caldav_url: null,
  22. avatar_url: null,
  23. created: '',
  24. public_name: '',
  25. lang: 'en' // @FIXME Côme - 2018/07/30 - remove this line when api returns the lang (https://github.com/tracim/tracim/issues/734)
  26. }
  27. export default function user (state = defaultUser, action) {
  28. switch (action.type) {
  29. case `${SET}/${USER_CONNECTED}`:
  30. return {
  31. ...state,
  32. ...action.user,
  33. avatar_url: action.user.avatar_url
  34. ? action.user.avatar_url
  35. : action.user.public_name ? generateAvatarFromPublicName(action.user.public_name) : ''
  36. }
  37. case `${SET}/${USER_DISCONNECTED}`:
  38. return {...defaultUser, logged: false}
  39. case `${UPDATE}/${USER_DATA}`:
  40. return {...state, ...action.data}
  41. case `${SET}/${USER_LANG}`:
  42. return {...state, lang: action.lang}
  43. default:
  44. return state
  45. }
  46. }