polfan-server-js-client 0.2.95 → 0.2.97

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.
@@ -209,6 +209,10 @@ function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !==
209
209
  function IndexedObjectCollection_getPrototypeOf(t) { return IndexedObjectCollection_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, IndexedObjectCollection_getPrototypeOf(t); }
210
210
  function IndexedObjectCollection_inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && IndexedObjectCollection_setPrototypeOf(t, e); }
211
211
  function IndexedObjectCollection_setPrototypeOf(t, e) { return IndexedObjectCollection_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, IndexedObjectCollection_setPrototypeOf(t, e); }
212
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
213
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
214
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
215
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
212
216
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
213
217
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
214
218
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -280,16 +284,26 @@ var IndexedCollection = /*#__PURE__*/function () {
280
284
  }, {
281
285
  key: "findBy",
282
286
  value: function findBy(field, valueToFind) {
283
- var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
287
+ var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Infinity;
284
288
  var result = new IndexedCollection();
285
- var item;
286
- while (!(item = this.items.entries().next().value).done) {
287
- if (limit && result.length === limit) {
288
- break;
289
- }
290
- if (item[1][field] === valueToFind) {
291
- result.set(item);
289
+ var _iterator = _createForOfIteratorHelper(this.items.entries()),
290
+ _step;
291
+ try {
292
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
293
+ var _step$value = _slicedToArray(_step.value, 2),
294
+ key = _step$value[0],
295
+ value = _step$value[1];
296
+ if (result.length >= limit) {
297
+ break;
298
+ }
299
+ if (value[field] === valueToFind) {
300
+ result.set([key, value]);
301
+ }
292
302
  }
303
+ } catch (err) {
304
+ _iterator.e(err);
305
+ } finally {
306
+ _iterator.f();
293
307
  }
294
308
  return result;
295
309
  }
@@ -364,11 +378,11 @@ var IndexedObjectCollection = /*#__PURE__*/function () {
364
378
  value: function findBy(field, valueToFind) {
365
379
  var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
366
380
  var result = new IndexedObjectCollection(this.id);
367
- var _iterator = _createForOfIteratorHelper(this.items),
368
- _step;
381
+ var _iterator2 = _createForOfIteratorHelper(this.items),
382
+ _step2;
369
383
  try {
370
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
371
- var value = _step.value;
384
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
385
+ var value = _step2.value;
372
386
  if (limit && result.length === limit) {
373
387
  break;
374
388
  }
@@ -377,9 +391,9 @@ var IndexedObjectCollection = /*#__PURE__*/function () {
377
391
  }
378
392
  }
379
393
  } catch (err) {
380
- _iterator.e(err);
394
+ _iterator2.e(err);
381
395
  } finally {
382
- _iterator.f();
396
+ _iterator2.f();
383
397
  }
384
398
  return result;
385
399
  }
@@ -1528,12 +1542,12 @@ function RoomMessagesHistory_nonIterableSpread() { throw new TypeError("Invalid
1528
1542
  function RoomMessagesHistory_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
1529
1543
  function RoomMessagesHistory_arrayWithoutHoles(r) { if (Array.isArray(r)) return RoomMessagesHistory_arrayLikeToArray(r); }
1530
1544
  function RoomMessagesHistory_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = RoomMessagesHistory_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
1531
- function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || RoomMessagesHistory_unsupportedIterableToArray(r, e) || _nonIterableRest(); }
1532
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1545
+ function RoomMessagesHistory_slicedToArray(r, e) { return RoomMessagesHistory_arrayWithHoles(r) || RoomMessagesHistory_iterableToArrayLimit(r, e) || RoomMessagesHistory_unsupportedIterableToArray(r, e) || RoomMessagesHistory_nonIterableRest(); }
1546
+ function RoomMessagesHistory_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1533
1547
  function RoomMessagesHistory_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return RoomMessagesHistory_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? RoomMessagesHistory_arrayLikeToArray(r, a) : void 0; } }
1534
1548
  function RoomMessagesHistory_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
1535
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
1536
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1549
+ function RoomMessagesHistory_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
1550
+ function RoomMessagesHistory_arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1537
1551
  function RoomMessagesHistory_regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return RoomMessagesHistory_regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (RoomMessagesHistory_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, RoomMessagesHistory_regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, RoomMessagesHistory_regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), RoomMessagesHistory_regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", RoomMessagesHistory_regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), RoomMessagesHistory_regeneratorDefine2(u), RoomMessagesHistory_regeneratorDefine2(u, o, "Generator"), RoomMessagesHistory_regeneratorDefine2(u, n, function () { return this; }), RoomMessagesHistory_regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (RoomMessagesHistory_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
1538
1552
  function RoomMessagesHistory_regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } RoomMessagesHistory_regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { RoomMessagesHistory_regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, RoomMessagesHistory_regeneratorDefine2(e, r, n, t); }
1539
1553
  function RoomMessagesHistory_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
@@ -1629,7 +1643,7 @@ var RoomMessagesHistory = /*#__PURE__*/function () {
1629
1643
  _context2.n = 3;
1630
1644
  break;
1631
1645
  }
1632
- _Array$from$_i = _slicedToArray(_Array$from[_i], 2), window = _Array$from$_i[1];
1646
+ _Array$from$_i = RoomMessagesHistory_slicedToArray(_Array$from[_i], 2), window = _Array$from$_i[1];
1633
1647
  _context2.n = 2;
1634
1648
  return window.setTraverseLock(this.traverseLock);
1635
1649
  case 2:
@@ -1705,15 +1719,6 @@ var RoomMessagesHistory = /*#__PURE__*/function () {
1705
1719
  }();
1706
1720
  ;// ./src/state-tracker/MessagesManager.ts
1707
1721
  function MessagesManager_typeof(o) { "@babel/helpers - typeof"; return MessagesManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, MessagesManager_typeof(o); }
1708
- function MessagesManager_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1709
- function MessagesManager_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? MessagesManager_ownKeys(Object(t), !0).forEach(function (r) { MessagesManager_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : MessagesManager_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1710
- function MessagesManager_toConsumableArray(r) { return MessagesManager_arrayWithoutHoles(r) || MessagesManager_iterableToArray(r) || MessagesManager_unsupportedIterableToArray(r) || MessagesManager_nonIterableSpread(); }
1711
- function MessagesManager_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1712
- function MessagesManager_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
1713
- function MessagesManager_arrayWithoutHoles(r) { if (Array.isArray(r)) return MessagesManager_arrayLikeToArray(r); }
1714
- function MessagesManager_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = MessagesManager_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
1715
- function MessagesManager_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return MessagesManager_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? MessagesManager_arrayLikeToArray(r, a) : void 0; } }
1716
- function MessagesManager_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
1717
1722
  function MessagesManager_regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return MessagesManager_regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (MessagesManager_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, MessagesManager_regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, MessagesManager_regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), MessagesManager_regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", MessagesManager_regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), MessagesManager_regeneratorDefine2(u), MessagesManager_regeneratorDefine2(u, o, "Generator"), MessagesManager_regeneratorDefine2(u, n, function () { return this; }), MessagesManager_regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (MessagesManager_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
1718
1723
  function MessagesManager_regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } MessagesManager_regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { MessagesManager_regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, MessagesManager_regeneratorDefine2(e, r, n, t); }
1719
1724
  function MessagesManager_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
