@amityco/ts-sdk 7.19.1-1be2c53e.0 → 7.19.1-2ffeaf5f.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"prepareChannelPayload.d.ts","sourceRoot":"","sources":["../../../src/channelRepository/utils/prepareChannelPayload.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,4BAA4B,UAA6C,CAAC;AACvF,eAAO,MAAM,oBAAoB,aAAc,KAAK,MAAM,UAAU,EAAE,MAAM,CAAC,YAChC,CAAC;AAE9C,wBAAgB,cAAc,CAC5B,OAAO,EAAE,KAAK,CAAC,UAAU,EACzB,OAAO,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAsC,GACjF,KAAK,CAAC,qBAAqB,CAmB7B;AAED,eAAO,MAAM,qBAAqB,eACpB,MAAM,cAAc,YACvB;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAE,SAO/C,CAAC;AAkDF,eAAO,MAAM,qBAAqB,eACpB,MAAM,cAAc,YACvB;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAE,KAC7C,QAAQ,MAAM,uBAAuB,CA2DvC,CAAC"}
1
+ {"version":3,"file":"prepareChannelPayload.d.ts","sourceRoot":"","sources":["../../../src/channelRepository/utils/prepareChannelPayload.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,4BAA4B,UAA6C,CAAC;AACvF,eAAO,MAAM,oBAAoB,aAAc,KAAK,MAAM,UAAU,EAAE,MAAM,CAAC,YAChC,CAAC;AAE9C,wBAAgB,cAAc,CAC5B,OAAO,EAAE,KAAK,CAAC,UAAU,EACzB,OAAO,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAsC,GACjF,KAAK,CAAC,qBAAqB,CAmB7B;AAED,eAAO,MAAM,qBAAqB,eACpB,MAAM,cAAc,YACvB;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAE,SAO/C,CAAC;AAyEF,eAAO,MAAM,qBAAqB,eACpB,MAAM,cAAc,YACvB;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAE,KAC7C,QAAQ,MAAM,uBAAuB,CA2DvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"readReceiptSyncEngine.d.ts","sourceRoot":"","sources":["../../../../src/client/services/ReadReceiptSync/readReceiptSyncEngine.ts"],"names":[],"mappings":"AAKA,qBAAa,4BAA4B;IACvC,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,cAAc,CAAO;IAE7B,OAAO,CAAC,QAAQ,CAAkC;IAElD,OAAO,CAAC,KAAK,CAA2B;IAGxC,OAAO,CAAC,qBAAqB,CAAK;;IASlC,oBAAoB;IAQpB,gBAAgB,IAAI,IAAI;IASxB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,eAAe;YAaT,WAAW;IAuCzB,OAAO,CAAC,8BAA8B;IAOtC,OAAO,CAAC,6BAA6B;IAerC,oBAAoB,IAAI,IAAI;IAI5B,kBAAkB,IAAI,IAAI;IAK1B,cAAc,IAAI,IAAI;IAKtB,gBAAgB,IAAI,IAAI;IAKxB,eAAe,IAAI,IAAI;IAKvB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAqBlD,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;CASnB;;;;AAID,wBAME"}
1
+ {"version":3,"file":"readReceiptSyncEngine.d.ts","sourceRoot":"","sources":["../../../../src/client/services/ReadReceiptSync/readReceiptSyncEngine.ts"],"names":[],"mappings":"AAKA,qBAAa,4BAA4B;IACvC,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,cAAc,CAAO;IAE7B,OAAO,CAAC,QAAQ,CAAkC;IAElD,OAAO,CAAC,KAAK,CAA2B;IAGxC,OAAO,CAAC,qBAAqB,CAAK;;IASlC,oBAAoB;IAQpB,gBAAgB,IAAI,IAAI;IASxB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,eAAe;YAaT,WAAW;IAuCzB,OAAO,CAAC,8BAA8B;IAOtC,OAAO,CAAC,6BAA6B;IAerC,oBAAoB,IAAI,IAAI;IAI5B,kBAAkB,IAAI,IAAI;IAK1B,cAAc,IAAI,IAAI;IAKtB,gBAAgB,IAAI,IAAI;IAKxB,eAAe,IAAI,IAAI;IAKvB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAoBlD,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;CASnB;;;;AAID,wBAME"}
package/dist/index.cjs.js CHANGED
@@ -5129,8 +5129,12 @@ const getChannelMessagePreviewWithUser = (channel) => {
5129
5129
  return Object.assign(Object.assign({}, channel), { messagePreview: messagePreviewWithUser });
5130
5130
  };
5131
5131
 
5132
+ const convertDateStringToTimestamp = (dateString) => {
5133
+ return new Date(dateString).getTime();
5134
+ };
5135
+
5132
5136
  const updateChannelMessagePreviewCache = (rawPayload) => {
5133
- var _a, _b;
5137
+ var _a;
5134
5138
  const withMessageFeedInfo = (messagePreview) => {
5135
5139
  var _a;
5136
5140
  const messageFeedInfo = (_a = rawPayload.messageFeedsInfo) === null || _a === void 0 ? void 0 : _a.find(messageFeed => {
@@ -5152,10 +5156,26 @@ const updateChannelMessagePreviewCache = (rawPayload) => {
5152
5156
  subChannelUpdatedAt: messageFeedInfo === null || messageFeedInfo === void 0 ? void 0 : messageFeedInfo.updatedAt,
5153
5157
  };
5154
5158
  };
5155
- const newData = {
5156
- messagePreviewChannel: (_b = (_a = rawPayload.messagePreviews) === null || _a === void 0 ? void 0 : _a.map(messagePreview => withMessageFeedInfo(messagePreview))) !== null && _b !== void 0 ? _b : [],
5157
- };
5158
- ingestInCache(newData);
5159
+ // Skip server previews older than what's cached — the cache may carry a newer
5160
+ // preview written by handleMessageCreated from an MQTT message that the server
5161
+ // payload hasn't surfaced yet. Mirrors isLastestMessageOnChannel.
5162
+ const newPreviews = ((_a = rawPayload.messagePreviews) !== null && _a !== void 0 ? _a : [])
5163
+ .map(withMessageFeedInfo)
5164
+ .filter(preview => {
5165
+ var _a;
5166
+ const cached = (_a = pullFromCache([
5167
+ 'messagePreviewChannel',
5168
+ 'get',
5169
+ preview.channelId,
5170
+ ])) === null || _a === void 0 ? void 0 : _a.data;
5171
+ if (!cached)
5172
+ return true;
5173
+ return (convertDateStringToTimestamp(cached.createdAt) <=
5174
+ convertDateStringToTimestamp(preview.createdAt));
5175
+ });
5176
+ if (newPreviews.length === 0)
5177
+ return;
5178
+ ingestInCache({ messagePreviewChannel: newPreviews });
5159
5179
  };
5160
5180
 
5161
5181
  const getSubChannelMessagePreview = (subChannelId) => {
@@ -5783,10 +5803,6 @@ getSubChannel$1.locally = (subChannelId) => {
5783
5803
  };
5784
5804
  };
5785
5805
 
5786
- const convertDateStringToTimestamp = (dateString) => {
5787
- return new Date(dateString).getTime();
5788
- };
5789
-
5790
5806
  const getMessagePreviewSetting$1 = async () => {
5791
5807
  const client = getActiveClient();
5792
5808
  return client.getMessagePreviewSetting(false);
@@ -5994,24 +6010,41 @@ const preUpdateChannelCache = (rawPayload, options = { isMessagePreviewUpdated:
5994
6010
  });
5995
6011
  };
5996
6012
  const updateChannelUnread = ({ currentUserId, channels, channelUsers, }) => {
6013
+ var _a, _b;
5997
6014
  const channelsUnread = [];
5998
6015
  for (let i = 0; i < channels.length; i += 1) {
5999
6016
  if (isUnreadCountSupport(channels[i])) {
6000
6017
  const cacheKey = ['channelUnread', 'get', channels[i].channelId];
6001
6018
  const channelUser = channelUsers.find(channelUser => channelUser.channelId === channels[i].channelId && channelUser.userId === currentUserId);
6002
- let unreadCount = 0;
6019
+ // readToSegment, lastMentionedSegment and lastSegment are monotonically non-decreasing;
6020
+ // prefer cached values when ahead of the server so a refetch returning stale data cannot
6021
+ const cached = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
6022
+ const lastSegment = Math.max((_b = cached === null || cached === void 0 ? void 0 : cached.lastSegment) !== null && _b !== void 0 ? _b : 0, channels[i].messageCount);
6003
6023
  let readToSegment = null;
6004
6024
  let lastMentionedSegment = null;
6025
+ let unreadCount = 0;
6005
6026
  let isMentioned = false;
6006
6027
  if (channelUser) {
6007
- readToSegment = channelUser.readToSegment;
6008
- lastMentionedSegment = channelUser.lastMentionedSegment;
6009
- unreadCount = Math.max(channels[i].messageCount - readToSegment, 0);
6010
- isMentioned = lastMentionedSegment > readToSegment;
6028
+ const serverRead = channelUser.readToSegment;
6029
+ const serverMention = channelUser.lastMentionedSegment;
6030
+ readToSegment =
6031
+ typeof (cached === null || cached === void 0 ? void 0 : cached.readToSegment) === 'number' &&
6032
+ (typeof serverRead !== 'number' || cached.readToSegment > serverRead)
6033
+ ? cached.readToSegment
6034
+ : serverRead !== null && serverRead !== void 0 ? serverRead : null;
6035
+ lastMentionedSegment =
6036
+ typeof (cached === null || cached === void 0 ? void 0 : cached.lastMentionedSegment) === 'number' &&
6037
+ (typeof serverMention !== 'number' || cached.lastMentionedSegment > serverMention)
6038
+ ? cached.lastMentionedSegment
6039
+ : serverMention !== null && serverMention !== void 0 ? serverMention : null;
6040
+ const readForCalc = readToSegment !== null && readToSegment !== void 0 ? readToSegment : 0;
6041
+ unreadCount = Math.max(lastSegment - readForCalc, 0);
6042
+ isMentioned =
6043
+ typeof lastMentionedSegment === 'number' && readForCalc < lastMentionedSegment;
6011
6044
  }
6012
6045
  const cacheChannelUnread = {
6013
6046
  channelId: channels[i].channelId,
6014
- lastSegment: channels[i].messageCount,
6047
+ lastSegment,
6015
6048
  readToSegment,
6016
6049
  lastMentionedSegment,
6017
6050
  unreadCount,
@@ -6021,6 +6054,8 @@ const updateChannelUnread = ({ currentUserId, channels, channelUsers, }) => {
6021
6054
  pushToCache(cacheKey, cacheChannelUnread);
6022
6055
  channelsUnread.push(cacheChannelUnread);
6023
6056
  }
6057
+ }
6058
+ if (channelsUnread.length > 0) {
6024
6059
  fireEvent('local.channelUnread.updated', channelsUnread);
6025
6060
  }
6026
6061
  };
@@ -8247,9 +8282,8 @@ class MessageReadReceiptSyncEngine {
8247
8282
  // Step 1: Optimistic update of channelUnread.readToSegment to message.segment and update unreadCount value
8248
8283
  const cacheKey = ['channelUnread', 'get', channelId];
8249
8284
  const channelUnread = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
8250
- if (typeof (channelUnread === null || channelUnread === void 0 ? void 0 : channelUnread.readToSegment) === 'number' &&
8251
- channelUnread &&
8252
- segment > channelUnread.readToSegment) {
8285
+ if (channelUnread &&
8286
+ (typeof channelUnread.readToSegment !== 'number' || segment > channelUnread.readToSegment)) {
8253
8287
  channelUnread.readToSegment = segment;
8254
8288
  channelUnread.unreadCount = Math.max(channelUnread.lastSegment - segment, 0);
8255
8289
  pushToCache(cacheKey, channelUnread);
@@ -10007,16 +10041,13 @@ const onMessageCreatedMqtt = (callback) => {
10007
10041
  }
10008
10042
  if (client.useLegacyUnreadCount) {
10009
10043
  rawPayload.messages.forEach(message => {
10010
- var _a, _b;
10044
+ var _a, _b, _c;
10011
10045
  const channelUnread = (_a = pullFromCache([
10012
10046
  'channelUnread',
10013
10047
  'get',
10014
10048
  message.channelId,
10015
10049
  ])) === null || _a === void 0 ? void 0 : _a.data;
10016
- if (!channelUnread ||
10017
- channelUnread.lastSegment >= message.segment ||
10018
- typeof channelUnread.readToSegment !== 'number' ||
10019
- typeof channelUnread.lastMentionedSegment !== 'number')
10050
+ if (!channelUnread || channelUnread.lastSegment >= message.segment)
10020
10051
  return;
10021
10052
  const lastSegment = message.segment;
10022
10053
  const isMentionedInMessage = (_b = message.mentionedUsers) === null || _b === void 0 ? void 0 : _b.some(mention => {
@@ -10028,7 +10059,8 @@ const onMessageCreatedMqtt = (callback) => {
10028
10059
  const lastMentionedSegment = isMentionedInMessage
10029
10060
  ? message.segment
10030
10061
  : channelUnread.lastMentionedSegment;
10031
- const updatedChannelUnread = Object.assign(Object.assign({}, channelUnread), { lastSegment, unreadCount: Math.max(lastSegment - channelUnread.readToSegment, 0), lastMentionedSegment, isMentioned: !(channelUnread.readToSegment >= lastMentionedSegment) });
10062
+ const readToSegment = (_c = channelUnread.readToSegment) !== null && _c !== void 0 ? _c : 0;
10063
+ const updatedChannelUnread = Object.assign(Object.assign({}, channelUnread), { lastSegment, unreadCount: Math.max(lastSegment - readToSegment, 0), lastMentionedSegment, isMentioned: typeof lastMentionedSegment === 'number' && readToSegment < lastMentionedSegment });
10032
10064
  pushToCache(['channelUnread', 'get', message.channelId], updatedChannelUnread);
10033
10065
  fireEvent('local.channelUnread.updated', [updatedChannelUnread]);
10034
10066
  });
package/dist/index.esm.js CHANGED
@@ -21221,8 +21221,12 @@ const getChannelMessagePreviewWithUser = (channel) => {
21221
21221
  return Object.assign(Object.assign({}, channel), { messagePreview: messagePreviewWithUser });
21222
21222
  };
21223
21223
 
21224
+ const convertDateStringToTimestamp = (dateString) => {
21225
+ return new Date(dateString).getTime();
21226
+ };
21227
+
21224
21228
  const updateChannelMessagePreviewCache = (rawPayload) => {
21225
- var _a, _b;
21229
+ var _a;
21226
21230
  const withMessageFeedInfo = (messagePreview) => {
21227
21231
  var _a;
21228
21232
  const messageFeedInfo = (_a = rawPayload.messageFeedsInfo) === null || _a === void 0 ? void 0 : _a.find(messageFeed => {
@@ -21244,10 +21248,26 @@ const updateChannelMessagePreviewCache = (rawPayload) => {
21244
21248
  subChannelUpdatedAt: messageFeedInfo === null || messageFeedInfo === void 0 ? void 0 : messageFeedInfo.updatedAt,
21245
21249
  };
21246
21250
  };
21247
- const newData = {
21248
- messagePreviewChannel: (_b = (_a = rawPayload.messagePreviews) === null || _a === void 0 ? void 0 : _a.map(messagePreview => withMessageFeedInfo(messagePreview))) !== null && _b !== void 0 ? _b : [],
21249
- };
21250
- ingestInCache(newData);
21251
+ // Skip server previews older than what's cached — the cache may carry a newer
21252
+ // preview written by handleMessageCreated from an MQTT message that the server
21253
+ // payload hasn't surfaced yet. Mirrors isLastestMessageOnChannel.
21254
+ const newPreviews = ((_a = rawPayload.messagePreviews) !== null && _a !== void 0 ? _a : [])
21255
+ .map(withMessageFeedInfo)
21256
+ .filter(preview => {
21257
+ var _a;
21258
+ const cached = (_a = pullFromCache([
21259
+ 'messagePreviewChannel',
21260
+ 'get',
21261
+ preview.channelId,
21262
+ ])) === null || _a === void 0 ? void 0 : _a.data;
21263
+ if (!cached)
21264
+ return true;
21265
+ return (convertDateStringToTimestamp(cached.createdAt) <=
21266
+ convertDateStringToTimestamp(preview.createdAt));
21267
+ });
21268
+ if (newPreviews.length === 0)
21269
+ return;
21270
+ ingestInCache({ messagePreviewChannel: newPreviews });
21251
21271
  };
21252
21272
 
21253
21273
  const getSubChannelMessagePreview = (subChannelId) => {
@@ -21875,10 +21895,6 @@ getSubChannel$1.locally = (subChannelId) => {
21875
21895
  };
21876
21896
  };
21877
21897
 
21878
- const convertDateStringToTimestamp = (dateString) => {
21879
- return new Date(dateString).getTime();
21880
- };
21881
-
21882
21898
  const getMessagePreviewSetting$1 = async () => {
21883
21899
  const client = getActiveClient();
21884
21900
  return client.getMessagePreviewSetting(false);
@@ -22086,24 +22102,41 @@ const preUpdateChannelCache = (rawPayload, options = { isMessagePreviewUpdated:
22086
22102
  });
22087
22103
  };
22088
22104
  const updateChannelUnread = ({ currentUserId, channels, channelUsers, }) => {
22105
+ var _a, _b;
22089
22106
  const channelsUnread = [];
22090
22107
  for (let i = 0; i < channels.length; i += 1) {
22091
22108
  if (isUnreadCountSupport(channels[i])) {
22092
22109
  const cacheKey = ['channelUnread', 'get', channels[i].channelId];
22093
22110
  const channelUser = channelUsers.find(channelUser => channelUser.channelId === channels[i].channelId && channelUser.userId === currentUserId);
22094
- let unreadCount = 0;
22111
+ // readToSegment, lastMentionedSegment and lastSegment are monotonically non-decreasing;
22112
+ // prefer cached values when ahead of the server so a refetch returning stale data cannot
22113
+ const cached = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
22114
+ const lastSegment = Math.max((_b = cached === null || cached === void 0 ? void 0 : cached.lastSegment) !== null && _b !== void 0 ? _b : 0, channels[i].messageCount);
22095
22115
  let readToSegment = null;
22096
22116
  let lastMentionedSegment = null;
22117
+ let unreadCount = 0;
22097
22118
  let isMentioned = false;
22098
22119
  if (channelUser) {
22099
- readToSegment = channelUser.readToSegment;
22100
- lastMentionedSegment = channelUser.lastMentionedSegment;
22101
- unreadCount = Math.max(channels[i].messageCount - readToSegment, 0);
22102
- isMentioned = lastMentionedSegment > readToSegment;
22120
+ const serverRead = channelUser.readToSegment;
22121
+ const serverMention = channelUser.lastMentionedSegment;
22122
+ readToSegment =
22123
+ typeof (cached === null || cached === void 0 ? void 0 : cached.readToSegment) === 'number' &&
22124
+ (typeof serverRead !== 'number' || cached.readToSegment > serverRead)
22125
+ ? cached.readToSegment
22126
+ : serverRead !== null && serverRead !== void 0 ? serverRead : null;
22127
+ lastMentionedSegment =
22128
+ typeof (cached === null || cached === void 0 ? void 0 : cached.lastMentionedSegment) === 'number' &&
22129
+ (typeof serverMention !== 'number' || cached.lastMentionedSegment > serverMention)
22130
+ ? cached.lastMentionedSegment
22131
+ : serverMention !== null && serverMention !== void 0 ? serverMention : null;
22132
+ const readForCalc = readToSegment !== null && readToSegment !== void 0 ? readToSegment : 0;
22133
+ unreadCount = Math.max(lastSegment - readForCalc, 0);
22134
+ isMentioned =
22135
+ typeof lastMentionedSegment === 'number' && readForCalc < lastMentionedSegment;
22103
22136
  }
22104
22137
  const cacheChannelUnread = {
22105
22138
  channelId: channels[i].channelId,
22106
- lastSegment: channels[i].messageCount,
22139
+ lastSegment,
22107
22140
  readToSegment,
22108
22141
  lastMentionedSegment,
22109
22142
  unreadCount,
@@ -22113,6 +22146,8 @@ const updateChannelUnread = ({ currentUserId, channels, channelUsers, }) => {
22113
22146
  pushToCache(cacheKey, cacheChannelUnread);
22114
22147
  channelsUnread.push(cacheChannelUnread);
22115
22148
  }
22149
+ }
22150
+ if (channelsUnread.length > 0) {
22116
22151
  fireEvent('local.channelUnread.updated', channelsUnread);
22117
22152
  }
22118
22153
  };
@@ -24339,9 +24374,8 @@ class MessageReadReceiptSyncEngine {
24339
24374
  // Step 1: Optimistic update of channelUnread.readToSegment to message.segment and update unreadCount value
24340
24375
  const cacheKey = ['channelUnread', 'get', channelId];
24341
24376
  const channelUnread = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
24342
- if (typeof (channelUnread === null || channelUnread === void 0 ? void 0 : channelUnread.readToSegment) === 'number' &&
24343
- channelUnread &&
24344
- segment > channelUnread.readToSegment) {
24377
+ if (channelUnread &&
24378
+ (typeof channelUnread.readToSegment !== 'number' || segment > channelUnread.readToSegment)) {
24345
24379
  channelUnread.readToSegment = segment;
24346
24380
  channelUnread.unreadCount = Math.max(channelUnread.lastSegment - segment, 0);
24347
24381
  pushToCache(cacheKey, channelUnread);
@@ -26099,16 +26133,13 @@ const onMessageCreatedMqtt = (callback) => {
26099
26133
  }
26100
26134
  if (client.useLegacyUnreadCount) {
26101
26135
  rawPayload.messages.forEach(message => {
26102
- var _a, _b;
26136
+ var _a, _b, _c;
26103
26137
  const channelUnread = (_a = pullFromCache([
26104
26138
  'channelUnread',
26105
26139
  'get',
26106
26140
  message.channelId,
26107
26141
  ])) === null || _a === void 0 ? void 0 : _a.data;
26108
- if (!channelUnread ||
26109
- channelUnread.lastSegment >= message.segment ||
26110
- typeof channelUnread.readToSegment !== 'number' ||
26111
- typeof channelUnread.lastMentionedSegment !== 'number')
26142
+ if (!channelUnread || channelUnread.lastSegment >= message.segment)
26112
26143
  return;
26113
26144
  const lastSegment = message.segment;
26114
26145
  const isMentionedInMessage = (_b = message.mentionedUsers) === null || _b === void 0 ? void 0 : _b.some(mention => {
@@ -26120,7 +26151,8 @@ const onMessageCreatedMqtt = (callback) => {
26120
26151
  const lastMentionedSegment = isMentionedInMessage
26121
26152
  ? message.segment
26122
26153
  : channelUnread.lastMentionedSegment;
26123
- const updatedChannelUnread = Object.assign(Object.assign({}, channelUnread), { lastSegment, unreadCount: Math.max(lastSegment - channelUnread.readToSegment, 0), lastMentionedSegment, isMentioned: !(channelUnread.readToSegment >= lastMentionedSegment) });
26154
+ const readToSegment = (_c = channelUnread.readToSegment) !== null && _c !== void 0 ? _c : 0;
26155
+ const updatedChannelUnread = Object.assign(Object.assign({}, channelUnread), { lastSegment, unreadCount: Math.max(lastSegment - readToSegment, 0), lastMentionedSegment, isMentioned: typeof lastMentionedSegment === 'number' && readToSegment < lastMentionedSegment });
26124
26156
  pushToCache(['channelUnread', 'get', message.channelId], updatedChannelUnread);
26125
26157
  fireEvent('local.channelUnread.updated', [updatedChannelUnread]);
26126
26158
  });