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
- }
- }
|