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 _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));

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

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 _utils = require("../../utils");

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

var _marked = /*#__PURE__*/_regenerator.default.mark(onChangeLocale),
    _marked2 = /*#__PURE__*/_regenerator.default.mark(watchChangeLocale),
    _marked3 = /*#__PURE__*/_regenerator.default.mark(loadI18NSaga);

function onChangeLocale(options, action) {
  var locale, cookieDomain, reduxState, messages, normalizedLocale, _normalizedLocale$spl, _normalizedLocale$spl2, language, _yield$all, data, _data, reactIntlLocaleData, messagesData;

  return _regenerator.default.wrap(function onChangeLocale$(_context) {
    while (1) {
      switch (_context.prev = _context.next) {
        case 0:
          locale = action.payload.locale;
          cookieDomain = (0, _getCookieDomain.default)();
          _context.next = 4;
          return (0, _effects.select)(function (state) {
            return state[options.domain || 'i18n'];
          });

        case 4:
          reduxState = _context.sent;
          messages = reduxState.messages;

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

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

          if (messages[locale]) {
            _context.next = 27;
            break;
          }

          _context.prev = 9;
          normalizedLocale = (0, _utils.normalizeLocale)(locale);
          _normalizedLocale$spl = normalizedLocale.split('-'), _normalizedLocale$spl2 = (0, _slicedToArray2.default)(_normalizedLocale$spl, 1), language = _normalizedLocale$spl2[0];
          _context.next = 14;
          return (0, _effects.all)({
            intl: (0, _effects.call)(_import.importIntl),
            data: (0, _effects.call)(options.loadLocaleFiles, locale, language)
          });

        case 14:
          _yield$all = _context.sent;
          data = _yield$all.data;
          _data = (0, _slicedToArray2.default)(data, 2), reactIntlLocaleData = _data[0], messagesData = _data[1];

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

          _context.next = 20;
          return (0, _effects.put)((0, _actions.fetchMessagesSuccess)(locale, (0, _transform.flatten)(messagesData)));

        case 20:
          _context.next = 27;
          break;

        case 22:
          _context.prev = 22;
          _context.t0 = _context["catch"](9);
          console.log('error', _context.t0);
          _context.next = 27;
          return (0, _effects.put)((0, _actions.fetchMessagesError)(_context.t0));

        case 27:
        case "end":
          return _context.stop();
      }
    }
  }, _marked, null, [[9, 22]]);
}

function watchChangeLocale(options) {
  return _regenerator.default.wrap(function watchChangeLocale$(_context2) {
    while (1) {
      switch (_context2.prev = _context2.next) {
        case 0:
          _context2.next = 2;
          return (0, _effects.takeLatest)(_actions.ActionTypes.CHANGE_LOCALE, onChangeLocale, options);

        case 2:
        case "end":
          return _context2.stop();
      }
    }
  }, _marked2);
}

function loadI18NSaga() {
  var options,
      _args3 = arguments;
  return _regenerator.default.wrap(function loadI18NSaga$(_context3) {
    while (1) {
      switch (_context3.prev = _context3.next) {
        case 0:
          options = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {};
          _context3.next = 3;
          return (0, _effects.all)([(0, _effects.call)(watchChangeLocale, options)]);

        case 3:
        case "end":
          return _context3.stop();
      }
    }
  }, _marked3);
}
//# sourceMappingURL=index.js.map