import { Action, ActionReducerMap, combineReducers } from '@ngrx/store'; import { initialState, IChatState } from './chat.state'; import * as ChatActions from '../chat.actions'; import * as _ from 'lodash'; import { ChatMessage } from '../entities'; export function chatReducerFun(state = initialState, action: ChatActions.ChatActionsUnion): IChatState { switch (action.type) { case ChatActions.ActionTypes.InitApp: return { ...state, appUser: _.assign({}, action.paylad) as any }; case ChatActions.ActionTypes.LoginChat: // 处理登陆 return { ...state, appUser: _.assign({}, state.appUser, action.paylad) as any }; case ChatActions.ActionTypes.ChannelChanged: return { ...state, channel: action.paylad }; case ChatActions.ActionTypes.MessageChanged: const data = action.paylad as any; const messages = state.messages.concat(); // messages.unshift(...data); messages.push(...data); return { ...state, messages }; default: return state; } } export interface IChatRootState { chat: IChatState; } export const chatReducer: ActionReducerMap = { chat: chatReducerFun };