Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@doodle/i18n / dist / state / saga / index.js
Size: Mime:
"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = loadI18NSaga;

var _effects = require("redux-saga/effects");

var _reactIntl = require("react-intl");

var _actions = require("../actions");

var _transform = require("../../onesky/transform");

var _cookie = _interopRequireDefault(require("../../cookie"));

var _import = require("../../import");

var _getCookieDomain = _interopRequireDefault(require("./getCookieDomain"));

function* onChangeLocale(options, action) {
  const {
    locale
  } = action.payload;
  const cookieDomain = (0, _getCookieDomain.default)();
  const reduxState = yield (0, _effects.select)(state => state[options.domain || 'i18n']);
  const {
    messages
  } = reduxState;

  _cookie.default.set('locale', locale, undefined, cookieDomain);

  if (document.documentElement) {
    document.documentElement.lang = locale;
  }

  if (!messages[locale]) {
    try {
      const {
        messagesData,
        reactIntlLocaleData
      } = yield (0, _effects.all)({
        intl: (0, _effects.call)(_import.importIntl),
        reactIntlLocaleData: (0, _effects.call)(_import.importLocaleData, locale),
        messagesData: (0, _effects.call)(_import.importMessages, locale)
      });

      if (reactIntlLocaleData) {
        (0, _reactIntl.addLocaleData)(reactIntlLocaleData);
      }

      yield (0, _effects.put)((0, _actions.fetchMessagesSuccess)(locale, (0, _transform.flatten)(messagesData)));
    } catch (error) {
      yield (0, _effects.put)((0, _actions.fetchMessagesError)(error));
    }
  }
}

function* onFetchMessages(options, action) {
  try {
    const {
      locale
    } = action.payload;
    const messages = yield (0, _effects.call)(_import.importMessages, locale);
    yield (0, _effects.put)((0, _actions.fetchMessagesSuccess)(locale, messages));
  } catch (error) {
    yield (0, _effects.put)((0, _actions.fetchMessagesError)(error));
  }
}

function* watchChangeLocale(options) {
  yield (0, _effects.takeLatest)(_actions.ActionTypes.CHANGE_LOCALE, onChangeLocale, options);
}

function* watchFetchMessages(options) {
  yield (0, _effects.takeLatest)(_actions.ActionTypes.FETCH_MESSAGES, onFetchMessages, options);
}

function* loadI18NSaga(options = {}) {
  yield (0, _effects.all)([(0, _effects.call)(watchChangeLocale, options), (0, _effects.call)(watchFetchMessages, options)]);
}
//# sourceMappingURL=index.js.map