32 lines
831 B
TypeScript
32 lines
831 B
TypeScript
import * as constants from '../constants'
|
|
import { Message, MessageAddAction } from '../actions/ChatActions'
|
|
import { NotificationAddAction } from '../actions/NotifyActions'
|
|
|
|
export type MessagesState = Message[]
|
|
|
|
const defaultState: MessagesState = []
|
|
|
|
function convertNotificationToMessage(action: NotificationAddAction): Message {
|
|
return {
|
|
userId: '[PeerCalls]',
|
|
message: action.payload.message,
|
|
timestamp: new Date().toLocaleString(),
|
|
}
|
|
}
|
|
|
|
export default function messages (
|
|
state = defaultState, action: MessageAddAction | NotificationAddAction,
|
|
): MessagesState {
|
|
switch (action.type) {
|
|
case constants.NOTIFY:
|
|
return [
|
|
...state,
|
|
convertNotificationToMessage(action),
|
|
]
|
|
case constants.MESSAGE_ADD:
|
|
return [...state, action.payload]
|
|
default:
|
|
return state
|
|
}
|
|
}
|