@cabify/redux-polyglot
Version:
Tool for using Polyglot.js with Redux
45 lines (34 loc) • 1.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useP = undefined;
var _react = require('react');
var _reactRedux = require('react-redux');
var _selectors = require('./selectors');
var areConfigsEqual = function areConfigsEqual() {
var prevConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var nextConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var prevKeys = Object.keys(prevConfig);
var nextKeys = Object.keys(nextConfig);
return prevKeys.length === nextKeys.length && prevKeys.every(function (key) {
return prevConfig[key] === nextConfig[key];
});
};
var useP = exports.useP = function useP(config) {
var configRef = (0, _react.useRef)(config);
var localeRef = (0, _react.useRef)();
var phrasesRef = (0, _react.useRef)();
var pRef = (0, _react.useRef)();
return (0, _reactRedux.useSelector)(function (state) {
var locale = (0, _selectors.getLocale)(state);
var phrases = (0, _selectors.getPhrases)(state);
if (!pRef.current || localeRef.current !== locale || phrasesRef.current !== phrases || !areConfigsEqual(configRef.current, config)) {
localeRef.current = locale;
phrasesRef.current = phrases;
configRef.current = config;
pRef.current = (0, _selectors.getP)(state, config);
}
return pRef.current;
});
};