UNPKG

@cabify/redux-polyglot

Version:

Tool for using Polyglot.js with Redux

45 lines (34 loc) 1.47 kB
'use strict'; 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; }); };