Repository URL to install this package:
|
Version:
5.0.0-rc.13 ▾
|
"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