profile.js 1.2 KB

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