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.

middleware.ts 1.2KB

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