stream-chat-react-native-core 5.12.1 → 5.13.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +1 -1
  2. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  3. package/lib/commonjs/components/Chat/Chat.js +1 -4
  4. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  5. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +1 -4
  6. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
  7. package/lib/commonjs/hooks/useStreami18n.js +17 -8
  8. package/lib/commonjs/hooks/useStreami18n.js.map +1 -1
  9. package/lib/commonjs/utils/Streami18n.js +78 -27
  10. package/lib/commonjs/utils/Streami18n.js.map +1 -1
  11. package/lib/commonjs/version.json +1 -1
  12. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +1 -1
  13. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  14. package/lib/module/components/Chat/Chat.js +1 -4
  15. package/lib/module/components/Chat/Chat.js.map +1 -1
  16. package/lib/module/contexts/overlayContext/OverlayProvider.js +1 -4
  17. package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
  18. package/lib/module/hooks/useStreami18n.js +17 -8
  19. package/lib/module/hooks/useStreami18n.js.map +1 -1
  20. package/lib/module/utils/Streami18n.js +78 -27
  21. package/lib/module/utils/Streami18n.js.map +1 -1
  22. package/lib/module/version.json +1 -1
  23. package/lib/typescript/hooks/useStreami18n.d.ts +1 -4
  24. package/lib/typescript/utils/Streami18n.d.ts +13 -6
  25. package/package.json +1 -1
  26. package/src/__tests__/optimistic-update.test.js +2 -1
  27. package/src/components/ChannelList/__tests__/ChannelList.test.js +4 -2
  28. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +6 -4
  29. package/src/components/Chat/Chat.tsx +1 -1
  30. package/src/contexts/overlayContext/OverlayProvider.tsx +1 -1
  31. package/src/hooks/useStreami18n.ts +21 -12
  32. package/src/utils/Streami18n.ts +66 -18
  33. package/src/version.json +1 -1
@@ -8,15 +8,12 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
8
8
  var _react = require("react");
9
9
  var _useIsMountedRef = require("./useIsMountedRef");
10
10
  var _Streami18n = require("../utils/Streami18n");
11
- var useStreami18n = function useStreami18n(_ref) {
12
- var i18nInstance = _ref.i18nInstance,
13
- setTranslators = _ref.setTranslators;
11
+ var useStreami18n = function useStreami18n(setTranslators, i18nInstance) {
14
12
  var _useState = (0, _react.useState)(true),
15
13
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
16
14
  loadingTranslators = _useState2[0],
17
15
  setLoadingTranslators = _useState2[1];
18
16
  var isMounted = (0, _useIsMountedRef.useIsMountedRef)();
19
- var i18nInstanceExists = !!i18nInstance;
20
17
  (0, _react.useEffect)(function () {
21
18
  var streami18n;
22
19
  if (i18nInstance instanceof _Streami18n.Streami18n) {
@@ -26,18 +23,30 @@ var useStreami18n = function useStreami18n(_ref) {
26
23
  language: 'en'
27
24
  });
28
25
  }
29
- streami18n.registerSetLanguageCallback(function (t) {
30
- return setTranslators(function (prevTranslator) {
26
+ var updateTFunction = function updateTFunction(t) {
27
+ setTranslators(function (prevTranslator) {
31
28
  return (0, _extends2["default"])({}, prevTranslator, {
32
29
  t: t
33
30
  });
34
31
  });
35
- });
32
+ };
33
+ var _streami18n$addOnLang = streami18n.addOnLanguageChangeListener(function (t) {
34
+ updateTFunction(t);
35
+ }),
36
+ unsubscribeOnLanguageChangeListener = _streami18n$addOnLang.unsubscribe;
37
+ var _streami18n$addOnTFun = streami18n.addOnTFunctionOverrideListener(function (t) {
38
+ updateTFunction(t);
39
+ }),
40
+ unsubscribeOnTFuncOverrideListener = _streami18n$addOnTFun.unsubscribe;
36
41
  streami18n.getTranslators().then(function (translator) {
37
42
  if (translator && isMounted.current) setTranslators(translator);
38
43
  });
39
44
  setLoadingTranslators(false);
40
- }, [i18nInstanceExists, i18nInstance]);
45
+ return function () {
46
+ unsubscribeOnTFuncOverrideListener();
47
+ unsubscribeOnLanguageChangeListener();
48
+ };
49
+ }, [i18nInstance]);
41
50
  return loadingTranslators;
42
51
  };
