polfan-server-js-client 0.2.94 → 0.2.95

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.
@@ -1705,12 +1705,12 @@ var RoomMessagesHistory = /*#__PURE__*/function () {
1705
1705
  }();
1706
1706
  ;// ./src/state-tracker/MessagesManager.ts
1707
1707
  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; }
1708
1710
  function MessagesManager_toConsumableArray(r) { return MessagesManager_arrayWithoutHoles(r) || MessagesManager_iterableToArray(r) || MessagesManager_unsupportedIterableToArray(r) || MessagesManager_nonIterableSpread(); }
1709
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."); }
1710
1712
  function MessagesManager_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
1711
1713
  function MessagesManager_arrayWithoutHoles(r) { if (Array.isArray(r)) return MessagesManager_arrayLikeToArray(r); }
1712
- 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; }
1713
- 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; }
1714
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
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
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; }
@@ -1735,6 +1735,7 @@ var MessagesManager = /*#__PURE__*/function () {
1735
1735
  MessagesManager_defineProperty(this, "followedTopics", new IndexedCollection());
1736
1736
  MessagesManager_defineProperty(this, "followedTopicsPromises", new PromiseRegistry());
1737
1737
  MessagesManager_defineProperty(this, "deferredSession", new DeferredTask());
1738
+ MessagesManager_defineProperty(this, "unreadSummariesCache", new Map());
1738
1739
  this.tracker = tracker;
1739
1740
  this.tracker.client.on('Session', function (ev) {
1740
1741
  return _this.handleSession(ev);
@@ -1751,9 +1752,6 @@ var MessagesManager = /*#__PURE__*/function () {
1751
1752
  this.tracker.client.on('TopicFollowed', function (ev) {
1752
1753
  return _this.handleTopicFollowed(ev);
1753
1754
  });
1754
- this.tracker.client.on('TopicUnfollowed', function (ev) {
1755
- return _this.handleTopicUnfollowed(ev);
1756
- });
1757
1755
  this.tracker.client.on('NewMessage', function (ev) {
1758
1756
  return _this.handleNewMessage(ev);
1759
1757
  });
@@ -1928,13 +1926,13 @@ var MessagesManager = /*#__PURE__*/function () {
1928
1926
  return getRoomFollowedTopics;
1929
1927
  }()
1930
1928
  /**
1931
- * Batch acknowledge all missed messages from any topics in given room.
1929
+ * Batch acknowledge all messages for given room.
1932
1930
  */
1933
1931
  )
1934
1932
  }, {
1935
- key: "ackRoomFollowedTopics",
1933
+ key: "ackRoom",
1936
1934
  value: (function () {
1937
- var _ackRoomFollowedTopics = MessagesManager_asyncToGenerator(/*#__PURE__*/MessagesManager_regenerator().m(function _callee5(roomId) {
1935
+ var _ackRoom = MessagesManager_asyncToGenerator(/*#__PURE__*/MessagesManager_regenerator().m(function _callee5(roomId) {
1938
1936
  var collection, _iterator, _step, followedTopic, _t2;
1939
1937
  return MessagesManager_regenerator().w(function (_context5) {
1940
1938
  while (1) switch (_context5.p = _context5.n) {
@@ -1958,7 +1956,7 @@ var MessagesManager = /*#__PURE__*/function () {
1958
1956
  break;
1959
1957
  }
1960
1958
  followedTopic = _step.value;
1961
- if (!followedTopic.missed) {
1959
+ if (!followedTopic.isUnread) {
1962
1960
  _context5.n = 5;
1963
1961
  break;
1964
1962
  }
@@ -1985,45 +1983,160 @@ var MessagesManager = /*#__PURE__*/function () {
1985
1983
  }
1986
1984
  }, _callee5, this, [[3, 7, 8, 9]]);
1987
1985
  }));
1988
- function ackRoomFollowedTopics(_x4) {
1989
- return _ackRoomFollowedTopics.apply(this, arguments);
1986
+ function ackRoom(_x4) {
1987
+ return _ackRoom.apply(this, arguments);
1990
1988
  }
1991
- return ackRoomFollowedTopics;
1989
+ return ackRoom;
1992
1990
  }()
1993
1991
  /**
1994
- * Calculate missed messages from any topic in given room.
1992
+ * Calculate missed messages with mentions from any topic in given room.
1995
1993
  * @return Undefined if you are not in room.
1996
1994
  */
1997
1995
  )
1998
1996
  }, {
1999
- key: "calculateRoomMissedMessages",
1997
+ key: "summarizeUnreadMessages",
2000
1998
  value: (function () {
2001
- var _calculateRoomMissedMessages = MessagesManager_asyncToGenerator(/*#__PURE__*/MessagesManager_regenerator().m(function _callee6(roomId) {
2002
- var collection;
1999
+ var _summarizeUnreadMessages = MessagesManager_asyncToGenerator(/*#__PURE__*/MessagesManager_regenerator().m(function _callee6(location) {
2000
+ var cacheKey, roomIds, targetTopicId, rooms, mentionCount, isUnread, _iterator2, _step2, roomId, collection, _iterator3, _step3, _topic$mentionCount, topic, result, _t3, _t4;
2003
2001
  return MessagesManager_regenerator().w(function (_context6) {
2004
- while (1) switch (_context6.n) {
2002
+ while (1) switch (_context6.p = _context6.n) {
2005
2003
  case 0:
2006
- _context6.n = 1;
2007
- return this.getRoomFollowedTopics(roomId);
2004
+ 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)) {
2006
+ _context6.n = 1;
2007
+ break;
2008
+ }
2009
+ return _context6.a(2, this.unreadSummariesCache.get(cacheKey));
2008
2010
  case 1:
2011
+ roomIds = [];
2012
+ _context6.n = 2;
2013
+ return this.tracker.rooms.get();
2014
+ case 2:
2015
+ rooms = _context6.v;
2016
+ if (!location.topicId) {
2017
+ _context6.n = 4;
2018
+ break;
2019
+ }
2020
+ if (location.roomId) {
2021
+ _context6.n = 3;
2022
+ break;
2023
+ }
2024
+ throw new Error("roomId is required when querying by topicId");
2025
+ case 3:
2026
+ roomIds = [location.roomId];
2027
+ targetTopicId = location.topicId;
2028
+ _context6.n = 8;
2029
+ break;
2030
+ case 4:
2031
+ if (!location.roomId) {
2032
+ _context6.n = 5;
2033
+ break;
2034
+ }
2035
+ roomIds = [location.roomId];
2036
+ _context6.n = 8;
2037
+ break;
2038
+ case 5:
2039
+ if (!location.spaceId) {
2040
+ _context6.n = 7;
2041
+ break;
2042
+ }
2043
+ _context6.n = 6;
2044
+ return this.cacheSpaceFollowedTopics(location.spaceId);
2045
+ case 6:
2046
+ roomIds = rooms.findBy('spaceId', location.spaceId).items.map(function (r) {
2047
+ return r.id;
2048
+ });
2049
+ _context6.n = 8;
2050
+ break;
2051
+ case 7:
2052
+ roomIds = rooms.items.filter(function (r) {
2053
+ return !r.spaceId;
2054
+ }).map(function (r) {
2055
+ return r.id;
2056
+ });
2057
+ case 8:
2058
+ mentionCount = 0;
2059
+ isUnread = false;
2060
+ _iterator2 = MessagesManager_createForOfIteratorHelper(roomIds);
2061
+ _context6.p = 9;
2062
+ _iterator2.s();
2063
+ case 10:
2064
+ if ((_step2 = _iterator2.n()).done) {
2065
+ _context6.n = 21;
2066
+ break;
2067
+ }
2068
+ roomId = _step2.value;
2069
+ _context6.n = 11;
2070
+ return this.getRoomFollowedTopics(roomId);
2071
+ case 11:
2009
2072
  collection = _context6.v;
2010
- if (!collection) {
2011
- _context6.n = 2;
2073
+ if (collection) {
2074
+ _context6.n = 12;
2012
2075
  break;
2013
2076
  }
2014
- return _context6.a(2, collection.items.reduce(function (previousValue, currentValue) {
2015
- var _currentValue$missed;
2016
- return previousValue + ((_currentValue$missed = currentValue.missed) !== null && _currentValue$missed !== void 0 ? _currentValue$missed : 0);
2017
- }, 0));
2018
- case 2:
2019
- return _context6.a(2, undefined);
2077
+ return _context6.a(3, 20);
2078
+ case 12:
2079
+ _iterator3 = MessagesManager_createForOfIteratorHelper(collection.items);
2080
+ _context6.p = 13;
2081
+ _iterator3.s();
2082
+ case 14:
2083
+ if ((_step3 = _iterator3.n()).done) {
2084
+ _context6.n = 17;
2085
+ break;
2086
+ }
2087
+ topic = _step3.value;
2088
+ if (!(targetTopicId && topic.location.topicId !== targetTopicId)) {
2089
+ _context6.n = 15;
2090
+ break;
2091
+ }
2092
+ return _context6.a(3, 16);
2093
+ case 15:
2094
+ if (topic.isUnread) {
2095
+ isUnread = true;
2096
+ }
2097
+ mentionCount += (_topic$mentionCount = topic.mentionCount) !== null && _topic$mentionCount !== void 0 ? _topic$mentionCount : 0;
2098
+ case 16:
2099
+ _context6.n = 14;
2100
+ break;
2101
+ case 17:
2102
+ _context6.n = 19;
2103
+ break;
2104
+ case 18:
2105
+ _context6.p = 18;
2106
+ _t3 = _context6.v;
2107
+ _iterator3.e(_t3);
2108
+ case 19:
2109
+ _context6.p = 19;
2110
+ _iterator3.f();
2111
+ return _context6.f(19);
2112
+ case 20:
2113
+ _context6.n = 10;
2114
+ break;
2115
+ case 21:
2116
+ _context6.n = 23;
2117
+ break;
2118
+ case 22:
2119
+ _context6.p = 22;
2120
+ _t4 = _context6.v;
2121
+ _iterator2.e(_t4);
2122
+ case 23:
2123
+ _context6.p = 23;
2124
+ _iterator2.f();
2125
+ return _context6.f(23);
2126
+ case 24:
2127
+ result = {
2128
+ mentionCount: mentionCount,
2129
+ isUnread: isUnread
2130
+ };
2131
+ this.unreadSummariesCache.set(cacheKey, result);
2132
+ return _context6.a(2, result);
2020
2133
  }
2021
- }, _callee6, this);
2134
+ }, _callee6, this, [[13, 18, 19, 20], [9, 22, 23, 24]]);
2022
2135
  }));
2023
- function calculateRoomMissedMessages(_x5) {
2024
- return _calculateRoomMissedMessages.apply(this, arguments);
2136
+ function summarizeUnreadMessages(_x5) {
2137
+ return _summarizeUnreadMessages.apply(this, arguments);
2025
2138
  }
2026
- return calculateRoomMissedMessages;
2139
+ return summarizeUnreadMessages;
2027
2140
  }()
2028
2141
  /**
2029
2142
  * For internal use. If you want to delete the message, execute a proper command on client object.
@@ -2033,11 +2146,15 @@ var MessagesManager = /*#__PURE__*/function () {
2033
2146
  }, {
2034
2147
  key: "_deleteByTopicIds",
2035
2148
  value: function _deleteByTopicIds(roomId) {
2036
- var _this$followedTopics$;
2149
+ var _this$followedTopics$,
2150
+ _this4 = this;
2037
2151
  for (var _len = arguments.length, topicIds = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
2038
2152
  topicIds[_key - 1] = arguments[_key];
2039
2153
  }
2040
2154
  (_this$followedTopics$ = this.followedTopics.get(roomId)) === null || _this$followedTopics$ === void 0 || _this$followedTopics$["delete"].apply(_this$followedTopics$, topicIds);
2155
+ topicIds.forEach(function (topicId) {
2156
+ return _this4.invalidateUnreadSummaries(roomId, topicId);
2157
+ });
2041
2158
  }
2042
2159
 
2043
2160
  /**
@@ -2081,7 +2198,82 @@ var MessagesManager = /*#__PURE__*/function () {
2081
2198
  return _resolveLastMessage2.apply(this, arguments);
2082
2199
  }
2083
2200
  return _resolveLastMessage;
2084
- }())
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
+ }
2085
2277
  }, {
2086
2278
  key: "createHistoryForNewRoom",
2087
2279
  value: function createHistoryForNewRoom(room) {
@@ -2090,24 +2282,20 @@ var MessagesManager = /*#__PURE__*/function () {
2090
2282
  }, {
2091
2283
  key: "handleNewMessage",
2092
2284
  value: function handleNewMessage(ev) {
2093
- this.updateLocallyFollowedTopicOnNewMessage(ev);
2285
+ void this.updateLocallyFollowedTopicOnNewMessage(ev);
2094
2286
  }
2095
2287
  }, {
2096
2288
  key: "handleFollowedTopicUpdated",
2097
2289
  value: function handleFollowedTopicUpdated(ev) {
2098
2290
  var _this$followedTopics$2;
2099
2291
  (_this$followedTopics$2 = this.followedTopics.get(ev.followedTopic.location.roomId)) === null || _this$followedTopics$2 === void 0 || _this$followedTopics$2.set(ev.followedTopic);
2292
+ this.invalidateUnreadSummaries(ev.followedTopic.location.roomId, ev.followedTopic.location.topicId);
2100
2293
  }
2101
2294
  }, {
2102
2295
  key: "handleTopicFollowed",
2103
2296
  value: function handleTopicFollowed(ev) {
2104
2297
  this.setFollowedTopicsArray([ev.followedTopic.location.roomId], [ev.followedTopic]);
2105
- }
2106
- }, {
2107
- key: "handleTopicUnfollowed",
2108
- value: function handleTopicUnfollowed(ev) {
2109
- var _this$followedTopics$3;
2110
- (_this$followedTopics$3 = this.followedTopics.get(ev.location.roomId)) === null || _this$followedTopics$3 === void 0 || _this$followedTopics$3["delete"](ev.location.topicId);
2298
+ this.invalidateUnreadSummaries(ev.followedTopic.location.roomId, ev.followedTopic.location.topicId);
2111
2299
  }
2112
2300
  }, {
2113
2301
  key: "handleRoomDeleted",
@@ -2151,6 +2339,7 @@ var MessagesManager = /*#__PURE__*/function () {
2151
2339
  followedTopic = result.data.followedTopics[0];
2152
2340
  if (followedTopic) {
2153
2341
  this.followedTopics.get(ev.roomId).set(followedTopic);
2342
+ this.invalidateUnreadSummaries(ev.roomId, ev.topic.id);
2154
2343
  }
2155
2344
  case 2:
2156
2345
  return _context8.a(2);
@@ -2165,51 +2354,98 @@ var MessagesManager = /*#__PURE__*/function () {
2165
2354
  }, {
2166
2355
  key: "handleTopicDeleted",
2167
2356
  value: function handleTopicDeleted(ev) {
2168
- var _this$followedTopics$4;
2169
- (_this$followedTopics$4 = this.followedTopics.get(ev.location.roomId)) === null || _this$followedTopics$4 === void 0 || _this$followedTopics$4["delete"](ev.location.topicId);
2357
+ var _this$followedTopics$3;
2358
+ (_this$followedTopics$3 = this.followedTopics.get(ev.location.roomId)) === null || _this$followedTopics$3 === void 0 || _this$followedTopics$3["delete"](ev.location.topicId);
2359
+ this.invalidateUnreadSummaries(ev.location.roomId, ev.location.topicId);
2170
2360
  }
2171
2361
  }, {
2172
2362
  key: "handleSession",
2173
2363
  value: function handleSession(ev) {
2174
- var _this4 = this;
2364
+ var _this6 = this;
2175
2365
  this.followedTopics.deleteAll();
2176
2366
  this.followedTopicsPromises.forgetAll();
2367
+ this.invalidateUnreadSummaries();
2177
2368
  this.roomHistories.deleteAll();
2178
2369
  ev.state.rooms.forEach(function (room) {
2179
- return _this4.createHistoryForNewRoom(room);
2370
+ return _this6.createHistoryForNewRoom(room);
2180
2371
  });
2181
2372
  this.deferredSession.resolve();
2182
2373
  }
2183
2374
  }, {
2184
2375
  key: "updateLocallyFollowedTopicOnNewMessage",
2185
- value: function updateLocallyFollowedTopicOnNewMessage(ev) {
2186
- var _this$tracker$me;
2187
- var roomFollowedTopics = this.followedTopics.get(ev.message.location.roomId);
2188
- var followedTopic = roomFollowedTopics === null || roomFollowedTopics === void 0 ? void 0 : roomFollowedTopics.get(ev.message.location.topicId);
2189
- if (!roomFollowedTopics || !followedTopic || ev.message.type === 'Ephemeral') {
2190
- // Skip if we don't follow this room or targeted topic or the message is ephemeral
2191
- return;
2192
- }
2193
- var isMe = ev.message.author.user.id === ((_this$tracker$me = this.tracker.me) === null || _this$tracker$me === void 0 ? void 0 : _this$tracker$me.id);
2194
- var update;
2195
- if (isMe) {
2196
- // Reset missed messages count if new message is authored by me
2197
- update = {
2198
- missed: 0,
2199
- lastAckMessageId: ev.message.id
2200
- };
2201
- } else {
2202
- // ...add 1 otherwise
2203
- update = {
2204
- missed: followedTopic.missed === null ? null : followedTopic.missed + 1
2205
- };
2376
+ 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) {
2382
+ case 0:
2383
+ roomFollowedTopics = this.followedTopics.get(ev.message.location.roomId);
2384
+ followedTopic = roomFollowedTopics === null || roomFollowedTopics === void 0 ? void 0 : roomFollowedTopics.get(ev.message.location.topicId);
2385
+ if (!(!roomFollowedTopics || !followedTopic || ev.message.type === 'Ephemeral')) {
2386
+ _context9.n = 1;
2387
+ break;
2388
+ }
2389
+ return _context9.a(2);
2390
+ 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);
2392
+ if (!isMe) {
2393
+ _context9.n = 2;
2394
+ break;
2395
+ }
2396
+ // Reset missed messages count if new message is authored by me
2397
+ update = {
2398
+ missed: 0,
2399
+ lastAckMessageId: ev.message.id
2400
+ };
2401
+ _context9.n = 5;
2402
+ break;
2403
+ case 2:
2404
+ if (!(ev.message.type === 'Text')) {
2405
+ _context9.n = 4;
2406
+ break;
2407
+ }
2408
+ _context9.n = 3;
2409
+ 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) {
2414
+ return "<@&".concat(id, ">");
2415
+ })), ["<@".concat(ev.message.author.user.id, ">")]);
2416
+ mentionExists = mentionHandlers.some(function (handler) {
2417
+ return ev.message.content.includes(handler);
2418
+ });
2419
+ update = {
2420
+ missed: followedTopic.missed === null ? null : followedTopic.missed + 1,
2421
+ isUnread: true,
2422
+ mentionCount: followedTopic.mentionCount + (mentionExists ? 1 : 0)
2423
+ };
2424
+ _context9.n = 5;
2425
+ break;
2426
+ case 4:
2427
+ // ...or just mark as unread.
2428
+ update = {
2429
+ missed: followedTopic.missed === null ? null : followedTopic.missed + 1,
2430
+ isUnread: true
2431
+ };
2432
+ case 5:
2433
+ roomFollowedTopics.set(MessagesManager_objectSpread(MessagesManager_objectSpread({}, followedTopic), update));
2434
+ this.invalidateUnreadSummaries(ev.message.location.roomId, ev.message.location.topicId);
2435
+ case 6:
2436
+ return _context9.a(2);
2437
+ }
2438
+ }, _callee9, this);
2439
+ }));
2440
+ function updateLocallyFollowedTopicOnNewMessage(_x8) {
2441
+ return _updateLocallyFollowedTopicOnNewMessage.apply(this, arguments);
2206
2442
  }
2207
- roomFollowedTopics.set(MessagesManager_objectSpread(MessagesManager_objectSpread({}, followedTopic), update));
2208
- }
2443
+ return updateLocallyFollowedTopicOnNewMessage;
2444
+ }()
2209
2445
  }, {
2210
2446
  key: "setFollowedTopicsArray",
2211
2447
  value: function setFollowedTopicsArray(roomIds, followedTopics) {
2212
- var _this5 = this;
2448
+ var _this7 = this;
2213
2449
  var roomToTopics = {};
2214
2450
 
2215
2451
  // Reassign followed topics to limit collection change event emit
@@ -2219,22 +2455,24 @@ var MessagesManager = /*#__PURE__*/function () {
2219
2455
  roomToTopics[followedTopic.location.roomId].push(followedTopic);
2220
2456
  });
2221
2457
  roomIds.forEach(function (roomId) {
2222
- if (!_this5.followedTopics.has(roomId)) {
2223
- _this5.followedTopics.set([roomId, new ObservableIndexedObjectCollection(function (followedTopic) {
2458
+ if (!_this7.followedTopics.has(roomId)) {
2459
+ _this7.followedTopics.set([roomId, new ObservableIndexedObjectCollection(function (followedTopic) {
2224
2460
  return followedTopic.location.topicId;
2225
2461
  })]);
2226
2462
  }
2227
2463
  if (roomToTopics[roomId]) {
2228
- var _this5$followedTopics;
2229
- (_this5$followedTopics = _this5.followedTopics.get(roomId)).set.apply(_this5$followedTopics, MessagesManager_toConsumableArray(roomToTopics[roomId]));
2464
+ var _this7$followedTopics;
2465
+ (_this7$followedTopics = _this7.followedTopics.get(roomId)).set.apply(_this7$followedTopics, MessagesManager_toConsumableArray(roomToTopics[roomId]));
2230
2466
  }
2231
2467
  });
2468
+ this.invalidateUnreadSummariesForRooms(roomIds);
2232
2469
  }
2233
2470
  }, {
2234
2471
  key: "clearRoomFollowedTopicsStructures",
2235
2472
  value: function clearRoomFollowedTopicsStructures(roomId) {
2236
2473
  this.followedTopics["delete"](roomId);
2237
2474
  this.followedTopicsPromises.forget(roomId);
2475
+ this.invalidateUnreadSummaries(roomId);
2238
2476
  }
2239
2477
  }]);
2240
2478
  }();
@@ -2979,8 +3217,8 @@ var SpacesManager = /*#__PURE__*/function () {
2979
3217
  });
2980
3218
  }
2981
3219
 
2982
- /**
2983
- * Get collection of all the spaces you are in.
3220
+ /**
3221
+ * Get collection of all the spaces you are in.
2984
3222
  */
2985
3223
  return SpacesManager_createClass(SpacesManager, [{
2986
3224
  key: "get",
@@ -3001,8 +3239,8 @@ var SpacesManager = /*#__PURE__*/function () {
3001
3239
  }
3002
3240
  return get;
3003
3241
  }()
3004
- /**
3005
- * Get collection of space roles.
3242
+ /**
3243
+ * Get collection of space roles.
3006
3244
  */
3007
3245
  )
3008
3246
  }, {
@@ -3024,8 +3262,8 @@ var SpacesManager = /*#__PURE__*/function () {
3024
3262
  }
3025
3263
  return getRoles;
3026
3264
  }()
3027
- /**
3028
- * Get collection of the all available rooms inside given space.
3265
+ /**
3266
+ * Get collection of the all available rooms inside given space.
3029
3267
  */
3030
3268
  )
