1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import moment from 'moment';
- import { UPDATE_AVATAR, UPDATE_USERNAME } from 'misago/reducers/users';
- import concatUnique from 'misago/utils/concat-unique';
- export const ADD_NAME_CHANGE = 'ADD_NAME_CHANGE';
- export const APPEND_HISTORY = 'APPEND_HISTORY';
- export const HYDRATE_HISTORY = 'HYDRATE_HISTORY';
- export function addNameChange(change, user, changedBy) {
- return {
- type: ADD_NAME_CHANGE,
- change,
- user,
- changedBy
- };
- }
- export function append(items) {
- return {
- type: APPEND_HISTORY,
- items: items
- };
- }
- export function hydrate(items) {
- return {
- type: HYDRATE_HISTORY,
- items: items
- };
- }
- export function hydrateNamechange(namechange) {
- return Object.assign({}, namechange, {
- changed_on: moment(namechange.changed_on)
- });
- }
- export default function username(state=[], action=null) {
- switch (action.type) {
- case ADD_NAME_CHANGE:
- let newState = state.slice();
- newState.unshift({
- id: Math.floor(Date.now() / 1000), // just small hax for getting id
- changed_by: action.changedBy,
- changed_by_username: action.changedBy.username,
- changed_on: moment(),
- new_username: action.change.username,
- old_username: action.user.username
- });
- return newState;
- case APPEND_HISTORY:
- return concatUnique(state, action.items.map(hydrateNamechange));
- case HYDRATE_HISTORY:
- return action.items.map(hydrateNamechange);
- case UPDATE_AVATAR:
- return state.map(function(item) {
- item = Object.assign({}, item);
- if (item.changed_by && item.changed_by.id === action.userId) {
- item.changed_by = Object.assign({}, item.changed_by, {
- avatars: action.avatars
- });
- }
- return item;
- });
- case UPDATE_USERNAME:
- return state.map(function(item) {
- item = Object.assign({}, item);
- if (item.changed_by && item.changed_by.id === action.userId) {
- item.changed_by = Object.assign({}, item.changed_by, {
- username: action.username,
- slug: action.slug
- });
- }
- return Object.assign({}, item);
- });
- default:
- return state;
- }
- }
|