ChatStore.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import {EventEmitter2 as EventEmitter} from 'eventemitter2';
  2. import {List, Map} from 'immutable';
  3. import AppDispatcher from '../dispatcher/AppDispatcher';
  4. import ChatConstants from '../constants/ChatConstants';
  5. const CHANGE_EVENT = 'change';
  6. var _messages = List();
  7. var _unseenCount = 0;
  8. var _isChatHidden = true;
  9. const ChatStore = Object.assign({}, EventEmitter.prototype, {
  10. getState() {
  11. return {
  12. messages: _messages,
  13. unseenCount: _unseenCount,
  14. isChatHidden: _isChatHidden
  15. };
  16. }
  17. });
  18. function toggleVisibility() {
  19. _isChatHidden = !_isChatHidden;
  20. _unseenCount = 0;
  21. }
  22. function submitMessage(message, className, received) {
  23. _messages = _messages.push(Map({
  24. message: message,
  25. className: className
  26. }));
  27. if (received && _isChatHidden) {
  28. _unseenCount += 1;
  29. }
  30. }
  31. AppDispatcher.register(payload => {
  32. const action = payload.action;
  33. switch (action.actionType) {
  34. case ChatConstants.TOGGLE_VISIBILITY:
  35. toggleVisibility();
  36. break;
  37. case ChatConstants.SUBMIT_MESSAGE:
  38. submitMessage(action.message, action.className, action.received);
  39. break;
  40. default:
  41. return true;
  42. }
  43. ChatStore.emit(CHANGE_EVENT);
  44. return true;
  45. });
  46. export default ChatStore;