3031
3269
  }, {
@@ -3073,8 +3311,8 @@ var SpacesManager = /*#__PURE__*/function () {
3073
3311
  }
3074
3312
  return getRooms;
3075
3313
  }()
3076
- /**
3077
- * Get collection of space members.
3314
+ /**
3315
+ * Get collection of space members.
3078
3316
  */
3079
3317
  )
3080
3318
  }, {
@@ -3122,8 +3360,8 @@ var SpacesManager = /*#__PURE__*/function () {
3122
3360
  }
3123
3361
  return getMembers;
3124
3362
  }()
3125
- /**
3126
- * Get a space member representing the current user.
3363
+ /**
3364
+ * Get a space member representing the current user.
3127
3365
  */
3128
3366
  )
3129
3367
  }, {
@@ -3315,9 +3553,9 @@ var SpacesManager = /*#__PURE__*/function () {
3315
3553
  case 0:
3316
3554
  spaceId = this.roomIdToSpaceId.get(ev.summary.id);
3317
3555
  summariesPromise = this.roomsPromises.get(spaceId);
3318
- /**
3319
- * Update summary only if the list was already loaded.
3320
- * RoomSummaryUpdated event has a partial summary, so we need to update the existing summary by merging it.
3556
+ /**
3557
+ * Update summary only if the list was already loaded.
3558
+ * RoomSummaryUpdated event has a partial summary, so we need to update the existing summary by merging it.
3321
3559
  */
3322
3560
  if (!(spaceId && summariesPromise)) {
3323
3561
  _context9.n = 2;
@@ -4493,28 +4731,28 @@ var ChatStateTracker = /*#__PURE__*/function () {
4493
4731
  var _this = this;
4494
4732
  ChatStateTracker_classCallCheck(this, ChatStateTracker);
4495
4733
  ChatStateTracker_defineProperty(this, "client", void 0);
4496
- /**
4497
- * State of your permissions.
4734
+ /**
4735
+ * State of your permissions.
4498
4736
  */
4499
4737
  ChatStateTracker_defineProperty(this, "permissions", void 0);
4500
- /**
4501
- * State of the rooms you are in.
4738
+ /**
4739
+ * State of the rooms you are in.
4502
4740
  */
4503
4741
  ChatStateTracker_defineProperty(this, "rooms", void 0);
4504
- /**
4505
- * State of the spaces you are in.
4742
+ /**
4743
+ * State of the spaces you are in.
4506
4744
  */
4507
4745
  ChatStateTracker_defineProperty(this, "spaces", void 0);
4508
- /**
4509
- * State of the emoticons (global and space-related).
4746
+ /**
4747
+ * State of the emoticons (global and space-related).
4510
4748
  */
4511
4749
  ChatStateTracker_defineProperty(this, "emoticons", void 0);
4512
- /**
4513
- * Users related state.
4750
+ /**
4751
+ * Users related state.
4514
4752
  */
4515
4753
  ChatStateTracker_defineProperty(this, "users", void 0);
4516
- /**
4517
- * State of relationships with other users.
4754
+ /**
4755
+ * State of relationships with other users.
4518
4756
  */
4519
4757
  ChatStateTracker_defineProperty(this, "relationships", void 0);
4520
4758
  ChatStateTracker_defineProperty(this, "_me", null);