43
52
  exports.useStreami18n = useStreami18n;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_useIsMountedRef","_Streami18n","useStreami18n","_ref","i18nInstance","setTranslators","_useState","useState","_useState2","_slicedToArray2","loadingTranslators","setLoadingTranslators","isMounted","useIsMountedRef","i18nInstanceExists","useEffect","streami18n","Streami18n","language","registerSetLanguageCallback","t","prevTranslator","_extends2","getTranslators","then","translator","current","exports"],"sources":["useStreami18n.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useIsMountedRef } from './useIsMountedRef';\n\nimport type { TranslatorFunctions } from '../contexts/translationContext/TranslationContext';\nimport { Streami18n } from '../utils/Streami18n';\n\nexport const useStreami18n = ({\n i18nInstance,\n setTranslators,\n}: {\n setTranslators: React.Dispatch<React.SetStateAction<TranslatorFunctions>>;\n i18nInstance?: Streami18n;\n}) => {\n const [loadingTranslators, setLoadingTranslators] = useState(true);\n const isMounted = useIsMountedRef();\n const i18nInstanceExists = !!i18nInstance;\n useEffect(() => {\n let streami18n: Streami18n;\n\n if (i18nInstance instanceof Streami18n) {\n streami18n = i18nInstance;\n } else {\n streami18n = new Streami18n({ language: 'en' });\n }\n\n streami18n.registerSetLanguageCallback((t: (key: string) => string) =>\n setTranslators((prevTranslator) => ({ ...prevTranslator, t })),\n );\n streami18n.getTranslators().then((translator) => {\n if (translator && isMounted.current) setTranslators(translator);\n });\n\n setLoadingTranslators(false);\n }, [i18nInstanceExists, i18nInstance]);\n\n return loadingTranslators;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,gBAAA,GAAAD,OAAA;AAGA,IAAAE,WAAA,GAAAF,OAAA;AAEO,IAAMG,aAAa,GAAG,SAAhBA,aAAaA,CAAAC,IAAA,EAMpB;EAAA,IALJC,YAAY,GAAAD,IAAA,CAAZC,YAAY;IACZC,cAAc,GAAAF,IAAA,CAAdE,cAAc;EAKd,IAAAC,SAAA,GAAoD,IAAAC,eAAQ,EAAC,IAAI,CAAC;IAAAC,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAA3DI,kBAAkB,GAAAF,UAAA;IAAEG,qBAAqB,GAAAH,UAAA;EAChD,IAAMI,SAAS,GAAG,IAAAC,gCAAe,GAAE;EACnC,IAAMC,kBAAkB,GAAG,CAAC,CAACV,YAAY;EACzC,IAAAW,gBAAS,EAAC,YAAM;IACd,IAAIC,UAAsB;IAE1B,IAAIZ,YAAY,YAAYa,sBAAU,EAAE;MACtCD,UAAU,GAAGZ,YAAY;IAC3B,CAAC,MAAM;MACLY,UAAU,GAAG,IAAIC,sBAAU,CAAC;QAAEC,QAAQ,EAAE;MAAK,CAAC,CAAC;IACjD;IAEAF,UAAU,CAACG,2BAA2B,CAAC,UAACC,CAA0B;MAAA,OAChEf,cAAc,CAAC,UAACgB,cAAc;QAAA,WAAAC,SAAA,iBAAWD,cAAc;UAAED,CAAC,EAADA;QAAC;MAAA,CAAG,CAAC;IAAA,EAC/D;IACDJ,UAAU,CAACO,cAAc,EAAE,CAACC,IAAI,CAAC,UAACC,UAAU,EAAK;MAC/C,IAAIA,UAAU,IAAIb,SAAS,CAACc,OAAO,EAAErB,cAAc,CAACoB,UAAU,CAAC;IACjE,CAAC,CAAC;IAEFd,qBAAqB,CAAC,KAAK,CAAC;EAC9B,CAAC,EAAE,CAACG,kBAAkB,EAAEV,YAAY,CAAC,CAAC;EAEtC,OAAOM,kBAAkB;AAC3B,CAAC;AAACiB,OAAA,CAAAzB,aAAA,GAAAA,aAAA"}
1
+ {"version":3,"names":["_react","require","_useIsMountedRef","_Streami18n","useStreami18n","setTranslators","i18nInstance","_useState","useState","_useState2","_slicedToArray2","loadingTranslators","setLoadingTranslators","isMounted","useIsMountedRef","useEffect","streami18n","Streami18n","language","updateTFunction","t","prevTranslator","_extends2","_streami18n$addOnLang","addOnLanguageChangeListener","unsubscribeOnLanguageChangeListener","unsubscribe","_streami18n$addOnTFun","addOnTFunctionOverrideListener","unsubscribeOnTFuncOverrideListener","getTranslators","then","translator","current","exports"],"sources":["useStreami18n.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useIsMountedRef } from './useIsMountedRef';\n\nimport type { TranslatorFunctions } from '../contexts/translationContext/TranslationContext';\nimport { Streami18n } from '../utils/Streami18n';\n\nexport const useStreami18n = (\n setTranslators: React.Dispatch<React.SetStateAction<TranslatorFunctions>>,\n i18nInstance?: Streami18n,\n) => {\n const [loadingTranslators, setLoadingTranslators] = useState(true);\n const isMounted = useIsMountedRef();\n useEffect(() => {\n let streami18n: Streami18n;\n\n if (i18nInstance instanceof Streami18n) {\n streami18n = i18nInstance;\n } else {\n streami18n = new Streami18n({ language: 'en' });\n }\n\n const updateTFunction = (t: TranslatorFunctions['t']) => {\n setTranslators((prevTranslator) => ({ ...prevTranslator, t }));\n };\n\n const { unsubscribe: unsubscribeOnLanguageChangeListener } =\n streami18n.addOnLanguageChangeListener((t) => {\n updateTFunction(t);\n });\n const { unsubscribe: unsubscribeOnTFuncOverrideListener } =\n streami18n.addOnTFunctionOverrideListener((t) => {\n updateTFunction(t);\n });\n streami18n.getTranslators().then((translator) => {\n if (translator && isMounted.current) setTranslators(translator);\n });\n\n setLoadingTranslators(false);\n return () => {\n unsubscribeOnTFuncOverrideListener();\n unsubscribeOnLanguageChangeListener();\n };\n }, [i18nInstance]);\n\n return loadingTranslators;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,gBAAA,GAAAD,OAAA;AAGA,IAAAE,WAAA,GAAAF,OAAA;AAEO,IAAMG,aAAa,GAAG,SAAhBA,aAAaA,CACxBC,cAAyE,EACzEC,YAAyB,EACtB;EACH,IAAAC,SAAA,GAAoD,IAAAC,eAAQ,EAAC,IAAI,CAAC;IAAAC,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAA3DI,kBAAkB,GAAAF,UAAA;IAAEG,qBAAqB,GAAAH,UAAA;EAChD,IAAMI,SAAS,GAAG,IAAAC,gCAAe,GAAE;EACnC,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAIC,UAAsB;IAE1B,IAAIV,YAAY,YAAYW,sBAAU,EAAE;MACtCD,UAAU,GAAGV,YAAY;IAC3B,CAAC,MAAM;MACLU,UAAU,GAAG,IAAIC,sBAAU,CAAC;QAAEC,QAAQ,EAAE;MAAK,CAAC,CAAC;IACjD;IAEA,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,CAA2B,EAAK;MACvDf,cAAc,CAAC,UAACgB,cAAc;QAAA,WAAAC,SAAA,iBAAWD,cAAc;UAAED,CAAC,EAADA;QAAC;MAAA,CAAG,CAAC;IAChE,CAAC;IAED,IAAAG,qBAAA,GACEP,UAAU,CAACQ,2BAA2B,CAAC,UAACJ,CAAC,EAAK;QAC5CD,eAAe,CAACC,CAAC,CAAC;MACpB,CAAC,CAAC;MAHiBK,mCAAmC,GAAAF,qBAAA,CAAhDG,WAAW;IAInB,IAAAC,qBAAA,GACEX,UAAU,CAACY,8BAA8B,CAAC,UAACR,CAAC,EAAK;QAC/CD,eAAe,CAACC,CAAC,CAAC;MACpB,CAAC,CAAC;MAHiBS,kCAAkC,GAAAF,qBAAA,CAA/CD,WAAW;IAInBV,UAAU,CAACc,cAAc,EAAE,CAACC,IAAI,CAAC,UAACC,UAAU,EAAK;MAC/C,IAAIA,UAAU,IAAInB,SAAS,CAACoB,OAAO,EAAE5B,cAAc,CAAC2B,UAAU,CAAC;IACjE,CAAC,CAAC;IAEFpB,qBAAqB,CAAC,KAAK,CAAC;IAC5B,OAAO,YAAM;MACXiB,kCAAkC,EAAE;MACpCJ,mCAAmC,EAAE;IACvC,CAAC;EACH,CAAC,EAAE,CAACnB,YAAY,CAAC,CAAC;EAElB,OAAOK,kBAAkB;AAC3B,CAAC;AAACuB,OAAA,CAAA9B,aAAA,GAAAA,aAAA"}
@@ -151,10 +151,9 @@ var Streami18n = function () {
151
151
  (0, _classCallCheck2["default"])(this, Streami18n);
152
152
  this.i18nInstance = _i18next["default"].createInstance();
153
153
  this.Dayjs = null;
154
- this.setLanguageCallback = function () {
155
- return null;
156
- };
157
154
  this.initialized = false;
155
+ this.onLanguageChangeListeners = [];
156
+ this.onTFunctionOverrideListeners = [];
158
157
  this.t = function (key) {
159
158
  return key;
160
159
  };
@@ -251,6 +250,7 @@ var Streami18n = function () {
251
250
  key: "init",
252
251
  value: function () {
253
252
  var _init = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
253
+ var _this2 = this;
254
254
  return _regenerator["default"].wrap(function _callee$(_context) {
255
255
  while (1) switch (_context.prev = _context.next) {
256
256
  case 0:
@@ -263,23 +263,27 @@ var Streami18n = function () {
263
263
  }));
264
264
  case 4:
265
265
  this.t = _context.sent;
266
+ if (this.queuedTFunctionOverride) {
267
+ this.t = this.queuedTFunctionOverride;
268
+ this.queuedTFunctionOverride = undefined;
269
+ this.onTFunctionOverrideListeners.forEach(function (listener) {
270
+ return listener(_this2.t);
271
+ });
272
+ }
266
273
  this.initialized = true;
267
- _context.next = 11;
274
+ _context.next = 12;
268
275
  break;
269
- case 8:
270
- _context.prev = 8;
276
+ case 9:
277
+ _context.prev = 9;
271
278
  _context.t0 = _context["catch"](1);
272
279
  this.logger("Something went wrong with init: " + JSON.stringify(_context.t0));
273
- case 11:
274
- return _context.abrupt("return", {
275
- t: this.t,
276
- tDateTimeParser: this.tDateTimeParser
277
- });
278
280
  case 12:
281
+ this.waitForInitializing = undefined;
282
+ case 13:
279
283
  case "end":
280
284
  return _context.stop();
281
285
  }
282
- }, _callee, this, [[1, 8]]);
286
+ }, _callee, this, [[1, 9]]);
283
287
  }));
