stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
56 lines • 2.01 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useStreami18n = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = require("react");
var _dayjs = _interopRequireDefault(require("dayjs"));
var _useIsMountedRef = require("./useIsMountedRef");
var _Streami18n = require("../utils/i18n/Streami18n");
var useStreami18n = i18nInstance => {
var _useState = (0, _react.useState)({
t: _Streami18n.defaultTranslatorFunction,
tDateTimeParser: input => (0, _dayjs.default)(input)
}),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
translators = _useState2[0],
setTranslators = _useState2[1];
var isMounted = (0, _useIsMountedRef.useIsMountedRef)();
(0, _react.useEffect)(() => {
var streami18n;
if (i18nInstance instanceof _Streami18n.Streami18n) {
streami18n = i18nInstance;
} else {
streami18n = new _Streami18n.Streami18n({
language: 'en'
});
}
var updateTFunction = t => {
setTranslators(prevTranslator => ({
...prevTranslator,
t
}));
};
var _streami18n$addOnLang = streami18n.addOnLanguageChangeListener(t => {
updateTFunction(t);
}),
unsubscribeOnLanguageChangeListener = _streami18n$addOnLang.unsubscribe;
var _streami18n$addOnTFun = streami18n.addOnTFunctionOverrideListener(t => {
updateTFunction(t);
}),
unsubscribeOnTFuncOverrideListener = _streami18n$addOnTFun.unsubscribe;
streami18n.getTranslators().then(translator => {
if (translator && isMounted.current) {
setTranslators(translator);
}
});
return () => {
unsubscribeOnTFuncOverrideListener();
unsubscribeOnLanguageChangeListener();
};
}, [i18nInstance]);
return translators;
};
exports.useStreami18n = useStreami18n;
//# sourceMappingURL=useStreami18n.js.map