Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

middleware.js 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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 {
  10. INIT_SEARCH,
  11. INIT_UPDATE_STATS,
  12. RESET_SEARCH_CRITERIA
  13. } from './actionTypes';
  14. import { initReorderStats, updateStats } from './actions';
  15. import { filterBySearchCriteria, getSortedSpeakerStats, getPendingReorder, resetHiddenStats } from './functions';
  16. MiddlewareRegistry.register(({ dispatch, getState }) => next => action => {
  17. const result = next(action);
  18. switch (action.type) {
  19. case INIT_SEARCH: {
  20. const state = getState();
  21. const stats = filterBySearchCriteria(state);
  22. dispatch(updateStats(stats));
  23. break;
  24. }
  25. case INIT_UPDATE_STATS:
  26. if (action.getSpeakerStats) {
  27. const state = getState();
  28. const speakerStats = { ...action.getSpeakerStats() };
  29. const stats = filterBySearchCriteria(state, speakerStats);
  30. const pendingReorder = getPendingReorder(state);
  31. dispatch(updateStats(pendingReorder ? getSortedSpeakerStats(state, stats) : stats));
  32. }
  33. break;
  34. case RESET_SEARCH_CRITERIA: {
  35. const state = getState();
  36. const stats = resetHiddenStats(state);
  37. dispatch(updateStats(stats));
  38. break;
  39. }
  40. case PARTICIPANT_JOINED:
  41. case PARTICIPANT_LEFT:
  42. case PARTICIPANT_KICKED:
  43. case PARTICIPANT_UPDATED: {
  44. dispatch(initReorderStats());
  45. break;
  46. }
  47. }
  48. return result;
  49. });