@@ -1732,10 +1737,7 @@ var MessagesManager = /*#__PURE__*/function () {
1732
1737
  var _this = this;
1733
1738
  MessagesManager_classCallCheck(this, MessagesManager);
1734
1739
  MessagesManager_defineProperty(this, "roomHistories", new IndexedCollection());
1735
- MessagesManager_defineProperty(this, "followedTopics", new IndexedCollection());
1736
- MessagesManager_defineProperty(this, "followedTopicsPromises", new PromiseRegistry());
1737
1740
  MessagesManager_defineProperty(this, "deferredSession", new DeferredTask());
1738
- MessagesManager_defineProperty(this, "unreadSummariesCache", new Map());
1739
1741
  this.tracker = tracker;
1740
1742
  this.tracker.client.on('Session', function (ev) {
1741
1743
  return _this.handleSession(ev);
@@ -1743,27 +1745,12 @@ var MessagesManager = /*#__PURE__*/function () {
1743
1745
  this.tracker.client.on('RoomJoined', function (ev) {
1744
1746
  return _this.handleRoomJoin(ev);
1745
1747
  });
1746
- this.tracker.client.on('NewTopic', function (ev) {
1747
- return _this.handleNewTopic(ev);
1748
- });
1749
- this.tracker.client.on('FollowedTopicUpdated', function (ev) {
1750
- return _this.handleFollowedTopicUpdated(ev);
1751
- });
1752
- this.tracker.client.on('TopicFollowed', function (ev) {
1753
- return _this.handleTopicFollowed(ev);
1754
- });
1755
- this.tracker.client.on('NewMessage', function (ev) {
1756
- return _this.handleNewMessage(ev);
1757
- });
1758
1748
  this.tracker.client.on('RoomDeleted', function (ev) {
1759
1749
  return _this.handleRoomDeleted(ev);
1760
1750
  });
1761
1751
  this.tracker.client.on('RoomLeft', function (ev) {
1762
1752
  return _this.handleRoomLeft(ev);
1763
1753
  });
1764
- this.tracker.client.on('TopicDeleted', function (ev) {
1765
- return _this.handleTopicDeleted(ev);
1766
- });
1767
1754
  }
1768
1755
 
1769
1756
  /**
@@ -1789,18 +1776,164 @@ var MessagesManager = /*#__PURE__*/function () {
1789
1776
  return getRoomHistory;
1790
1777
  }()
1791
1778
  /**
1792
- * Cache followed topics for all joined rooms in a space and fetch them in bulk if necessary.
1793
- * Then you can get them using getRoomFollowedTopics().
1794
- * @see getRoomFollowedTopics
1779
+ * For internal use.
1780
+ * @internal
1795
1781
  */
1796
1782
  )
1797
1783
  }, {
1784
+ key: "_resolveLastMessage",
1785
+ value: (function () {
1786
+ var _resolveLastMessage2 = MessagesManager_asyncToGenerator(/*#__PURE__*/MessagesManager_regenerator().m(function _callee2(location) {
1787
+ var message, _result$data, result;
1788
+ return MessagesManager_regenerator().w(function (_context2) {
1789
+ while (1) switch (_context2.n) {
1790
+ case 0:
1791
+ _context2.n = 1;
1792
+ return this.getRoomHistory(location.roomId).then(function (roomHistory) {
1793
+ return roomHistory === null || roomHistory === void 0 ? void 0 : roomHistory.getMessagesWindow(location.topicId, true);
1794
+ }).then(function (historyWindow) {
1795
+ return (historyWindow === null || historyWindow === void 0 ? void 0 : historyWindow.hasLatest) && historyWindow.getAt(historyWindow.length - 1);
1796
+ });
1797
+ case 1:
1798
+ message = _context2.v;
1799
+ if (message) {
1800
+ _context2.n = 3;
1801
+ break;
1802
+ }
1803
+ _context2.n = 2;
1804
+ return this.tracker.client.send('GetMessages', {
1805
+ location: location,
1806
+ limit: 1
1807
+ });
1808
+ case 2:
1809
+ result = _context2.v;
1810
+ message = (_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.messages[0];
1811
+ case 3:
1812
+ return _context2.a(2, message || null);
1813
+ }
1814
+ }, _callee2, this);
1815
+ }));
1816
+ function _resolveLastMessage(_x2) {
1817
+ return _resolveLastMessage2.apply(this, arguments);
1818
+ }
1819
+ return _resolveLastMessage;
1820
+ }())
1821
+ }, {
1822
+ key: "createHistoryForNewRoom",
1823
+ value: function createHistoryForNewRoom(room) {
1824
+ this.roomHistories.set([room.id, new RoomMessagesHistory(room, this.tracker)]);
1825
+ }
1826
+ }, {
1827
+ key: "handleRoomDeleted",
1828
+ value: function handleRoomDeleted(ev) {
1829
+ this.roomHistories["delete"](ev.id);
1830
+ }
1831
+ }, {
1832
+ key: "handleRoomJoin",
1833
+ value: function handleRoomJoin(ev) {
1834
+ this.createHistoryForNewRoom(ev.room);
1835
+ }
1836
+ }, {
1837
+ key: "handleRoomLeft",
1838
+ value: function handleRoomLeft(ev) {
1839
+ this.roomHistories["delete"](ev.id);
1840
+ }
1841
+ }, {
1842
+ key: "handleSession",
1843
+ value: function handleSession(ev) {
1844
+ var _this2 = this;
1845
+ this.roomHistories.deleteAll();
1846
+ ev.state.rooms.forEach(function (room) {
1847
+ return _this2.createHistoryForNewRoom(room);
1848
+ });
1849
+ this.deferredSession.resolve();
1850
+ }
1851
+ }]);
1852
+ }();
1853
+ ;// ./src/state-tracker/FollowedTopicsManager.ts
1854
+ function FollowedTopicsManager_typeof(o) { "@babel/helpers - typeof"; return FollowedTopicsManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, FollowedTopicsManager_typeof(o); }
1855
+ function FollowedTopicsManager_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1856
+ function FollowedTopicsManager_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? FollowedTopicsManager_ownKeys(Object(t), !0).forEach(function (r) { FollowedTopicsManager_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : FollowedTopicsManager_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1857
+ function FollowedTopicsManager_toConsumableArray(r) { return FollowedTopicsManager_arrayWithoutHoles(r) || FollowedTopicsManager_iterableToArray(r) || FollowedTopicsManager_unsupportedIterableToArray(r) || FollowedTopicsManager_nonIterableSpread(); }
1858
+ function FollowedTopicsManager_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1859
+ function FollowedTopicsManager_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
1860
+ function FollowedTopicsManager_arrayWithoutHoles(r) { if (Array.isArray(r)) return FollowedTopicsManager_arrayLikeToArray(r); }
1861
+ function FollowedTopicsManager_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = FollowedTopicsManager_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
1862
+ function FollowedTopicsManager_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return FollowedTopicsManager_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? FollowedTopicsManager_arrayLikeToArray(r, a) : void 0; } }
1863
+ function FollowedTopicsManager_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
1864
+ function FollowedTopicsManager_regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return FollowedTopicsManager_regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (FollowedTopicsManager_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, FollowedTopicsManager_regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, FollowedTopicsManager_regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), FollowedTopicsManager_regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", FollowedTopicsManager_regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), FollowedTopicsManager_regeneratorDefine2(u), FollowedTopicsManager_regeneratorDefine2(u, o, "Generator"), FollowedTopicsManager_regeneratorDefine2(u, n, function () { return this; }), FollowedTopicsManager_regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (FollowedTopicsManager_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
1865
+ function FollowedTopicsManager_regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } FollowedTopicsManager_regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { FollowedTopicsManager_regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, FollowedTopicsManager_regeneratorDefine2(e, r, n, t); }
1866
+ function FollowedTopicsManager_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
1867
+ function FollowedTopicsManager_asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { FollowedTopicsManager_asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { FollowedTopicsManager_asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
1868
+ function FollowedTopicsManager_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
1869
+ function FollowedTopicsManager_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, FollowedTopicsManager_toPropertyKey(o.key), o); } }
1870
+ function FollowedTopicsManager_createClass(e, r, t) { return r && FollowedTopicsManager_defineProperties(e.prototype, r), t && FollowedTopicsManager_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
1871
+ function FollowedTopicsManager_callSuper(t, o, e) { return o = FollowedTopicsManager_getPrototypeOf(o), FollowedTopicsManager_possibleConstructorReturn(t, FollowedTopicsManager_isNativeReflectConstruct() ? Reflect.construct(o, e || [], FollowedTopicsManager_getPrototypeOf(t).constructor) : o.apply(t, e)); }
1872
+ function FollowedTopicsManager_possibleConstructorReturn(t, e) { if (e && ("object" == FollowedTopicsManager_typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return FollowedTopicsManager_assertThisInitialized(t); }
1873
+ function FollowedTopicsManager_assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
1874
+ function FollowedTopicsManager_isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (FollowedTopicsManager_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
1875
+ function FollowedTopicsManager_getPrototypeOf(t) { return FollowedTopicsManager_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, FollowedTopicsManager_getPrototypeOf(t); }
1876
+ function FollowedTopicsManager_inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && FollowedTopicsManager_setPrototypeOf(t, e); }
1877
+ function FollowedTopicsManager_setPrototypeOf(t, e) { return FollowedTopicsManager_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, FollowedTopicsManager_setPrototypeOf(t, e); }
1878
+ function FollowedTopicsManager_defineProperty(e, r, t) { return (r = FollowedTopicsManager_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
1879
+ function FollowedTopicsManager_toPropertyKey(t) { var i = FollowedTopicsManager_toPrimitive(t, "string"); return "symbol" == FollowedTopicsManager_typeof(i) ? i : i + ""; }
1880
+ function FollowedTopicsManager_toPrimitive(t, r) { if ("object" != FollowedTopicsManager_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != FollowedTopicsManager_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1881
+
1882
+
1883
+
1884
+ var FollowedTopicsManager = /*#__PURE__*/function (_EventTarget) {
1885
+ function FollowedTopicsManager(tracker) {
1886
+ var _this;
1887
+ FollowedTopicsManager_classCallCheck(this, FollowedTopicsManager);
1888
+ _this = FollowedTopicsManager_callSuper(this, FollowedTopicsManager);
1889
+ FollowedTopicsManager_defineProperty(_this, "followedTopics", new IndexedCollection());
1890
+ FollowedTopicsManager_defineProperty(_this, "followedTopicsPromises", new PromiseRegistry());
1891
+ FollowedTopicsManager_defineProperty(_this, "deferredSession", new DeferredTask());
1892
+ FollowedTopicsManager_defineProperty(_this, "summariesCache", new Map());
1893
+ _this.tracker = tracker;
1894
+ _this.tracker.client.on('Session', function (ev) {
1895
+ return _this.handleSession(ev);
1896
+ });
1897
+ _this.tracker.client.on('RoomJoined', function (ev) {
1898
+ return _this.handleRoomJoin(ev);
1899
+ });
1900
+ _this.tracker.client.on('NewTopic', function (ev) {
1901
+ return _this.handleNewTopic(ev);
1902
+ });
1903
+ _this.tracker.client.on('FollowedTopicUpdated', function (ev) {
1904
+ return _this.handleFollowedTopicUpdated(ev);
1905
+ });
1906
+ _this.tracker.client.on('TopicFollowed', function (ev) {
1907
+ return _this.handleTopicFollowed(ev);
1908
+ });
1909
+ _this.tracker.client.on('NewMessage', function (ev) {
1910
+ return _this.handleNewMessage(ev);
1911
+ });
1912
+ _this.tracker.client.on('RoomDeleted', function (ev) {
1913
+ return _this.handleRoomDeleted(ev);
1914
+ });
1915
+ _this.tracker.client.on('RoomLeft', function (ev) {
1916
+ return _this.handleRoomLeft(ev);
1917
+ });
1918
+ _this.tracker.client.on('TopicDeleted', function (ev) {
1919
+ return _this.handleTopicDeleted(ev);
1920
+ });
1921
+ return _this;
1922
+ }
1923
+
1924
+ /**
1925
+ * Cache followed topics for all joined rooms in a space and fetch them in bulk if necessary.
1926
+ * Then you can get them using getRoomFollowedTopics().
1927
+ * @see getRoomFollowedTopics
1928
+ */
1929
+ FollowedTopicsManager_inherits(FollowedTopicsManager, _EventTarget);
1930
+ return FollowedTopicsManager_createClass(FollowedTopicsManager, [{
1798
1931
  key: "cacheSpaceFollowedTopics",
1799
1932
  value: (function () {
1800
- var _cacheSpaceFollowedTopics = MessagesManager_asyncToGenerator(/*#__PURE__*/MessagesManager_regenerator().m(function _callee2(spaceId) {
1933
+ var _cacheSpaceFollowedTopics = FollowedTopicsManager_asyncToGenerator(/*#__PURE__*/FollowedTopicsManager_regenerator().m(function _callee2(spaceId) {
1801
1934
  var _this2 = this;
1802
- var roomIds, resultPromise, result, _t;
1803
- return MessagesManager_regenerator().w(function (_context2) {
1935
+ var rooms, roomIds, isAlreadyCached, spaceRegistryKey, _t;
1936
+ return FollowedTopicsManager_regenerator().w(function (_context2) {
1804
1937
  while (1) switch (_context2.n) {
1805
1938
  case 0:
1806
1939
  _t = spaceId;
@@ -1822,8 +1955,13 @@ var MessagesManager = /*#__PURE__*/function () {
1822
1955
  _context2.n = 4;
1823
1956
  return this.tracker.rooms.get();
1824
1957
  case 4:
1825
- roomIds = _context2.v.findBy('spaceId', spaceId).items.map(function (room) {
1826
- return room.id;
1958
+ rooms = _context2.v;
1959
+ roomIds = spaceId ? rooms.findBy('spaceId', spaceId).items.map(function (r) {
1960
+ return r.id;
1961
+ }) : rooms.items.filter(function (r) {
1962
+ return !r.spaceId;
1963
+ }).map(function (r) {
1964
+ return r.id;
1827
1965
  });
1828
1966
  if (roomIds.length) {
1829
1967
  _context2.n = 5;
@@ -1831,31 +1969,51 @@ var MessagesManager = /*#__PURE__*/function () {
1831
1969
  }
1832
1970
  return _context2.a(2);
1833
1971
  case 5:
1834
- resultPromise = this.tracker.client.send('GetFollowedTopics', {
1835
- location: {
1836
- spaceId: spaceId
1837
- }
1838
- });
1839
- roomIds.forEach(function (roomId) {
1840
- return _this2.followedTopicsPromises.register(resultPromise, roomId);
1972
+ isAlreadyCached = roomIds.every(function (roomId) {
1973
+ return _this2.followedTopics.has(roomId);
1841
1974
  });
1842
- _context2.n = 6;
1843
- return resultPromise;
1844
- case 6:
1845
- result = _context2.v;
1846
- if (!result.error) {
1847
- _context2.n = 7;
1975
+ if (!isAlreadyCached) {
1976
+ _context2.n = 6;
1848
1977
  break;
1849
1978
  }
1850
- throw result.error;
1979
+ return _context2.a(2);
1980
+ case 6:
1981
+ spaceRegistryKey = "space_fetch_".concat(spaceId || 'spaceless');
1982
+ if (this.followedTopicsPromises.notExist(spaceRegistryKey)) {
1983
+ this.followedTopicsPromises.registerByFunction(/*#__PURE__*/FollowedTopicsManager_asyncToGenerator(/*#__PURE__*/FollowedTopicsManager_regenerator().m(function _callee() {
1984
+ var result;
1985
+ return FollowedTopicsManager_regenerator().w(function (_context) {
1986
+ while (1) switch (_context.n) {
1987
+ case 0:
1988
+ _context.n = 1;
1989
+ return _this2.tracker.client.send('GetFollowedTopics', {
1990
+ location: {
1991
+ spaceId: spaceId
1992
+ }
1993
+ });
1994
+ case 1:
1995
+ result = _context.v;
1996
+ if (!result.error) {
1997
+ _context.n = 2;
1998
+ break;
1999
+ }
2000
+ throw result.error;
2001
+ case 2:
2002
+ _this2.setFollowedTopicsArray(roomIds, result.data.followedTopics);
2003
+ case 3:
2004
+ return _context.a(2);
2005
+ }
2006
+ }, _callee);
2007
+ })), spaceRegistryKey);
2008
+ }
2009
+ _context2.n = 7;
2010
+ return this.followedTopicsPromises.get(spaceRegistryKey);
1851
2011
  case 7:
1852
- this.setFollowedTopicsArray(roomIds, result.data.followedTopics);
1853
- case 8:
1854
2012
  return _context2.a(2);
1855
2013
  }
1856
2014
  }, _callee2, this);
1857
2015
  }));
1858
- function cacheSpaceFollowedTopics(_x2) {
2016
+ function cacheSpaceFollowedTopics(_x) {
1859
2017
  return _cacheSpaceFollowedTopics.apply(this, arguments);
1860
2018
  }
1861
2019
  return cacheSpaceFollowedTopics;
@@ -1868,9 +2026,9 @@ var MessagesManager = /*#__PURE__*/function () {
1868
2026
  }, {
1869
2027
  key: "getRoomFollowedTopics",
1870
2028
  value: (function () {
1871
- var _getRoomFollowedTopics = MessagesManager_asyncToGenerator(/*#__PURE__*/MessagesManager_regenerator().m(function _callee4(roomId) {
2029
+ var _getRoomFollowedTopics = FollowedTopicsManager_asyncToGenerator(/*#__PURE__*/FollowedTopicsManager_regenerator().m(function _callee4(roomId) {
1872
2030
  var _this3 = this;
1873
- return MessagesManager_regenerator().w(function (_context4) {
2031
+ return FollowedTopicsManager_regenerator().w(function (_context4) {
1874
2032
  while (1) switch (_context4.n) {
1875
2033
  case 0:
1876
2034
  _context4.n = 1;
@@ -1887,9 +2045,9 @@ var MessagesManager = /*#__PURE__*/function () {
1887
2045
  break;
1888
2046
  }
1889
2047
  if (this.followedTopicsPromises.notExist(roomId)) {
1890
- this.followedTopicsPromises.registerByFunction(/*#__PURE__*/MessagesManager_asyncToGenerator(/*#__PURE__*/MessagesManager_regenerator().m(function _callee3() {
2048
+ this.followedTopicsPromises.registerByFunction(/*#__PURE__*/FollowedTopicsManager_asyncToGenerator(/*#__PURE__*/FollowedTopicsManager_regenerator().m(function _callee3() {
1891
2049
  var result;
1892
- return MessagesManager_regenerator().w(function (_context3) {
2050
+ return FollowedTopicsManager_regenerator().w(function (_context3) {
1893
2051
  while (1) switch (_context3.n) {
1894
2052
  case 0:
1895
2053
  _context3.n = 1;
@@ -1920,7 +2078,7 @@ var MessagesManager = /*#__PURE__*/function () {
1920
2078
  }
1921
2079
  }, _callee4, this);
1922
2080
  }));
1923
- function getRoomFollowedTopics(_x3) {
2081
+ function getRoomFollowedTopics(_x2) {
1924
2082
  return _getRoomFollowedTopics.apply(this, arguments);
1925
2083
  }
1926
2084
  return getRoomFollowedTopics;
@@ -1932,9 +2090,9 @@ var MessagesManager = /*#__PURE__*/function () {
1932
2090
  }, {
1933
2091
  key: "ackRoom",
1934
2092
  value: (function () {
1935
- var _ackRoom = MessagesManager_asyncToGenerator(/*#__PURE__*/MessagesManager_regenerator().m(function _callee5(roomId) {
2093
+ var _ackRoom = FollowedTopicsManager_asyncToGenerator(/*#__PURE__*/FollowedTopicsManager_regenerator().m(function _callee5(roomId) {
1936
2094
  var collection, _iterator, _step, followedTopic, _t2;
1937
- return MessagesManager_regenerator().w(function (_context5) {
2095
+ return FollowedTopicsManager_regenerator().w(function (_context5) {
1938
2096
  while (1) switch (_context5.p = _context5.n) {
1939
2097
  case 0:
1940
2098
  _context5.n = 1;
@@ -1947,7 +2105,7 @@ var MessagesManager = /*#__PURE__*/function () {
1947
2105
  }
1948
2106
  return _context5.a(2);
1949
2107
  case 2:
1950
- _iterator = MessagesManager_createForOfIteratorHelper(collection.items);
2108
+ _iterator = FollowedTopicsManager_createForOfIteratorHelper(collection.items);
1951
2109
  _context5.p = 3;
1952
2110
  _iterator.s();
1953
2111
  case 4:
@@ -1983,30 +2141,32 @@ var MessagesManager = /*#__PURE__*/function () {
1983
2141
  }
1984
2142
  }, _callee5, this, [[3, 7, 8, 9]]);
1985
2143
  }));
1986
- function ackRoom(_x4) {
2144
+ function ackRoom(_x3) {
1987
2145
  return _ackRoom.apply(this, arguments);
1988
2146
  }
1989
2147
  return ackRoom;
1990
2148
  }()
1991
2149
  /**
1992
- * Calculate missed messages with mentions from any topic in given room.
2150
+ * Summarize all unread messages or mentions from any topic in given location.
2151
+ * This method uses an internal cache, so it's ok to call it multiple times.
2152
+ * Capture the 'change' event to determine when it's worth calling this method again due to data changes.
1993
2153
  * @return Undefined if you are not in room.
1994
2154
  */
1995
2155
  )
1996
2156
  }, {
1997
- key: "summarizeUnreadMessages",
2157
+ key: "summarize",
1998
2158
  value: (function () {
1999
- var _summarizeUnreadMessages = MessagesManager_asyncToGenerator(/*#__PURE__*/MessagesManager_regenerator().m(function _callee6(location) {
2159
+ var _summarize = FollowedTopicsManager_asyncToGenerator(/*#__PURE__*/FollowedTopicsManager_regenerator().m(function _callee6(location) {
2000
2160
  var cacheKey, roomIds, targetTopicId, rooms, mentionCount, isUnread, _iterator2, _step2, roomId, collection, _iterator3, _step3, _topic$mentionCount, topic, result, _t3, _t4;
2001
- return MessagesManager_regenerator().w(function (_context6) {
2161
+ return FollowedTopicsManager_regenerator().w(function (_context6) {
2002
2162
  while (1) switch (_context6.p = _context6.n) {
2003
2163
  case 0:
2004
2164
  cacheKey = location.topicId ? "topic:".concat(location.roomId, ":").concat(location.topicId) : location.roomId ? "room:".concat(location.roomId) : location.spaceId ? "space:".concat(location.spaceId) : 'spaceless';
2005
- if (!this.unreadSummariesCache.has(cacheKey)) {
2165
+ if (!this.summariesCache.has(cacheKey)) {
2006
2166
  _context6.n = 1;
2007
2167
  break;
2008
2168
  }
2009
- return _context6.a(2, this.unreadSummariesCache.get(cacheKey));
2169
+ return _context6.a(2, this.summariesCache.get(cacheKey));
2010
2170
  case 1:
2011
2171
  roomIds = [];
2012
2172
  _context6.n = 2;
@@ -2025,7 +2185,7 @@ var MessagesManager = /*#__PURE__*/function () {
2025
2185
  case 3:
2026
2186
  roomIds = [location.roomId];
2027
2187
  targetTopicId = location.topicId;
2028
- _context6.n = 8;
2188
+ _context6.n = 9;
2029
2189
  break;
2030
2190
  case 4:
2031
2191
  if (!location.roomId) {
@@ -2033,7 +2193,7 @@ var MessagesManager = /*#__PURE__*/function () {
2033
2193
  break;
2034
2194
  }
2035
2195
  roomIds = [location.roomId];
2036
- _context6.n = 8;
2196
+ _context6.n = 9;
2037
2197
  break;
2038
2198
  case 5:
2039
2199
  if (!location.spaceId) {
@@ -2046,97 +2206,100 @@ var MessagesManager = /*#__PURE__*/function () {
2046
2206
  roomIds = rooms.findBy('spaceId', location.spaceId).items.map(function (r) {
2047
2207
  return r.id;
2048
2208
  });
2049
- _context6.n = 8;
2209
+ _context6.n = 9;
2050
2210
  break;
2051
2211
  case 7:
2212
+ _context6.n = 8;
2213
+ return this.cacheSpaceFollowedTopics(null);
2214
+ case 8:
2052
2215
  roomIds = rooms.items.filter(function (r) {
2053
2216
  return !r.spaceId;
2054
2217
  }).map(function (r) {
2055
2218
  return r.id;
2056
2219
  });
2057
- case 8:
2220
+ case 9:
2058
2221
  mentionCount = 0;
2059
2222
  isUnread = false;
2060
- _iterator2 = MessagesManager_createForOfIteratorHelper(roomIds);
2061
- _context6.p = 9;
2223
+ _iterator2 = FollowedTopicsManager_createForOfIteratorHelper(roomIds);
2224
+ _context6.p = 10;
2062
2225
  _iterator2.s();
2063
- case 10:
2226
+ case 11:
2064
2227
  if ((_step2 = _iterator2.n()).done) {
2065
- _context6.n = 21;
2228
+ _context6.n = 22;
2066
2229
  break;
2067
2230
  }
2068
2231
  roomId = _step2.value;
2069
- _context6.n = 11;
2232
+ _context6.n = 12;
2070
2233
  return this.getRoomFollowedTopics(roomId);
2071
- case 11:
2234
+ case 12:
2072
2235
  collection = _context6.v;
2073
2236
  if (collection) {
2074
- _context6.n = 12;
2237
+ _context6.n = 13;
2075
2238
  break;
2076
2239
  }
2077
- return _context6.a(3, 20);
2078
- case 12:
2079
- _iterator3 = MessagesManager_createForOfIteratorHelper(collection.items);
2080
- _context6.p = 13;
2240
+ return _context6.a(3, 21);
2241
+ case 13:
2242
+ _iterator3 = FollowedTopicsManager_createForOfIteratorHelper(collection.items);
2243
+ _context6.p = 14;
2081
2244
  _iterator3.s();
2082
- case 14:
2245
+ case 15:
2083
2246
  if ((_step3 = _iterator3.n()).done) {
2084
- _context6.n = 17;
2247
+ _context6.n = 18;
2085
2248
  break;
2086
2249
  }
2087
2250
  topic = _step3.value;
2088
2251
  if (!(targetTopicId && topic.location.topicId !== targetTopicId)) {
2089
- _context6.n = 15;
2252
+ _context6.n = 16;
2090
2253
  break;
2091
2254
  }
2092
- return _context6.a(3, 16);
2093
- case 15:
2255
+ return _context6.a(3, 17);
2256
+ case 16:
2094
2257
  if (topic.isUnread) {
2095
2258
  isUnread = true;
2096
2259
  }
2097
2260
  mentionCount += (_topic$mentionCount = topic.mentionCount) !== null && _topic$mentionCount !== void 0 ? _topic$mentionCount : 0;
2098
- case 16:
2099
- _context6.n = 14;
2100
- break;
2101
2261
  case 17:
2102
- _context6.n = 19;
2262
+ _context6.n = 15;
2103
2263
  break;
2104
2264
  case 18:
2105
- _context6.p = 18;
2106
- _t3 = _context6.v;
2107
- _iterator3.e(_t3);
2265
+ _context6.n = 20;
2266
+ break;
2108
2267
  case 19:
2109
2268
  _context6.p = 19;
2110
- _iterator3.f();
2111
- return _context6.f(19);
2269
+ _t3 = _context6.v;
2270
+ _iterator3.e(_t3);
2112
2271
  case 20:
2113
- _context6.n = 10;
2114
- break;
2272
+ _context6.p = 20;
2273
+ _iterator3.f();
2274
+ return _context6.f(20);
2115
2275
  case 21:
2116
- _context6.n = 23;
2276
+ _context6.n = 11;
2117
2277
  break;
2118
2278
  case 22:
2119
- _context6.p = 22;
2120
- _t4 = _context6.v;
2121
- _iterator2.e(_t4);
2279
+ _context6.n = 24;
2280
+ break;
2122
2281
  case 23:
2123
2282
  _context6.p = 23;
2124
- _iterator2.f();
2125
- return _context6.f(23);
2283
+ _t4 = _context6.v;
2284
+ _iterator2.e(_t4);
2126
2285
  case 24:
2286
+ _context6.p = 24;
2287
+ _iterator2.f();
2288
+ return _context6.f(24);
2289
+ case 25:
2127
2290
  result = {
2128
2291
  mentionCount: mentionCount,
2129
2292
  isUnread: isUnread
2130
2293
  };
2131
- this.unreadSummariesCache.set(cacheKey, result);
2294
+ this.summariesCache.set(cacheKey, result);
2132
2295
  return _context6.a(2, result);
2133
2296
  }
2134
- }, _callee6, this, [[13, 18, 19, 20], [9, 22, 23, 24]]);
2297
+ }, _callee6, this, [[14, 19, 20, 21], [10, 23, 24, 25]]);
2135
2298
  }));
2136
- function summarizeUnreadMessages(_x5) {
2137
- return _summarizeUnreadMessages.apply(this, arguments);
2299
+ function summarize(_x4) {
2300
+ return _summarize.apply(this, arguments);
2138
2301
  }
2139
- return summarizeUnreadMessages;
2302
+ return summarize;
2140
2303
  }()
2141
2304
  /**
2142
2305
  * For internal use. If you want to delete the message, execute a proper command on client object.
@@ -2156,128 +2319,13 @@ var MessagesManager = /*#__PURE__*/function () {
2156
2319
  return _this4.invalidateUnreadSummaries(roomId, topicId);
2157
2320
  });
2158
2321
  }
2159
-
2160
- /**
2161
- * For internal use.
2162
- * @internal
2163
- */
2164
- }, {
2165
- key: "_resolveLastMessage",
2166
- value: (function () {
2167
- var _resolveLastMessage2 = MessagesManager_asyncToGenerator(/*#__PURE__*/MessagesManager_regenerator().m(function _callee7(location) {
2168
- var message, _result$data, result;
2169
- return MessagesManager_regenerator().w(function (_context7) {
2170
- while (1) switch (_context7.n) {
2171
- case 0:
2172
- _context7.n = 1;
2173
- return this.getRoomHistory(location.roomId).then(function (roomHistory) {
2174
- return roomHistory === null || roomHistory === void 0 ? void 0 : roomHistory.getMessagesWindow(location.topicId, true);
2175
- }).then(function (historyWindow) {
2176
- return (historyWindow === null || historyWindow === void 0 ? void 0 : historyWindow.hasLatest) && historyWindow.getAt(historyWindow.length - 1);
2177
- });
2178
- case 1:
2179
- message = _context7.v;
2180
- if (message) {
2181
- _context7.n = 3;
2182
- break;
2183
- }
2184
- _context7.n = 2;
2185
- return this.tracker.client.send('GetMessages', {
2186
- location: location,
2187
- limit: 1
2188
- });
2189
- case 2:
2190
- result = _context7.v;
2191
- message = (_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.messages[0];
2192
- case 3:
2193
- return _context7.a(2, message || null);
2194
- }
2195
- }, _callee7, this);
2196
- }));
2197
- function _resolveLastMessage(_x6) {
2198
- return _resolveLastMessage2.apply(this, arguments);
2199
- }
2200
- return _resolveLastMessage;
2201
- }()
2202
- /**
2203
- * Wyczyść cache celowo, tylko dla lokalizacji których dotyczy zmiana.
2204
- */
2205
- )
2206
- }, {
2207
- key: "invalidateUnreadSummaries",
2208
- value: function invalidateUnreadSummaries(roomId, topicId) {
2209
- if (!roomId) {
2210
- this.unreadSummariesCache.clear();
2211
- return;
2212
- }
2213
- this.unreadSummariesCache["delete"]("room:".concat(roomId));
2214
- if (topicId) {
2215
- this.unreadSummariesCache["delete"]("topic:".concat(roomId, ":").concat(topicId));
2216
- } else {
2217
- var _iterator4 = MessagesManager_createForOfIteratorHelper(this.unreadSummariesCache.keys()),
2218
- _step4;
2219
- try {
2220
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
2221
- var key = _step4.value;
2222
- if (key.startsWith("topic:".concat(roomId, ":"))) {
2223
- this.unreadSummariesCache["delete"](key);
2224
- }
2225
- }
2226
- } catch (err) {
2227
- _iterator4.e(err);
2228
- } finally {
2229
- _iterator4.f();
2230
- }
2231
- }
2232
- var _iterator5 = MessagesManager_createForOfIteratorHelper(this.unreadSummariesCache.keys()),
2233
- _step5;
2234
- try {
2235
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
2236
- var _key2 = _step5.value;
2237
- if (_key2.startsWith('space:') || _key2 === 'spaceless') {
2238
- this.unreadSummariesCache["delete"](_key2);
2239
- }
2240
- }
2241
- } catch (err) {
2242
- _iterator5.e(err);
2243
- } finally {
2244
- _iterator5.f();
2245
- }
2246
- }
2247
- }, {
2248
- key: "invalidateUnreadSummariesForRooms",
2249
- value: function invalidateUnreadSummariesForRooms(roomIds) {
2250
- var _this5 = this;
2251
- var roomIdsSet = new Set(roomIds);
2252
- roomIds.forEach(function (roomId) {
2253
- _this5.unreadSummariesCache["delete"]("room:".concat(roomId));
2254
- });
2255
- var _iterator6 = MessagesManager_createForOfIteratorHelper(this.unreadSummariesCache.keys()),
2256
- _step6;
2257
- try {
2258
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
2259
- var key = _step6.value;
2260
- if (key.startsWith('space:') || key === 'spaceless') {
2261
- this.unreadSummariesCache["delete"](key);
2262
- continue;
2263
- }
2264
- if (key.startsWith('topic:')) {
2265
- var parts = key.split(':');
2266
- if (parts.length >= 2 && roomIdsSet.has(parts[1])) {
2267
- this.unreadSummariesCache["delete"](key);
2268
- }
2269
- }
2270
- }
2271
- } catch (err) {
2272
- _iterator6.e(err);
2273
- } finally {
2274
- _iterator6.f();
2275
- }
2276
- }
2277
2322
  }, {
2278
- key: "createHistoryForNewRoom",
2279
- value: function createHistoryForNewRoom(room) {
2280
- this.roomHistories.set([room.id, new RoomMessagesHistory(room, this.tracker)]);
2323
+ key: "handleSession",
2324
+ value: function handleSession(ev) {
2325
+ this.followedTopics.deleteAll();
2326
+ this.followedTopicsPromises.forgetAll();
2327
+ this.invalidateUnreadSummaries();
2328
+ this.deferredSession.resolve();
2281
2329
  }
2282
2330
  }, {
2283
2331
  key: "handleNewMessage",
@@ -2300,34 +2348,31 @@ var MessagesManager = /*#__PURE__*/function () {
2300
2348
  }, {
2301
2349
  key: "handleRoomDeleted",
2302
2350
  value: function handleRoomDeleted(ev) {
2303
- this.roomHistories["delete"](ev.id);
2304
2351
  this.clearRoomFollowedTopicsStructures(ev.id);
2305
2352
  }
2306
2353
  }, {
2307
2354
  key: "handleRoomJoin",
2308
2355
  value: function handleRoomJoin(ev) {
2309
- this.createHistoryForNewRoom(ev.room);
2310
2356
  this.clearRoomFollowedTopicsStructures(ev.room.id);
2311
2357
  }
2312
2358
  }, {
2313
2359
  key: "handleRoomLeft",
2314
2360
  value: function handleRoomLeft(ev) {
2315
- this.roomHistories["delete"](ev.id);
2316
2361
  this.clearRoomFollowedTopicsStructures(ev.id);
2317
2362
  }
2318
2363
  }, {
2319
2364
  key: "handleNewTopic",
2320
2365
  value: function () {
2321
- var _handleNewTopic = MessagesManager_asyncToGenerator(/*#__PURE__*/MessagesManager_regenerator().m(function _callee8(ev) {
2366
+ var _handleNewTopic = FollowedTopicsManager_asyncToGenerator(/*#__PURE__*/FollowedTopicsManager_regenerator().m(function _callee7(ev) {
2322
2367
  var result, followedTopic;
2323
- return MessagesManager_regenerator().w(function (_context8) {
2324
- while (1) switch (_context8.n) {
2368
+ return FollowedTopicsManager_regenerator().w(function (_context7) {
2369
+ while (1) switch (_context7.n) {
2325
2370
  case 0:
2326
2371
  if (!this.followedTopics.has(ev.roomId)) {
2327
- _context8.n = 2;
2372
+ _context7.n = 2;
2328
2373
  break;
2329
2374
  }
2330
- _context8.n = 1;
2375
+ _context7.n = 1;
2331
2376
  return this.tracker.client.send('GetFollowedTopics', {
2332
2377
  location: {
2333
2378
  roomId: ev.roomId,
@@ -2335,18 +2380,18 @@ var MessagesManager = /*#__PURE__*/function () {
2335
2380
  }
2336
2381
  });
2337
2382
  case 1:
2338
- result = _context8.v;
2383
+ result = _context7.v;
2339
2384
  followedTopic = result.data.followedTopics[0];
2340
2385
  if (followedTopic) {
2341
2386
  this.followedTopics.get(ev.roomId).set(followedTopic);
2342
2387
  this.invalidateUnreadSummaries(ev.roomId, ev.topic.id);
2343
2388
  }
2344
2389
  case 2:
2345
- return _context8.a(2);
2390
+ return _context7.a(2);
2346
2391
  }
2347
- }, _callee8, this);
2392
+ }, _callee7, this);
2348
2393
  }));
2349
- function handleNewTopic(_x7) {
2394
+ function handleNewTopic(_x5) {
2350
2395
  return _handleNewTopic.apply(this, arguments);
2351
2396
  }
2352
2397
  return handleNewTopic;
@@ -2358,39 +2403,106 @@ var MessagesManager = /*#__PURE__*/function () {
2358
2403
  (_this$followedTopics$3 = this.followedTopics.get(ev.location.roomId)) === null || _this$followedTopics$3 === void 0 || _this$followedTopics$3["delete"](ev.location.topicId);
2359
2404
  this.invalidateUnreadSummaries(ev.location.roomId, ev.location.topicId);
2360
2405
  }
2406
+
2407
+ /**
2408
+ * Invalidate the summaries cache intentionally, only for the locations affected by the change.
2409
+ */
2361
2410
  }, {
2362
- key: "handleSession",
2363
- value: function handleSession(ev) {
2364
- var _this6 = this;
2365
- this.followedTopics.deleteAll();
2366
- this.followedTopicsPromises.forgetAll();
2367
- this.invalidateUnreadSummaries();
2368
- this.roomHistories.deleteAll();
2369
- ev.state.rooms.forEach(function (room) {
2370
- return _this6.createHistoryForNewRoom(room);
2411
+ key: "invalidateUnreadSummaries",
2412
+ value: function invalidateUnreadSummaries(roomId, topicId) {
2413
+ if (roomId) {
2414
+ this.summariesCache["delete"]("room:".concat(roomId));
2415
+ if (topicId) {
2416
+ this.summariesCache["delete"]("topic:".concat(roomId, ":").concat(topicId));
2417
+ } else {
2418
+ var _iterator4 = FollowedTopicsManager_createForOfIteratorHelper(this.summariesCache.keys()),
2419
+ _step4;
2420
+ try {
2421
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
2422
+ var key = _step4.value;
2423
+ if (key.startsWith("topic:".concat(roomId, ":"))) {
2424
+ this.summariesCache["delete"](key);
2425
+ }
2426
+ }
2427
+ } catch (err) {
2428
+ _iterator4.e(err);
2429
+ } finally {
2430
+ _iterator4.f();
2431
+ }
2432
+ }
2433
+ var _iterator5 = FollowedTopicsManager_createForOfIteratorHelper(this.summariesCache.keys()),
2434
+ _step5;
2435
+ try {
2436
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
2437
+ var _key2 = _step5.value;
2438
+ if (_key2.startsWith('space:') || _key2 === 'spaceless') {
2439
+ this.summariesCache["delete"](_key2);
2440
+ }
2441
+ }
2442
+ } catch (err) {
2443
+ _iterator5.e(err);
2444
+ } finally {
2445
+ _iterator5.f();
2446
+ }
2447
+ } else {
2448
+ this.summariesCache.clear();
2449
+ }
2450
+ this.emit('change');
2451
+ }
2452
+ }, {
2453
+ key: "invalidateUnreadSummariesForRooms",
2454
+ value: function invalidateUnreadSummariesForRooms(roomIds) {
2455
+ var _this5 = this;
2456
+ var roomIdsSet = new Set(roomIds);
2457
+ roomIds.forEach(function (roomId) {
2458
+ _this5.summariesCache["delete"]("room:".concat(roomId));
2371
2459
  });
2372
- this.deferredSession.resolve();
2460
+ var _iterator6 = FollowedTopicsManager_createForOfIteratorHelper(this.summariesCache.keys()),
2461
+ _step6;
2462
+ try {
2463
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
2464
+ var key = _step6.value;
2465
+ if (key.startsWith('space:') || key === 'spaceless') {
2466
+ this.summariesCache["delete"](key);
2467
+ continue;
2468
+ }
2469
+ if (key.startsWith('topic:')) {
2470
+ var parts = key.split(':');
2471
+ if (parts.length >= 2 && roomIdsSet.has(parts[1])) {
2472
+ this.summariesCache["delete"](key);
2473
+ }
2474
+ }
2475
+ }
2476
+ } catch (err) {
2477
+ _iterator6.e(err);
2478
+ } finally {
2479
+ _iterator6.f();
2480
+ }
2481
+ this.emit('change');
2373
2482
  }
2374
2483
  }, {
2375
2484
  key: "updateLocallyFollowedTopicOnNewMessage",
2376
2485
  value: function () {
2377
- var _updateLocallyFollowedTopicOnNewMessage = MessagesManager_asyncToGenerator(/*#__PURE__*/MessagesManager_regenerator().m(function _callee9(ev) {
2378
- var _this$tracker$me;
2379
- var roomFollowedTopics, followedTopic, isMe, update, _member$spaceMember$r, _member$spaceMember, member, roleIds, mentionHandlers, mentionExists;
2380
- return MessagesManager_regenerator().w(function (_context9) {
2381
- while (1) switch (_context9.n) {
2486
+ var _updateLocallyFollowedTopicOnNewMessage = FollowedTopicsManager_asyncToGenerator(/*#__PURE__*/FollowedTopicsManager_regenerator().m(function _callee8(ev) {
2487
+ var roomFollowedTopics, followedTopic, me, isMe, update, _member$spaceMember$r, _member$spaceMember, member, roleIds, mentionHandlers, mentionExists;
2488
+ return FollowedTopicsManager_regenerator().w(function (_context8) {
2489
+ while (1) switch (_context8.n) {
2382
2490
  case 0:
2383
2491
  roomFollowedTopics = this.followedTopics.get(ev.message.location.roomId);
2384
2492
  followedTopic = roomFollowedTopics === null || roomFollowedTopics === void 0 ? void 0 : roomFollowedTopics.get(ev.message.location.topicId);
2385
2493
  if (!(!roomFollowedTopics || !followedTopic || ev.message.type === 'Ephemeral')) {
2386
- _context9.n = 1;
2494
+ _context8.n = 1;
2387
2495
  break;
2388
2496
  }
2389
- return _context9.a(2);
2497
+ return _context8.a(2);
2390
2498
  case 1:
2391
- isMe = ev.message.author.user.id === ((_this$tracker$me = this.tracker.me) === null || _this$tracker$me === void 0 ? void 0 : _this$tracker$me.id);
2499
+ _context8.n = 2;
2500
+ return this.tracker.getMe();
2501
+ case 2:
2502
+ me = _context8.v;
2503
+ isMe = ev.message.author.user.id === me.id;
2392
2504
  if (!isMe) {
2393
- _context9.n = 2;
2505
+ _context8.n = 3;
2394
2506
  break;
2395
2507
  }
2396
2508
  // Reset missed messages count if new message is authored by me
@@ -2398,21 +2510,21 @@ var MessagesManager = /*#__PURE__*/function () {
2398
2510
  missed: 0,
2399
2511
  lastAckMessageId: ev.message.id
2400
2512
  };
2401
- _context9.n = 5;
2513
+ _context8.n = 6;
2402
2514
  break;
2403
- case 2:
2515
+ case 3:
2404
2516
  if (!(ev.message.type === 'Text')) {
2405
- _context9.n = 4;
2517
+ _context8.n = 5;
2406
2518
  break;
2407
2519
  }
2408
- _context9.n = 3;
2520
+ _context8.n = 4;
2409
2521
  return this.tracker.rooms.getMe(ev.message.location.roomId);
2410
- case 3:
2411
- member = _context9.v;
2412
- roleIds = [].concat(MessagesManager_toConsumableArray((_member$spaceMember$r = (_member$spaceMember = member.spaceMember) === null || _member$spaceMember === void 0 ? void 0 : _member$spaceMember.roles) !== null && _member$spaceMember$r !== void 0 ? _member$spaceMember$r : []), MessagesManager_toConsumableArray(member.roles));
2413
- mentionHandlers = [].concat(MessagesManager_toConsumableArray(roleIds.map(function (id) {
2522
+ case 4:
2523
+ member = _context8.v;
2524
+ roleIds = [].concat(FollowedTopicsManager_toConsumableArray((_member$spaceMember$r = (_member$spaceMember = member.spaceMember) === null || _member$spaceMember === void 0 ? void 0 : _member$spaceMember.roles) !== null && _member$spaceMember$r !== void 0 ? _member$spaceMember$r : []), FollowedTopicsManager_toConsumableArray(member.roles));
2525
+ mentionHandlers = [].concat(FollowedTopicsManager_toConsumableArray(roleIds.map(function (id) {
2414
2526
  return "<@&".concat(id, ">");
2415
- })), ["<@".concat(ev.message.author.user.id, ">")]);
2527
+ })), ["<@".concat(me.id, ">")]);
2416
2528
  mentionExists = mentionHandlers.some(function (handler) {
2417
2529
  return ev.message.content.includes(handler);
2418
2530
  });
@@ -2421,23 +2533,23 @@ var MessagesManager = /*#__PURE__*/function () {
2421
2533
  isUnread: true,
2422
2534
  mentionCount: followedTopic.mentionCount + (mentionExists ? 1 : 0)
2423
2535
  };
2424
- _context9.n = 5;
2536
+ _context8.n = 6;
2425
2537
  break;
2426
- case 4:
2538
+ case 5:
2427
2539
  // ...or just mark as unread.
2428
2540
  update = {
2429
2541
  missed: followedTopic.missed === null ? null : followedTopic.missed + 1,
2430
2542
  isUnread: true
2431
2543
  };
2432
- case 5:
2433
- roomFollowedTopics.set(MessagesManager_objectSpread(MessagesManager_objectSpread({}, followedTopic), update));
2434
- this.invalidateUnreadSummaries(ev.message.location.roomId, ev.message.location.topicId);
2435
2544
  case 6:
2436
- return _context9.a(2);
2545
+ roomFollowedTopics.set(FollowedTopicsManager_objectSpread(FollowedTopicsManager_objectSpread({}, followedTopic), update));
2546
+ this.invalidateUnreadSummaries(ev.message.location.roomId, ev.message.location.topicId);
2547
+ case 7:
2548
+ return _context8.a(2);
2437
2549
  }
2438
- }, _callee9, this);
2550
+ }, _callee8, this);
2439
2551
  }));
2440
- function updateLocallyFollowedTopicOnNewMessage(_x8) {
2552
+ function updateLocallyFollowedTopicOnNewMessage(_x6) {
2441
2553
  return _updateLocallyFollowedTopicOnNewMessage.apply(this, arguments);
2442
2554
  }
2443
2555
  return updateLocallyFollowedTopicOnNewMessage;
@@ -2445,7 +2557,7 @@ var MessagesManager = /*#__PURE__*/function () {
2445
2557
  }, {
2446
2558
  key: "setFollowedTopicsArray",
2447
2559
  value: function setFollowedTopicsArray(roomIds, followedTopics) {
2448
- var _this7 = this;
2560
+ var _this6 = this;
2449
2561
  var roomToTopics = {};
2450
2562
 
2451
2563
  // Reassign followed topics to limit collection change event emit
@@ -2455,14 +2567,14 @@ var MessagesManager = /*#__PURE__*/function () {
2455
2567
  roomToTopics[followedTopic.location.roomId].push(followedTopic);
2456
2568
  });
2457
2569
  roomIds.forEach(function (roomId) {
2458
- if (!_this7.followedTopics.has(roomId)) {
2459
- _this7.followedTopics.set([roomId, new ObservableIndexedObjectCollection(function (followedTopic) {
2570
+ if (!_this6.followedTopics.has(roomId)) {
2571
+ _this6.followedTopics.set([roomId, new ObservableIndexedObjectCollection(function (followedTopic) {
2460
2572
  return followedTopic.location.topicId;
2461
2573
  })]);
2462
2574
  }
2463
2575
  if (roomToTopics[roomId]) {
2464
- var _this7$followedTopics;
2465
- (_this7$followedTopics = _this7.followedTopics.get(roomId)).set.apply(_this7$followedTopics, MessagesManager_toConsumableArray(roomToTopics[roomId]));
2576
+ var _this6$followedTopics;
2577
+ (_this6$followedTopics = _this6.followedTopics.get(roomId)).set.apply(_this6$followedTopics, FollowedTopicsManager_toConsumableArray(roomToTopics[roomId]));
2466
2578
  }
2467
2579
  });
2468
2580
  this.invalidateUnreadSummariesForRooms(roomIds);
@@ -2475,7 +2587,7 @@ var MessagesManager = /*#__PURE__*/function () {
2475
2587
  this.invalidateUnreadSummaries(roomId);
2476
2588
  }
2477
2589
  }]);
2478
- }();
2590
+ }(EventTarget);
2479
2591
  ;// ./src/state-tracker/RoomsManager.ts
2480
2592
  function RoomsManager_typeof(o) { "@babel/helpers - typeof"; return RoomsManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, RoomsManager_typeof(o); }
2481
2593
  function RoomsManager_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -2500,11 +2612,13 @@ function RoomsManager_toPrimitive(t, r) { if ("object" != RoomsManager_typeof(t)
2500
2612
 
2501
2613
 
2502
2614
 
2615
+
2503
2616
  var RoomsManager = /*#__PURE__*/function () {
2504
2617
  function RoomsManager(tracker) {
2505
2618
  var _this = this;
2506
2619
  RoomsManager_classCallCheck(this, RoomsManager);
2507
2620
  RoomsManager_defineProperty(this, "messages", void 0);
2621
+ RoomsManager_defineProperty(this, "followedTopics", void 0);
2508
2622
  RoomsManager_defineProperty(this, "list", new ObservableIndexedObjectCollection('id'));
2509
2623
  RoomsManager_defineProperty(this, "topics", new IndexedCollection());
2510
2624
  RoomsManager_defineProperty(this, "members", new IndexedCollection());
@@ -2513,6 +2627,7 @@ var RoomsManager = /*#__PURE__*/function () {
2513
2627
  RoomsManager_defineProperty(this, "topicsPromises", new PromiseRegistry());
2514
2628
  this.tracker = tracker;
2515
2629
  this.messages = new MessagesManager(tracker);
2630
+ this.followedTopics = new FollowedTopicsManager(tracker);
2516
2631
  this.tracker.client.on('NewMessage', function (ev) {
2517
2632
  return _this.handleNewMessage(ev);
2518
2633
  });
@@ -2780,12 +2895,12 @@ var RoomsManager = /*#__PURE__*/function () {
2780
2895
  (_this$members = this.members)["delete"].apply(_this$members, roomIds);
2781
2896
  (_this$membersPromises = this.membersPromises).forget.apply(_this$membersPromises, roomIds);
2782
2897
  for (var _i = 0, _roomIds = roomIds; _i < _roomIds.length; _i++) {
2783
- var _this$topics$get$item, _this$topics$get2, _this$messages;
2898
+ var _this$topics$get$item, _this$topics$get2, _this$followedTopics;
2784
2899
  var roomId = _roomIds[_i];
2785
2900
  var topicIds = (_this$topics$get$item = (_this$topics$get2 = this.topics.get(roomId)) === null || _this$topics$get2 === void 0 ? void 0 : _this$topics$get2.items.map(function (topic) {
2786
2901
  return topic.id;
2787
2902
  })) !== null && _this$topics$get$item !== void 0 ? _this$topics$get$item : [];
2788
- (_this$messages = this.messages)._deleteByTopicIds.apply(_this$messages, [roomId].concat(RoomsManager_toConsumableArray(topicIds)));
2903
+ (_this$followedTopics = this.followedTopics)._deleteByTopicIds.apply(_this$followedTopics, [roomId].concat(RoomsManager_toConsumableArray(topicIds)));
2789
2904
  }
2790
2905
  (_this$topics = this.topics)["delete"].apply(_this$topics, roomIds);
2791
2906
  }