284
288
  function init() {
285
289
  return _init.apply(this, arguments);
@@ -290,26 +294,37 @@ var Streami18n = function () {
290
294
  key: "getTranslators",
291
295
  value: function () {
292
296
  var _getTranslators = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2() {
297
+ var initPromise;
293
298
  return _regenerator["default"].wrap(function _callee2$(_context2) {
294
299
  while (1) switch (_context2.prev = _context2.next) {
295
300
  case 0:
296
301
  if (this.initialized) {
297
- _context2.next = 7;
302
+ _context2.next = 11;
298
303
  break;
299
304
  }
300
- if (this.dayjsLocales[this.currentLanguage]) {
301
- this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);
305
+ if (!this.waitForInitializing) {
306
+ _context2.next = 6;
307
+ break;
302
308
  }
303
309
  _context2.next = 4;
304
- return this.init();
310
+ return this.waitForInitializing;
305
311
  case 4:
306
- return _context2.abrupt("return", _context2.sent);
307
- case 7:
312
+ _context2.next = 11;
313
+ break;
314
+ case 6:
315
+ if (this.dayjsLocales[this.currentLanguage]) {
316
+ this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);
317
+ }
318
+ initPromise = this.init();
319
+ this.waitForInitializing = initPromise;
320
+ _context2.next = 11;
321
+ return initPromise;
322
+ case 11:
308
323
  return _context2.abrupt("return", {
309
324
  t: this.t,
310
325
  tDateTimeParser: this.tDateTimeParser
311
326
  });
312
- case 8:
327
+ case 12:
313
328
  case "end":
314
329
  return _context2.stop();
315
330
  }
@@ -375,18 +390,21 @@ var Streami18n = function () {
375
390
  if (this.dayjsLocales[language]) {
376
391
  this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);
377
392
  }
378
- this.setLanguageCallback(_t);
393
+ this.t = _t;
394
+ this.onLanguageChangeListeners.forEach(function (listener) {
395
+ return listener(_t);
396
+ });
379
397
  return _context3.abrupt("return", _t);
380
- case 12:
381
- _context3.prev = 12;
398
+ case 13:
399
+ _context3.prev = 13;
382
400
  _context3.t0 = _context3["catch"](3);
383
401
  this.logger("Failed to set language: " + JSON.stringify(_context3.t0));
384
402
  return _context3.abrupt("return", this.t);
385
- case 16:
403
+ case 17:
386
404
  case "end":
387
405
  return _context3.stop();
388
406
  }
389
- }, _callee3, this, [[3, 12]]);
407
+ }, _callee3, this, [[3, 13]]);
390
408
  }));
391
409
  function setLanguage(_x) {
392
410
  return _setLanguage.apply(this, arguments);
@@ -394,9 +412,42 @@ var Streami18n = function () {
394
412
  return setLanguage;
395
413
  }()
396
414
  }, {
397
- key: "registerSetLanguageCallback",
398
- value: function registerSetLanguageCallback(callback) {
399
- this.setLanguageCallback = callback;
415
+ key: "addOnLanguageChangeListener",
416
+ value: function addOnLanguageChangeListener(callback) {
417
+ var _this3 = this;
418
+ this.onLanguageChangeListeners.push(callback);
419
+ return {
420
+ unsubscribe: function unsubscribe() {
421
+ _this3.onLanguageChangeListeners = _this3.onLanguageChangeListeners.filter(function (listener) {
422
+ return listener !== callback;
423
+ });
424
+ }
425
+ };
426
+ }
427
+ }, {
428
+ key: "addOnTFunctionOverrideListener",
429
+ value: function addOnTFunctionOverrideListener(callback) {
430
+ var _this4 = this;
431
+ this.onTFunctionOverrideListeners.push(callback);
432
+ return {
433
+ unsubscribe: function unsubscribe() {
434
+ _this4.onTFunctionOverrideListeners = _this4.onTFunctionOverrideListeners.filter(function (listener) {
435
+ return listener !== callback;
436
+ });
437
+ }
438
+ };
439
+ }
440
+ }, {
441
+ key: "overrideTFunction",
442
+ value: function overrideTFunction(tFunction) {
443
+ if (!this.initialized) {
444
+ this.queuedTFunctionOverride = tFunction;
445
+ } else {
446
+ this.t = tFunction;
447
+ this.onTFunctionOverrideListeners.forEach(function (listener) {
448
+ return listener(tFunction);
449
+ });
450
+ }
400
451
  }
401
452
  }]);
402
453
  return Streami18n;
