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.2KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // @flow
  2. import { SET_DYNAMIC_BRANDING_DATA } from '../../dynamic-branding/actionTypes';
  3. import { MiddlewareRegistry } from '../redux';
  4. import { I18NEXT_INITIALIZED, LANGUAGE_CHANGED } from './actionTypes';
  5. import { changeLanguageBundle } from './functions';
  6. import i18next from './i18next';
  7. import logger from './logger';
  8. /**
  9. * Implements the entry point of the middleware of the feature base/i18n.
  10. *
  11. * @param {Store} store - The redux store.
  12. * @returns {Function}
  13. */
  14. MiddlewareRegistry.register(store => next => async action => {
  15. switch (action.type) {
  16. case I18NEXT_INITIALIZED:
  17. case LANGUAGE_CHANGED:
  18. case SET_DYNAMIC_BRANDING_DATA: {
  19. const { language } = i18next;
  20. const { labels } = action.type === SET_DYNAMIC_BRANDING_DATA
  21. ? action.value
  22. : store.getState()['features/dynamic-branding'];
  23. if (language && labels && labels[language]) {
  24. try {
  25. await changeLanguageBundle(language, labels[language]);
  26. } catch (err) {
  27. logger.log('Error setting dynamic language bundle', err);
  28. }
  29. }
  30. break;
  31. }
  32. }
  33. return next(action);
  34. });