@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.
- package/dist/channelRepository/utils/prepareChannelPayload.d.ts.map +1 -1
- package/dist/client/services/ReadReceiptSync/readReceiptSyncEngine.d.ts.map +1 -1
- package/dist/index.cjs.js +56 -24
- package/dist/index.esm.js +56 -24
- package/dist/index.umd.js +1 -1
- package/dist/messagePreview/utils/updateChannelMessagePreviewCache.d.ts.map +1 -1
- package/dist/messageRepository/events/onMessageCreated.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -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;
|
|
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;
|
|
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
|
|
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
|
-
|
|
5156
|
-
|
|
5157
|
-
|
|
5158
|
-
|
|
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
|
-
|
|
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
|
-
|
|
6008
|
-
|
|
6009
|
-
|
|
6010
|
-
|
|
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
|
|
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 (
|
|
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
|
|
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
|
|
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
|
-
|
|
21248
|
-
|
|
21249
|
-
|
|
21250
|
-
|
|
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
|
-
|
|
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
|
-
|
|
22100
|
-
|
|
22101
|
-
|
|
22102
|
-
|
|
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
|
|
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 (
|
|
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
|
|
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
|
});
|