Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

middleware.js 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // @flow
  2. import {
  3. PARTICIPANT_JOINED,
  4. PARTICIPANT_KICKED,
  5. PARTICIPANT_LEFT,
  6. PARTICIPANT_UPDATED
  7. } from '../base/participants/actionTypes';
  8. import { MiddlewareRegistry } from '../base/redux';
  9. import { INIT_SEARCH, INIT_UPDATE_STATS } from './actionTypes';
  10. import { initReorderStats, updateStats } from './actions';
  11. import { filterBySearchCriteria, getSortedSpeakerStats, getPendingReorder } from './functions';
  12. MiddlewareRegistry.register(({ dispatch, getState }) => next => action => {
  13. const result = next(action);
  14. switch (action.type) {
  15. case INIT_SEARCH: {
  16. const state = getState();
  17. const stats = filterBySearchCriteria(state);
  18. dispatch(updateStats(stats));
  19. break;
  20. }
  21. case INIT_UPDATE_STATS:
  22. if (action.getSpeakerStats) {
  23. const state = getState();
  24. const speakerStats = { ...action.getSpeakerStats() };
  25. const stats = filterBySearchCriteria(state, speakerStats);
  26. const pendingReorder = getPendingReorder(state);
  27. dispatch(updateStats(pendingReorder ? getSortedSpeakerStats(state, stats) : stats));
  28. }
  29. break;
  30. case PARTICIPANT_JOINED:
  31. case PARTICIPANT_LEFT:
  32. case PARTICIPANT_KICKED:
  33. case PARTICIPANT_UPDATED: {
  34. dispatch(initReorderStats());
  35. break;
  36. }
  37. }
  38. return result;
  39. });