@@ -1 +1 @@
1
- {"version":3,"names":["_dayjs","_interopRequireDefault","require","_calendar","_localeData","_localizedFormat","_relativeTime","_updateLocale","_i18next","_en2","_fr2","_he2","_hi2","_it2","_ja2","_ko2","_nl2","_ru2","_tr2","defaultNS","defaultLng","Dayjs","extend","updateLocale","format","L","LL","LLL","LLLL","LT","LTS","calendar","lastDay","lastWeek","nextDay","nextWeek","sameDay","sameElse","meridiem","hour","meridiemHour","meridiemParse","en_locale","formats","months","relativeTime","weekdays","isDayJs","dateTimeParser","undefined","defaultStreami18nOptions","DateTimeParser","dayjsLocaleConfigForLanguage","debug","disableDateTimeTranslations","language","logger","msg","console","warn","Streami18n","_this","options","arguments","length","i18nextConfig","_classCallCheck2","i18nInstance","i18n","createInstance","setLanguageCallback","initialized","t","key","translations","en","_defineProperty2","enTranslations","fr","frTranslations","he","heTranslations","hi","hiTranslations","it","itTranslations","ja","jaTranslations","ko","koTranslations","nl","nlTranslations","ru","ruTranslations","tr","trTranslations","dayjsLocales","localeExists","isCustomDateTimeParser","Object","keys","Ls","indexOf","validateCurrentLanguage","availableLanguages","currentLanguage","getAvailableLanguages","geti18Instance","getTranslations","finalOptions","_extends2","LocalizedFormat","localeData","error","Error","JSON","stringify","translationsForLanguage","fallbackLng","interpolation","escapeValue","keySeparator","lng","nsSeparator","parseMissingKeyHandler","addOrUpdateLocale","tDateTimeParser","timestamp","locale","_createClass2","value","_init","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","init","resources","sent","t0","abrupt","stop","apply","_getTranslators","_callee2","_callee2$","_context2","getTranslators","registerTranslation","translation","customDayjsLocale","addResources","config","name","_setLanguage","_callee3","_t","_callee3$","_context3","changeLanguage","setLanguage","_x","registerSetLanguageCallback","callback","exports"],"sources":["Streami18n.ts"],"sourcesContent":["import Dayjs from 'dayjs';\nimport calendar from 'dayjs/plugin/calendar';\nimport localeData from 'dayjs/plugin/localeData';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport i18n, { FallbackLng, TFunction } from 'i18next';\n\nimport type moment from 'moment';\n\nimport type { TDateTimeParser } from '../contexts/translationContext/TranslationContext';\nimport enTranslations from '../i18n/en.json';\nimport frTranslations from '../i18n/fr.json';\nimport heTranslations from '../i18n/he.json';\nimport hiTranslations from '../i18n/hi.json';\nimport itTranslations from '../i18n/it.json';\nimport jaTranslations from '../i18n/ja.json';\nimport koTranslations from '../i18n/ko.json';\nimport nlTranslations from '../i18n/nl.json';\nimport ruTranslations from '../i18n/ru.json';\nimport trTranslations from '../i18n/tr.json';\n\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/hi';\nimport 'dayjs/locale/it';\nimport 'dayjs/locale/ja';\nimport 'dayjs/locale/ko';\nimport 'dayjs/locale/nl';\nimport 'dayjs/locale/ru';\nimport 'dayjs/locale/tr';\nimport 'dayjs/locale/he';\n\n/**\n * These locale imports also set these locales globally.\n * So as a last step we import the english locale to make\n * sure we don't mess up languages in other places in the app.\n */\nimport 'dayjs/locale/en';\n\nimport type { DefaultStreamChatGenerics } from '../types/types';\n\nconst defaultNS = 'translation';\nconst defaultLng = 'en';\n\nDayjs.extend(updateLocale);\n\nDayjs.updateLocale('en', {\n format: {\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n LT: 'hh:mmA',\n LTS: 'HH:mm:ss',\n },\n});\n\nDayjs.updateLocale('nl', {\n calendar: {\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n sameDay: '[vandaag om] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('it', {\n calendar: {\n lastDay: '[Ieri alle] LT',\n lastWeek: '[lo scorso] dddd [alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n sameDay: '[Oggi alle] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('hi', {\n calendar: {\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n sameDay: '[आज] LT',\n sameElse: 'L',\n },\n\n /**\n * Hindi notation for meridiems are quite fuzzy in practice. While there exists\n * a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n */\n meridiem(hour: number) {\n if (hour < 4) return 'रात';\n if (hour < 10) return 'सुबह';\n if (hour < 17) return 'दोपहर';\n if (hour < 20) return 'शाम';\n return 'रात';\n },\n\n meridiemHour(hour: number, meridiem: string) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') return hour < 4 ? hour : hour + 12;\n if (meridiem === 'सुबह') return hour;\n if (meridiem === 'दोपहर') return hour >= 10 ? hour : hour + 12;\n if (meridiem === 'शाम') return hour + 12;\n return hour;\n },\n\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n});\n\nDayjs.updateLocale('fr', {\n calendar: {\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n sameDay: '[Aujourd’hui à] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('tr', {\n calendar: {\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n sameDay: '[bugün saat] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('ru', {\n calendar: {\n lastDay: '[Вчера, в] LT',\n nextDay: '[Завтра, в] LT',\n sameDay: '[Сегодня, в] LT',\n },\n});\n\nconst en_locale = {\n formats: {},\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n relativeTime: {},\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n};\n\n// Type guards to check DayJs\nconst isDayJs = (dateTimeParser: typeof Dayjs | typeof moment): dateTimeParser is typeof Dayjs =>\n (dateTimeParser as typeof Dayjs).extend !== undefined;\n\ntype Options = {\n DateTimeParser?: typeof Dayjs | typeof moment;\n dayjsLocaleConfigForLanguage?: Partial<ILocale>;\n debug?: boolean;\n disableDateTimeTranslations?: boolean;\n language?: string;\n logger?: (msg?: string) => void;\n translationsForLanguage?: Partial<typeof enTranslations>;\n};\n\ntype I18NextConfig = {\n debug: boolean;\n fallbackLng: false | FallbackLng;\n interpolation: { escapeValue: boolean };\n keySeparator: false | string;\n lng: string;\n nsSeparator: false | string;\n parseMissingKeyHandler: (key: string) => string;\n};\n\n/**\n * Wrapper around [i18next](https://www.i18next.com/) class for Stream related translations.\n * Instance of this class should be provided to Chat component to handle translations.\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. Russian (ru)\n * 4. Turkish (tr)\n * 5. French (fr)\n * 6. Italian (it)\n * 7. Hindi (hi)\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n({ language 'nl' });\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * translationsForLanguage: {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * }\n * });\n *\n * If you would like to register additional languages, use registerTranslation. You can add as many languages as you want:\n *\n * i18n.registerTranslation('zh', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language as well.\n *\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation('mr', {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * ## Datetime translations\n *\n * Stream react chat components uses [dayjs](https://day.js.org/en/) internally by default to format datetime stamp.\n * e.g., in ChannelPreview, MessageContent components.\n * Dayjs has locale support as well - https://day.js.org/docs/en/i18n/i18n\n * Dayjs is a lightweight alternative to Momentjs with the same modern API.\n *\n * Dayjs provides locale config for plenty of languages, you can check the whole list of locale configs at following url\n * https://github.com/iamkun/dayjs/tree/dev/src/locale\n *\n * You can either provide the dayjs locale config while registering\n * language with Streami18n (either via constructor or registerTranslation()) or you can provide your own Dayjs or Moment instance\n * to Streami18n constructor, which will be then used internally (using the language locale) in components.\n *\n * 1. Via language registration\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * dayjsLocaleConfigForLanguage: {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * });\n * ```\n *\n * Similarly, you can add locale config for moment while registering translation via `registerTranslation` function.\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation(\n * 'mr',\n * {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * },\n * {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * );\n *```\n * 2. Provide your own Moment object\n *\n * ```js\n * import 'moment/locale/nl';\n * import 'moment/locale/it';\n * // or if you want to include all locales\n * import 'moment/min/locales';\n *\n * import Moment from moment\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Moment\n * })\n * ```\n *\n * 3. Provide your own Dayjs object\n *\n * ```js\n * import Dayjs from 'dayjs'\n *\n * import 'dayjs/locale/nl';\n * import 'dayjs/locale/it';\n * // or if you want to include all locales\n * import 'dayjs/min/locales';\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Dayjs\n * })\n * ```\n * If you would like to stick with english language for date-times in Stream components, you can set `disableDateTimeTranslations` to true.\n *\n */\nconst defaultStreami18nOptions = {\n DateTimeParser: Dayjs,\n dayjsLocaleConfigForLanguage: null,\n debug: false,\n disableDateTimeTranslations: false,\n language: 'en',\n logger: (msg?: string) => console.warn(msg),\n};\n\nexport class Streami18n {\n i18nInstance = i18n.createInstance();\n Dayjs = null;\n setLanguageCallback: (t: TFunction) => void = () => null;\n initialized = false;\n\n t: TFunction = (key: string) => key;\n tDateTimeParser: TDateTimeParser;\n\n translations: {\n [key: string]: {\n [key: string]: Partial<typeof enTranslations> | DefaultStreamChatGenerics;\n };\n } = {\n en: { [defaultNS]: enTranslations },\n fr: { [defaultNS]: frTranslations },\n he: { [defaultNS]: heTranslations },\n hi: { [defaultNS]: hiTranslations },\n it: { [defaultNS]: itTranslations },\n ja: { [defaultNS]: jaTranslations },\n ko: { [defaultNS]: koTranslations },\n nl: { [defaultNS]: nlTranslations },\n ru: { [defaultNS]: ruTranslations },\n tr: { [defaultNS]: trTranslations },\n };\n\n /**\n * dayjs.defineLanguage('nl') also changes the global locale. We don't want to do that\n * when a user calls the registerTranslation() function. So instead we will store the\n * locale configs given to the registerTranslation() function in `dayjsLocales` object,\n * and register the required locale with moment when setLanguage is called.\n */\n dayjsLocales: { [key: string]: Partial<ILocale> } = {};\n\n /**\n * Initialize properties used in constructor\n */\n logger: (msg?: string) => void;\n currentLanguage: string;\n DateTimeParser: typeof Dayjs | typeof moment;\n isCustomDateTimeParser: boolean;\n i18nextConfig: I18NextConfig;\n\n /**\n * Constructor accepts following options:\n * - language (String) default: 'en'\n * Language code e.g., en, tr\n *\n * - translationsForLanguage (object)\n * Translations object. Please check src/i18n/en.json for example.\n *\n * - disableDateTimeTranslations (boolean) default: false\n * Disable translations for date-times\n *\n * - debug (boolean) default: false\n * Enable debug mode in internal i18n class\n *\n * - logger (function) default: () => {}\n * Logger function to log warnings/errors from this class\n *\n * - dayjsLocaleConfigForLanguage (object) default: 'enConfig'\n * [Config object](https://momentjs.com/docs/#/i18n/changing-locale/) for internal moment object,\n * corresponding to language (param)\n *\n * - DateTimeParser (function) Moment or Dayjs instance/function.\n * Make sure to load all the required locales in this Moment or Dayjs instance that you will be provide to Streami18n\n *\n * @param {*} options\n */\n constructor(options: Options = {}, i18nextConfig: Partial<I18NextConfig> = {}) {\n const finalOptions = {\n ...defaultStreami18nOptions,\n ...options,\n };\n\n // Prepare the i18next configuration.\n this.logger = finalOptions.logger;\n\n this.currentLanguage = finalOptions.language;\n this.DateTimeParser = finalOptions.DateTimeParser;\n\n try {\n /**\n * This is a shallow check to see if the given parser is an instance of Dayjs.\n * For some reason Dayjs.isDayjs(this.DateTimeParser()) doesn't work.\n */\n if (this.DateTimeParser && isDayJs(this.DateTimeParser)) {\n this.DateTimeParser.extend(LocalizedFormat);\n this.DateTimeParser.extend(calendar);\n this.DateTimeParser.extend(localeData);\n this.DateTimeParser.extend(relativeTime);\n }\n } catch (error) {\n throw new Error(\n `Streami18n: Looks like you wanted to provide a Dayjs instance but something went wrong while adding plugins ${JSON.stringify(\n error,\n )}`,\n );\n }\n\n this.isCustomDateTimeParser = !!options.DateTimeParser;\n const translationsForLanguage = finalOptions.translationsForLanguage;\n\n if (translationsForLanguage) {\n this.translations[this.currentLanguage] = {\n [defaultNS]:\n this.translations[this.currentLanguage] &&\n this.translations[this.currentLanguage][defaultNS]\n ? {\n ...this.translations[this.currentLanguage][defaultNS],\n ...translationsForLanguage,\n }\n : translationsForLanguage,\n };\n }\n\n // If translations don't exist for given language, then set it as empty object.\n if (!this.translations[this.currentLanguage]) {\n this.translations[this.currentLanguage] = {\n [defaultNS]: {},\n };\n }\n\n this.i18nextConfig = {\n debug: finalOptions.debug,\n fallbackLng: false,\n interpolation: { escapeValue: false },\n keySeparator: false,\n lng: this.currentLanguage,\n nsSeparator: false,\n\n parseMissingKeyHandler: (key: string) => {\n this.logger(`Streami18n: Missing translation for key: ${key}`);\n\n return key;\n },\n ...i18nextConfig,\n };\n\n this.validateCurrentLanguage();\n\n const dayjsLocaleConfigForLanguage = finalOptions.dayjsLocaleConfigForLanguage;\n\n if (dayjsLocaleConfigForLanguage) {\n this.addOrUpdateLocale(this.currentLanguage, {\n ...dayjsLocaleConfigForLanguage,\n });\n } else if (!this.localeExists(this.currentLanguage)) {\n this.logger(\n `Streami18n: Streami18n(...) - Locale config for ${this.currentLanguage} does not exist in momentjs.` +\n `Please import the locale file using \"import 'moment/locale/${this.currentLanguage}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n this.tDateTimeParser = (timestamp) => {\n if (finalOptions.disableDateTimeTranslations || !this.localeExists(this.currentLanguage)) {\n /**\n * TS needs to know which is being called to accept the chain call\n */\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n }\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n };\n }\n\n /**\n * Initializes the i18next instance with configuration (which enables natural language as default keys)\n */\n async init() {\n this.validateCurrentLanguage();\n\n try {\n this.t = await this.i18nInstance.init({\n ...this.i18nextConfig,\n lng: this.currentLanguage,\n resources: this.translations,\n });\n this.initialized = true;\n } catch (error) {\n this.logger(`Something went wrong with init: ${JSON.stringify(error)}`);\n }\n\n return {\n t: this.t,\n tDateTimeParser: this.tDateTimeParser,\n };\n }\n\n localeExists = (language: string) => {\n if (this.isCustomDateTimeParser) return true;\n\n return Object.keys(Dayjs.Ls).indexOf(language) > -1;\n };\n\n validateCurrentLanguage = () => {\n const availableLanguages = Object.keys(this.translations);\n if (availableLanguages.indexOf(this.currentLanguage) === -1) {\n this.logger(\n `Streami18n: '${this.currentLanguage}' language is not registered.` +\n ` Please make sure to call streami18n.registerTranslation('${this.currentLanguage}', {...}) or ` +\n `use one the built-in supported languages - ${this.getAvailableLanguages()}`,\n );\n\n this.currentLanguage = defaultLng;\n }\n };\n\n /** Returns an instance of i18next used within this class instance */\n geti18Instance = () => this.i18nInstance;\n\n /** Returns list of available languages. */\n getAvailableLanguages = () => Object.keys(this.translations);\n\n /** Returns all the translation dictionary for all inbuilt-languages */\n getTranslations = () => this.translations;\n\n /**\n * Returns current version translator function.\n */\n async getTranslators() {\n if (!this.initialized) {\n if (this.dayjsLocales[this.currentLanguage]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n return await this.init();\n } else {\n return {\n t: this.t,\n tDateTimeParser: this.tDateTimeParser,\n };\n }\n }\n\n /**\n * Register translation\n */\n registerTranslation(\n language: string,\n translation: Partial<typeof enTranslations> | DefaultStreamChatGenerics,\n customDayjsLocale?: Partial<ILocale>,\n ) {\n if (!translation) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) called without translation`,\n );\n return;\n }\n\n if (!this.translations[language]) {\n this.translations[language] = { [defaultNS]: translation };\n } else {\n this.translations[language][defaultNS] = translation;\n }\n\n if (customDayjsLocale) {\n this.dayjsLocales[language] = { ...customDayjsLocale };\n } else if (!this.localeExists(language)) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) - ` +\n `Locale config for ${language} does not exist in Dayjs.` +\n `Please import the locale file using \"import 'dayjs/locale/${language}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n if (this.initialized) {\n this.i18nInstance.addResources(language, defaultNS, translation);\n }\n }\n\n addOrUpdateLocale(key: string, config: Partial<ILocale>) {\n if (this.localeExists(key)) {\n Dayjs.updateLocale(key, { ...config });\n } else {\n // Merging the custom locale config with en config, so missing keys can default to english.\n Dayjs.locale({ name: key, ...en_locale, ...config }, undefined, true);\n }\n }\n\n /**\n * Changes the language.\n */\n async setLanguage(language: string) {\n this.currentLanguage = language;\n\n if (!this.initialized) return;\n\n try {\n const t = await this.i18nInstance.changeLanguage(language);\n if (this.dayjsLocales[language]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n this.setLanguageCallback(t);\n\n return t;\n } catch (error) {\n this.logger(`Failed to set language: ${JSON.stringify(error)}`);\n return this.t;\n }\n }\n\n registerSetLanguageCallback(callback: (t: TFunction) => void) {\n this.setLanguageCallback = callback;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_dayjs","_interopRequireDefault","require","_calendar","_localeData","_localizedFormat","_relativeTime","_updateLocale","_i18next","_en2","_fr2","_he2","_hi2","_it2","_ja2","_ko2","_nl2","_ru2","_tr2","defaultNS","defaultLng","Dayjs","extend","updateLocale","format","L","LL","LLL","LLLL","LT","LTS","calendar","lastDay","lastWeek","nextDay","nextWeek","sameDay","sameElse","meridiem","hour","meridiemHour","meridiemParse","en_locale","formats","months","relativeTime","weekdays","isDayJs","dateTimeParser","undefined","defaultStreami18nOptions","DateTimeParser","dayjsLocaleConfigForLanguage","debug","disableDateTimeTranslations","language","logger","msg","console","warn","Streami18n","_this","options","arguments","length","i18nextConfig","_classCallCheck2","i18nInstance","i18n","createInstance","initialized","onLanguageChangeListeners","onTFunctionOverrideListeners","t","key","translations","en","_defineProperty2","enTranslations","fr","frTranslations","he","heTranslations","hi","hiTranslations","it","itTranslations","ja","jaTranslations","ko","koTranslations","nl","nlTranslations","ru","ruTranslations","tr","trTranslations","dayjsLocales","localeExists","isCustomDateTimeParser","Object","keys","Ls","indexOf","validateCurrentLanguage","availableLanguages","currentLanguage","getAvailableLanguages","geti18Instance","getTranslations","finalOptions","_extends2","LocalizedFormat","localeData","error","Error","JSON","stringify","translationsForLanguage","fallbackLng","interpolation","escapeValue","keySeparator","lng","nsSeparator","parseMissingKeyHandler","addOrUpdateLocale","tDateTimeParser","timestamp","locale","_createClass2","value","_init","_asyncToGenerator2","_regenerator","mark","_callee","_this2","wrap","_callee$","_context","prev","next","init","resources","sent","queuedTFunctionOverride","forEach","listener","t0","waitForInitializing","stop","apply","_getTranslators","_callee2","initPromise","_callee2$","_context2","abrupt","getTranslators","registerTranslation","translation","customDayjsLocale","addResources","config","name","_setLanguage","_callee3","_t","_callee3$","_context3","changeLanguage","setLanguage","_x","addOnLanguageChangeListener","callback","_this3","push","unsubscribe","filter","addOnTFunctionOverrideListener","_this4","overrideTFunction","tFunction","exports"],"sources":["Streami18n.ts"],"sourcesContent":["import Dayjs from 'dayjs';\nimport calendar from 'dayjs/plugin/calendar';\nimport localeData from 'dayjs/plugin/localeData';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport i18n, { FallbackLng, TFunction } from 'i18next';\n\nimport type moment from 'moment';\n\nimport type { TDateTimeParser } from '../contexts/translationContext/TranslationContext';\nimport enTranslations from '../i18n/en.json';\nimport frTranslations from '../i18n/fr.json';\nimport heTranslations from '../i18n/he.json';\nimport hiTranslations from '../i18n/hi.json';\nimport itTranslations from '../i18n/it.json';\nimport jaTranslations from '../i18n/ja.json';\nimport koTranslations from '../i18n/ko.json';\nimport nlTranslations from '../i18n/nl.json';\nimport ruTranslations from '../i18n/ru.json';\nimport trTranslations from '../i18n/tr.json';\n\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/hi';\nimport 'dayjs/locale/it';\nimport 'dayjs/locale/ja';\nimport 'dayjs/locale/ko';\nimport 'dayjs/locale/nl';\nimport 'dayjs/locale/ru';\nimport 'dayjs/locale/tr';\nimport 'dayjs/locale/he';\n\n/**\n * These locale imports also set these locales globally.\n * So as a last step we import the english locale to make\n * sure we don't mess up languages in other places in the app.\n */\nimport 'dayjs/locale/en';\n\nimport type { DefaultStreamChatGenerics } from '../types/types';\n\nconst defaultNS = 'translation';\nconst defaultLng = 'en';\n\nDayjs.extend(updateLocale);\n\nDayjs.updateLocale('en', {\n format: {\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n LT: 'hh:mmA',\n LTS: 'HH:mm:ss',\n },\n});\n\nDayjs.updateLocale('nl', {\n calendar: {\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n sameDay: '[vandaag om] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('it', {\n calendar: {\n lastDay: '[Ieri alle] LT',\n lastWeek: '[lo scorso] dddd [alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n sameDay: '[Oggi alle] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('hi', {\n calendar: {\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n sameDay: '[आज] LT',\n sameElse: 'L',\n },\n\n /**\n * Hindi notation for meridiems are quite fuzzy in practice. While there exists\n * a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n */\n meridiem(hour: number) {\n if (hour < 4) return 'रात';\n if (hour < 10) return 'सुबह';\n if (hour < 17) return 'दोपहर';\n if (hour < 20) return 'शाम';\n return 'रात';\n },\n\n meridiemHour(hour: number, meridiem: string) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') return hour < 4 ? hour : hour + 12;\n if (meridiem === 'सुबह') return hour;\n if (meridiem === 'दोपहर') return hour >= 10 ? hour : hour + 12;\n if (meridiem === 'शाम') return hour + 12;\n return hour;\n },\n\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n});\n\nDayjs.updateLocale('fr', {\n calendar: {\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n sameDay: '[Aujourd’hui à] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('tr', {\n calendar: {\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n sameDay: '[bugün saat] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('ru', {\n calendar: {\n lastDay: '[Вчера, в] LT',\n nextDay: '[Завтра, в] LT',\n sameDay: '[Сегодня, в] LT',\n },\n});\n\nconst en_locale = {\n formats: {},\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n relativeTime: {},\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n};\n\n// Type guards to check DayJs\nconst isDayJs = (dateTimeParser: typeof Dayjs | typeof moment): dateTimeParser is typeof Dayjs =>\n (dateTimeParser as typeof Dayjs).extend !== undefined;\n\ntype Options = {\n DateTimeParser?: typeof Dayjs | typeof moment;\n dayjsLocaleConfigForLanguage?: Partial<ILocale>;\n debug?: boolean;\n disableDateTimeTranslations?: boolean;\n language?: string;\n logger?: (msg?: string) => void;\n translationsForLanguage?: Partial<typeof enTranslations>;\n};\n\ntype I18NextConfig = {\n debug: boolean;\n fallbackLng: false | FallbackLng;\n interpolation: { escapeValue: boolean };\n keySeparator: false | string;\n lng: string;\n nsSeparator: false | string;\n parseMissingKeyHandler: (key: string) => string;\n};\n\n/**\n * Wrapper around [i18next](https://www.i18next.com/) class for Stream related translations.\n * Instance of this class should be provided to Chat component to handle translations.\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. Russian (ru)\n * 4. Turkish (tr)\n * 5. French (fr)\n * 6. Italian (it)\n * 7. Hindi (hi)\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n({ language 'nl' });\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * translationsForLanguage: {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * }\n * });\n *\n * If you would like to register additional languages, use registerTranslation. You can add as many languages as you want:\n *\n * i18n.registerTranslation('zh', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language as well.\n *\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation('mr', {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * ## Datetime translations\n *\n * Stream react chat components uses [dayjs](https://day.js.org/en/) internally by default to format datetime stamp.\n * e.g., in ChannelPreview, MessageContent components.\n * Dayjs has locale support as well - https://day.js.org/docs/en/i18n/i18n\n * Dayjs is a lightweight alternative to Momentjs with the same modern API.\n *\n * Dayjs provides locale config for plenty of languages, you can check the whole list of locale configs at following url\n * https://github.com/iamkun/dayjs/tree/dev/src/locale\n *\n * You can either provide the dayjs locale config while registering\n * language with Streami18n (either via constructor or registerTranslation()) or you can provide your own Dayjs or Moment instance\n * to Streami18n constructor, which will be then used internally (using the language locale) in components.\n *\n * 1. Via language registration\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * dayjsLocaleConfigForLanguage: {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * });\n * ```\n *\n * Similarly, you can add locale config for moment while registering translation via `registerTranslation` function.\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation(\n * 'mr',\n * {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * },\n * {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * );\n *```\n * 2. Provide your own Moment object\n *\n * ```js\n * import 'moment/locale/nl';\n * import 'moment/locale/it';\n * // or if you want to include all locales\n * import 'moment/min/locales';\n *\n * import Moment from moment\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Moment\n * })\n * ```\n *\n * 3. Provide your own Dayjs object\n *\n * ```js\n * import Dayjs from 'dayjs'\n *\n * import 'dayjs/locale/nl';\n * import 'dayjs/locale/it';\n * // or if you want to include all locales\n * import 'dayjs/min/locales';\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Dayjs\n * })\n * ```\n * If you would like to stick with english language for date-times in Stream components, you can set `disableDateTimeTranslations` to true.\n *\n */\nconst defaultStreami18nOptions = {\n DateTimeParser: Dayjs,\n dayjsLocaleConfigForLanguage: null,\n debug: false,\n disableDateTimeTranslations: false,\n language: 'en',\n logger: (msg?: string) => console.warn(msg),\n};\n\nexport class Streami18n {\n i18nInstance = i18n.createInstance();\n Dayjs = null;\n initialized = false;\n /* this promise is used to prevent simultaneous calls to init (happens in Overlay and Chat) */\n private waitForInitializing: Promise<void> | undefined;\n /* This is the callback to be fired when the language is changed */\n private onLanguageChangeListeners: ((t: TFunction) => void)[] = [];\n /* This is the callback to be fired when the tFunc is overridden\n * This is useful when a different i18n library needs to be used\n * The SDK uses this in useStreami18n hook to set the tFunc in the context\n */\n private onTFunctionOverrideListeners: ((t: TFunction) => void)[] = [];\n /* We need to queue the overridden tFunction\n * if the tFunction is overridden before the SDK has initialized the translations\n */\n private queuedTFunctionOverride: TFunction | undefined;\n\n t: TFunction = (key: string) => key;\n tDateTimeParser: TDateTimeParser;\n\n translations: {\n [key: string]: {\n [key: string]: Partial<typeof enTranslations> | DefaultStreamChatGenerics;\n };\n } = {\n en: { [defaultNS]: enTranslations },\n fr: { [defaultNS]: frTranslations },\n he: { [defaultNS]: heTranslations },\n hi: { [defaultNS]: hiTranslations },\n it: { [defaultNS]: itTranslations },\n ja: { [defaultNS]: jaTranslations },\n ko: { [defaultNS]: koTranslations },\n nl: { [defaultNS]: nlTranslations },\n ru: { [defaultNS]: ruTranslations },\n tr: { [defaultNS]: trTranslations },\n };\n\n /**\n * dayjs.defineLanguage('nl') also changes the global locale. We don't want to do that\n * when a user calls the registerTranslation() function. So instead we will store the\n * locale configs given to the registerTranslation() function in `dayjsLocales` object,\n * and register the required locale with moment when setLanguage is called.\n */\n dayjsLocales: { [key: string]: Partial<ILocale> } = {};\n\n /**\n * Initialize properties used in constructor\n */\n logger: (msg?: string) => void;\n currentLanguage: string;\n DateTimeParser: typeof Dayjs | typeof moment;\n isCustomDateTimeParser: boolean;\n i18nextConfig: I18NextConfig;\n\n /**\n * Constructor accepts following options:\n * - language (String) default: 'en'\n * Language code e.g., en, tr\n *\n * - translationsForLanguage (object)\n * Translations object. Please check src/i18n/en.json for example.\n *\n * - disableDateTimeTranslations (boolean) default: false\n * Disable translations for date-times\n *\n * - debug (boolean) default: false\n * Enable debug mode in internal i18n class\n *\n * - logger (function) default: () => {}\n * Logger function to log warnings/errors from this class\n *\n * - dayjsLocaleConfigForLanguage (object) default: 'enConfig'\n * [Config object](https://momentjs.com/docs/#/i18n/changing-locale/) for internal moment object,\n * corresponding to language (param)\n *\n * - DateTimeParser (function) Moment or Dayjs instance/function.\n * Make sure to load all the required locales in this Moment or Dayjs instance that you will be provide to Streami18n\n *\n * @param {*} options\n */\n constructor(options: Options = {}, i18nextConfig: Partial<I18NextConfig> = {}) {\n const finalOptions = {\n ...defaultStreami18nOptions,\n ...options,\n };\n\n // Prepare the i18next configuration.\n this.logger = finalOptions.logger;\n\n this.currentLanguage = finalOptions.language;\n this.DateTimeParser = finalOptions.DateTimeParser;\n\n try {\n /**\n * This is a shallow check to see if the given parser is an instance of Dayjs.\n * For some reason Dayjs.isDayjs(this.DateTimeParser()) doesn't work.\n */\n if (this.DateTimeParser && isDayJs(this.DateTimeParser)) {\n this.DateTimeParser.extend(LocalizedFormat);\n this.DateTimeParser.extend(calendar);\n this.DateTimeParser.extend(localeData);\n this.DateTimeParser.extend(relativeTime);\n }\n } catch (error) {\n throw new Error(\n `Streami18n: Looks like you wanted to provide a Dayjs instance but something went wrong while adding plugins ${JSON.stringify(\n error,\n )}`,\n );\n }\n\n this.isCustomDateTimeParser = !!options.DateTimeParser;\n const translationsForLanguage = finalOptions.translationsForLanguage;\n\n if (translationsForLanguage) {\n this.translations[this.currentLanguage] = {\n [defaultNS]:\n this.translations[this.currentLanguage] &&\n this.translations[this.currentLanguage][defaultNS]\n ? {\n ...this.translations[this.currentLanguage][defaultNS],\n ...translationsForLanguage,\n }\n : translationsForLanguage,\n };\n }\n\n // If translations don't exist for given language, then set it as empty object.\n if (!this.translations[this.currentLanguage]) {\n this.translations[this.currentLanguage] = {\n [defaultNS]: {},\n };\n }\n\n this.i18nextConfig = {\n debug: finalOptions.debug,\n fallbackLng: false,\n interpolation: { escapeValue: false },\n keySeparator: false,\n lng: this.currentLanguage,\n nsSeparator: false,\n\n parseMissingKeyHandler: (key: string) => {\n this.logger(`Streami18n: Missing translation for key: ${key}`);\n\n return key;\n },\n ...i18nextConfig,\n };\n\n this.validateCurrentLanguage();\n\n const dayjsLocaleConfigForLanguage = finalOptions.dayjsLocaleConfigForLanguage;\n\n if (dayjsLocaleConfigForLanguage) {\n this.addOrUpdateLocale(this.currentLanguage, {\n ...dayjsLocaleConfigForLanguage,\n });\n } else if (!this.localeExists(this.currentLanguage)) {\n this.logger(\n `Streami18n: Streami18n(...) - Locale config for ${this.currentLanguage} does not exist in momentjs.` +\n `Please import the locale file using \"import 'moment/locale/${this.currentLanguage}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n this.tDateTimeParser = (timestamp) => {\n if (finalOptions.disableDateTimeTranslations || !this.localeExists(this.currentLanguage)) {\n /**\n * TS needs to know which is being called to accept the chain call\n */\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n }\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n };\n }\n\n /**\n * Initializes the i18next instance with configuration (which enables natural language as default keys)\n */\n private async init() {\n this.validateCurrentLanguage();\n\n try {\n this.t = await this.i18nInstance.init({\n ...this.i18nextConfig,\n lng: this.currentLanguage,\n resources: this.translations,\n });\n if (this.queuedTFunctionOverride) {\n // special case where we have a override for tFunc before initialization\n this.t = this.queuedTFunctionOverride;\n this.queuedTFunctionOverride = undefined;\n this.onTFunctionOverrideListeners.forEach((listener) => listener(this.t));\n }\n this.initialized = true;\n } catch (error) {\n this.logger(`Something went wrong with init: ${JSON.stringify(error)}`);\n }\n this.waitForInitializing = undefined;\n }\n\n localeExists = (language: string) => {\n if (this.isCustomDateTimeParser) return true;\n\n return Object.keys(Dayjs.Ls).indexOf(language) > -1;\n };\n\n validateCurrentLanguage = () => {\n const availableLanguages = Object.keys(this.translations);\n if (availableLanguages.indexOf(this.currentLanguage) === -1) {\n this.logger(\n `Streami18n: '${this.currentLanguage}' language is not registered.` +\n ` Please make sure to call streami18n.registerTranslation('${this.currentLanguage}', {...}) or ` +\n `use one the built-in supported languages - ${this.getAvailableLanguages()}`,\n );\n\n this.currentLanguage = defaultLng;\n }\n };\n\n /** Returns an instance of i18next used within this class instance */\n geti18Instance = () => this.i18nInstance;\n\n /** Returns list of available languages. */\n getAvailableLanguages = () => Object.keys(this.translations);\n\n /** Returns all the translation dictionary for all inbuilt-languages */\n getTranslations = () => this.translations;\n\n /**\n * Returns current version translator function.\n */\n async getTranslators() {\n if (!this.initialized) {\n if (this.waitForInitializing) {\n await this.waitForInitializing;\n } else {\n if (this.dayjsLocales[this.currentLanguage]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n const initPromise = this.init();\n this.waitForInitializing = initPromise;\n await initPromise;\n }\n }\n return {\n t: this.t,\n tDateTimeParser: this.tDateTimeParser,\n };\n }\n\n /**\n * Register translation\n */\n registerTranslation(\n language: string,\n translation: Partial<typeof enTranslations> | DefaultStreamChatGenerics,\n customDayjsLocale?: Partial<ILocale>,\n ) {\n if (!translation) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) called without translation`,\n );\n return;\n }\n\n if (!this.translations[language]) {\n this.translations[language] = { [defaultNS]: translation };\n } else {\n this.translations[language][defaultNS] = translation;\n }\n\n if (customDayjsLocale) {\n this.dayjsLocales[language] = { ...customDayjsLocale };\n } else if (!this.localeExists(language)) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) - ` +\n `Locale config for ${language} does not exist in Dayjs.` +\n `Please import the locale file using \"import 'dayjs/locale/${language}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n if (this.initialized) {\n this.i18nInstance.addResources(language, defaultNS, translation);\n }\n }\n\n addOrUpdateLocale(key: string, config: Partial<ILocale>) {\n if (this.localeExists(key)) {\n Dayjs.updateLocale(key, { ...config });\n } else {\n // Merging the custom locale config with en config, so missing keys can default to english.\n Dayjs.locale({ name: key, ...en_locale, ...config }, undefined, true);\n }\n }\n\n /**\n * Changes the language.\n * Note: if you are using overrideTFunction, you will need to call the override again after changing the language.\n */\n async setLanguage(language: string) {\n this.currentLanguage = language;\n\n if (!this.initialized) return;\n\n try {\n const t = await this.i18nInstance.changeLanguage(language);\n if (this.dayjsLocales[language]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n this.t = t;\n this.onLanguageChangeListeners.forEach((listener) => listener(t));\n\n return t;\n } catch (error) {\n this.logger(`Failed to set language: ${JSON.stringify(error)}`);\n return this.t;\n }\n }\n\n addOnLanguageChangeListener(callback: (t: TFunction) => void) {\n this.onLanguageChangeListeners.push(callback);\n return {\n unsubscribe: () => {\n this.onLanguageChangeListeners = this.onLanguageChangeListeners.filter(\n (listener) => listener !== callback,\n );\n },\n };\n }\n\n addOnTFunctionOverrideListener(callback: (t: TFunction) => void) {\n this.onTFunctionOverrideListeners.push(callback);\n return {\n unsubscribe: () => {\n this.onTFunctionOverrideListeners = this.onTFunctionOverrideListeners.filter(\n (listener) => listener !== callback,\n );\n },\n };\n }\n\n overrideTFunction(tFunction: TFunction) {\n if (!this.initialized) {\n this.queuedTFunctionOverride = tFunction;\n } else {\n this.t = tFunction;\n this.onTFunctionOverrideListeners.forEach((listener) => listener(tFunction));\n }\n }\n}\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.12.1"
2
+ "version": "5.13.0-beta.1"
3
3
  }
@@ -1,6 +1,3 @@
1
1
  import type { TranslatorFunctions } from '../contexts/translationContext/TranslationContext';
2
2
  import { Streami18n } from '../utils/Streami18n';
3
- export declare const useStreami18n: ({ i18nInstance, setTranslators, }: {
4
- setTranslators: React.Dispatch<React.SetStateAction<TranslatorFunctions>>;
5
- i18nInstance?: Streami18n | undefined;
6
- }) => boolean;
3
+ export declare const useStreami18n: (setTranslators: React.Dispatch<React.SetStateAction<TranslatorFunctions>>, i18nInstance?: Streami18n | undefined) => boolean;
@@ -42,8 +42,11 @@ declare type I18NextConfig = {
42
42
  export declare class Streami18n {
43
43
  i18nInstance: import("i18next").i18n;
44
44
  Dayjs: null;
45
- setLanguageCallback: (t: TFunction) => void;
46
45
  initialized: boolean;
46
+ private waitForInitializing;
47
+ private onLanguageChangeListeners;
48
+ private onTFunctionOverrideListeners;
49
+ private queuedTFunctionOverride;
47
50
  t: TFunction;
48
51
  tDateTimeParser: TDateTimeParser;
49
52
  translations: {
@@ -98,10 +101,7 @@ export declare class Streami18n {
98
101
  /**
99
102
  * Initializes the i18next instance with configuration (which enables natural language as default keys)
100
103
  */
101
- init(): Promise<{
102
- t: TFunction;
103
- tDateTimeParser: TDateTimeParser;
104
- }>;
104
+ private init;
105
105
  localeExists: (language: string) => boolean;
106
106
  validateCurrentLanguage: () => void;
107
107
  /** Returns an instance of i18next used within this class instance */
@@ -195,8 +195,15 @@ export declare class Streami18n {
195
195
  addOrUpdateLocale(key: string, config: Partial<ILocale>): void;
196
196
  /**
197
197
  * Changes the language.
198
+ * Note: if you are using overrideTFunction, you will need to call the override again after changing the language.
198
199
  */
199
200
  setLanguage(language: string): Promise<TFunction | undefined>;
200
- registerSetLanguageCallback(callback: (t: TFunction) => void): void;
201
+ addOnLanguageChangeListener(callback: (t: TFunction) => void): {
202
+ unsubscribe: () => void;
203
+ };
204
+ addOnTFunctionOverrideListener(callback: (t: TFunction) => void): {
205
+ unsubscribe: () => void;
206
+ };
207
+ overrideTFunction(tFunction: TFunction): void;
201
208
  }
202
209
  export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "stream-chat-react-native-core",
3
3
  "description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
4
- "version": "5.12.1",
4
+ "version": "5.13.0-beta.1",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -112,7 +112,8 @@ describe('Optimistic Updates', () => {
112
112
  });
113
113
 
114
114
  afterEach(() => {
115
- BetterSqlite.dropAllTables();
115
+ QuickSqliteClient.dropTables();
116
+ QuickSqliteClient.closeDB();
116
117
  cleanup();
117
118
  });
118
119
 
@@ -157,7 +157,8 @@ describe('ChannelList', () => {
157
157
  </Chat>,
158
158
  );
159
159
 
160
- expect(spy).toHaveBeenCalledWith(
160
+ expect(spy).toHaveBeenNthCalledWith(
161
+ 1,
161
162
  staleFilter,
162
163
  expect.anything(),
163
164
  expect.anything(),
@@ -174,7 +175,8 @@ describe('ChannelList', () => {
174
175
  </Chat>,
175
176
  );
176
177
 
177
- expect(spy).toHaveBeenCalledWith(
178
+ expect(spy).toHaveBeenNthCalledWith(
179
+ 2,
178
180
  freshFilter,
179
181
  expect.anything(),
180
182
  expect.anything(),
@@ -3,7 +3,6 @@ import { useEffect, useMemo, useRef, useState } from 'react';
3
3
  import type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';
4
4
 
5
5
  import { useActiveChannelsRefContext } from '../../../contexts/activeChannelsRefContext/ActiveChannelsRefContext';
6
-
7
6
  import { useChatContext } from '../../../contexts/chatContext/ChatContext';
8
7
  import { useIsMountedRef } from '../../../hooks/useIsMountedRef';
9
8
 
@@ -52,7 +51,6 @@ export const usePaginatedChannels = <
52
51
  const [staticChannelsActive, setStaticChannelsActive] = useState<boolean>(false);
53
52
  const [activeQueryType, setActiveQueryType] = useState<QueryType | null>('queryLocalDB');
54
53
  const [hasNextPage, setHasNextPage] = useState<boolean>(false);
55
-
56
54
  const activeChannels = useActiveChannelsRefContext();
57
55
  const isMountedRef = useIsMountedRef();
58
56
  const { client } = useChatContext<StreamChatGenerics>();
@@ -111,9 +109,13 @@ export const usePaginatedChannels = <
111
109
  }
112
110
  }
113
111
 
114
- // TODO: Think about the implications of this.
112
+ /**
113
+ * We skipInitialization here for handling race condition between ChannelList, Channel (and Thread)
114
+ * when they all (may) update the channel state at the same time (when connection state recovers)
115
+ * TODO: if we move the channel state to a single context and share it between ChannelList, Channel and Thread we can remove this
116
+ */
115
117
  const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {
116
- skipInitialization: enableOfflineSupport ? activeChannelIds : activeChannels.current,
118
+ skipInitialization: activeChannels.current,
117
119
  });
118
120
  if (isQueryStale() || !isMountedRef.current) {
119
121
  return;
@@ -157,7 +157,7 @@ const ChatWithContext = <
157
157
  /**
158
158
  * Setup translators
159
159
  */
160
- const loadingTranslators = useStreami18n({ i18nInstance, setTranslators });
160
+ const loadingTranslators = useStreami18n(setTranslators, i18nInstance);
161
161
 
162
162
  /**
163
163
  * Setup connection event listeners
@@ -152,7 +152,7 @@ export const OverlayProvider = <
152
152
  const { height, width } = Dimensions.get('screen');
153
153
 
154
154
  // Setup translators
155
- const loadingTranslators = useStreami18n({ i18nInstance, setTranslators });
155
+ const loadingTranslators = useStreami18n(setTranslators, i18nInstance);
156
156
 
157
157
  useEffect(() => {
158
158
  const backAction = () => {