You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

reducer.js 923B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // @flow
  2. import { ReducerRegistry } from '../base/redux';
  3. import {
  4. ADD_MESSAGE,
  5. SET_LAST_READ_MESSAGE
  6. } from './actionTypes';
  7. const DEFAULT_STATE = {
  8. open: false,
  9. messages: [],
  10. lastReadMessage: null
  11. };
  12. ReducerRegistry.register('features/chat', (state = DEFAULT_STATE, action) => {
  13. switch (action.type) {
  14. case ADD_MESSAGE: {
  15. const newMessage = {
  16. message: action.message,
  17. timestamp: action.timestamp,
  18. userName: action.userName
  19. };
  20. return {
  21. ...state,
  22. lastReadMessage:
  23. action.hasRead ? newMessage : state.lastReadMessage,
  24. messages: [
  25. ...state.messages,
  26. newMessage
  27. ]
  28. };
  29. }
  30. case SET_LAST_READ_MESSAGE:
  31. return {
  32. ...state,
  33. lastReadMessage: action.message
  34. };
  35. }
  36. return state;
  37. });