profile.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import moment from "moment"
  2. import {
  3. UPDATE_AVATAR,
  4. UPDATE_USERNAME,
  5. hydrateStatus
  6. } from "misago/reducers/users"
  7. export const HYDRATE_PROFILE = "HYDRATE_PROFILE"
  8. export const PATCH_PROFILE = "PATCH_PROFILE"
  9. export function hydrate(profile) {
  10. return {
  11. type: HYDRATE_PROFILE,
  12. profile
  13. }
  14. }
  15. export function patch(patch) {
  16. return {
  17. type: PATCH_PROFILE,
  18. patch
  19. }
  20. }
  21. export default function auth(state = {}, action = null) {
  22. switch (action.type) {
  23. case HYDRATE_PROFILE:
  24. return Object.assign({}, action.profile, {
  25. joined_on: moment(action.profile.joined_on),
  26. status: hydrateStatus(action.profile.status)
  27. })
  28. case PATCH_PROFILE:
  29. return Object.assign({}, state, action.patch)
  30. case UPDATE_AVATAR:
  31. if (state.id === action.userId) {
  32. return Object.assign({}, state, {
  33. avatars: action.avatars
  34. })
  35. }
  36. return state
  37. case UPDATE_USERNAME:
  38. if (state.id === action.userId) {
  39. return Object.assign({}, state, {
  40. username: action.username,
  41. slug: action.slug
  42. })
  43. }
  44. return state
  45. default:
  46. return state
  47. }
  48. }