@amityco/ts-sdk 7.1.1-c8d4edca.0 → 7.1.1-ce25d503.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.
Files changed (34) hide show
  1. package/dist/@types/domains/channel.d.ts +1 -0
  2. package/dist/@types/domains/channel.d.ts.map +1 -1
  3. package/dist/channelRepository/events/onChannelDeleted.d.ts.map +1 -1
  4. package/dist/channelRepository/events/onChannelLeft.d.ts.map +1 -1
  5. package/dist/channelRepository/events/onChannelUnreadUpdatedLocal.d.ts +2 -2
  6. package/dist/channelRepository/internalApi/getTotalChannelsUnread.d.ts +11 -0
  7. package/dist/channelRepository/internalApi/getTotalChannelsUnread.d.ts.map +1 -0
  8. package/dist/channelRepository/observers/getTotalChannelsUnread.d.ts +20 -0
  9. package/dist/channelRepository/observers/getTotalChannelsUnread.d.ts.map +1 -0
  10. package/dist/channelRepository/observers/index.d.ts +1 -0
  11. package/dist/channelRepository/observers/index.d.ts.map +1 -1
  12. package/dist/client/utils/ReadReceiptSync/readReceiptSyncEngine.d.ts.map +1 -1
  13. package/dist/index.cjs.js +168 -14
  14. package/dist/index.esm.js +168 -14
  15. package/dist/index.umd.js +4 -4
  16. package/dist/marker/events/onChannelUnreadInfoUpdatedLocal.d.ts +2 -2
  17. package/dist/messageRepository/events/onMessageCreated.d.ts.map +1 -1
  18. package/dist/messageRepository/observers/getMessage.d.ts.map +1 -1
  19. package/package.json +1 -1
  20. package/src/@types/domains/channel.ts +2 -0
  21. package/src/channelRepository/events/onChannelDeleted.ts +17 -4
  22. package/src/channelRepository/events/onChannelLeft.ts +11 -3
  23. package/src/channelRepository/events/onChannelUnreadUpdatedLocal.ts +2 -2
  24. package/src/channelRepository/internalApi/getTotalChannelsUnread.ts +38 -0
  25. package/src/channelRepository/observers/getTotalChannelsUnread.ts +129 -0
  26. package/src/channelRepository/observers/index.ts +1 -0
  27. package/src/channelRepository/utils/prepareChannelPayload.ts +1 -1
  28. package/src/client/utils/ReadReceiptSync/readReceiptSyncEngine.ts +0 -3
  29. package/src/marker/events/onChannelUnreadInfoUpdatedLocal.ts +2 -2
  30. package/src/messageRepository/events/onMessageCreated.ts +38 -1
  31. package/src/messageRepository/observers/getMessage.ts +0 -1
  32. package/dist/marker/events/onChannelUnreadUpdatedLocal.d.ts +0 -12
  33. package/dist/marker/events/onChannelUnreadUpdatedLocal.d.ts.map +0 -1
  34. package/src/marker/events/onChannelUnreadUpdatedLocal.ts +0 -29
@@ -53,6 +53,7 @@ declare global {
53
53
  type InternalChannel<T extends ChannelType = any> = Omit<StaticInternalChannel<T>, 'messageCount'> & {
54
54
  isMentioned: boolean;
55
55
  subChannelsUnreadCount: number;
56
+ unreadCount: number;
56
57
  };
57
58
  type Channel<T extends ChannelType = any> = InternalChannel<T> & {
58
59
  messagePreview?: Amity.MessagePreview | null;
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../src/@types/domains/channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../src/@types/domains/channel.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"onChannelDeleted.d.ts","sourceRoot":"","sources":["../../../src/channelRepository/events/onChannelDeleted.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,gBAAgB,aAAc,MAAM,QAAQ,CAAC,MAAM,qBAAqB,CAAC,eAuBrF,CAAC"}
1
+ {"version":3,"file":"onChannelDeleted.d.ts","sourceRoot":"","sources":["../../../src/channelRepository/events/onChannelDeleted.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,gBAAgB,aAAc,MAAM,QAAQ,CAAC,MAAM,qBAAqB,CAAC,eAmCrF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"onChannelLeft.d.ts","sourceRoot":"","sources":["../../../src/channelRepository/events/onChannelLeft.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,aAAa,uBACJ,MAAM,qBAAqB,UAAU,MAAM,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,eAkC9F,CAAC"}
1
+ {"version":3,"file":"onChannelLeft.d.ts","sourceRoot":"","sources":["../../../src/channelRepository/events/onChannelLeft.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,aAAa,uBACJ,MAAM,qBAAqB,UAAU,MAAM,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,eAyC9F,CAAC"}
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * Internal used only
3
3
  *
4
- * Fired when an {@link Amity.userMessageFeedMarkers} has been resolved by Object Rsesolver
4
+ * Fired when an {@link Amity.ChannelUnread} has been updated.
5
5
  *
6
6
  * @param callback The function to call when the event was fired
7
7
  * @returns an {@link Amity.Unsubscriber} function to stop listening
8
8
  *
9
- * @category MessageMarker Events
9
+ * @category Channel Events
10
10
  */
11
11
  export declare const onChannelUnreadUpdatedLocal: (callback: Amity.Listener<Amity.Events['local.channelUnread.updated']>) => Amity.Unsubscriber;
12
12
  //# sourceMappingURL=onChannelUnreadUpdatedLocal.d.ts.map
@@ -0,0 +1,11 @@
1
+ /**
2
+ *
3
+ * Calculate user unread from {@link Amity.ChannelUnread} objects
4
+ *
5
+ * @returns the {@link Amity.UserUnread} objects
6
+ *
7
+ * @category Channel API
8
+ * @async
9
+ */
10
+ export declare const getTotalChannelsUnread: () => Amity.Cached<Amity.UserUnread>;
11
+ //# sourceMappingURL=getTotalChannelsUnread.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTotalChannelsUnread.d.ts","sourceRoot":"","sources":["../../../src/channelRepository/internalApi/getTotalChannelsUnread.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,eAAO,MAAM,sBAAsB,QAAO,MAAM,MAAM,CAAC,MAAM,UAAU,CAwBtE,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * ```js
3
+ * import { ChannelRepository } from '@amityco/ts-sdk';
4
+ *
5
+ * let totalChannelsUnread;
6
+ *
7
+ * const unsubscribe = ChannelRepository.getTotalChannelsUnread(response => {
8
+ * unread = response.data;
9
+ * });
10
+ * ```
11
+ *
12
+ * Observe all mutation on a given {@link Amity.UserUnread}
13
+ *
14
+ * @returns An {@link Amity.UserUnread} function to run when willing to stop observing the message
15
+ *
16
+ * @category User Unread Live Object
17
+ *
18
+ */
19
+ export declare const getTotalChannelsUnread: (callback: Amity.LiveObjectCallback<Amity.UserUnread | undefined>) => Amity.Unsubscriber;
20
+ //# sourceMappingURL=getTotalChannelsUnread.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTotalChannelsUnread.d.ts","sourceRoot":"","sources":["../../../src/channelRepository/observers/getTotalChannelsUnread.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;GAiBG;AAEH,eAAO,MAAM,sBAAsB,aACvB,MAAM,kBAAkB,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC,KAC/D,MAAM,YA2FR,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from './getChannel';
2
2
  export * from './getChannels';
3
+ export * from './getTotalChannelsUnread';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channelRepository/observers/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channelRepository/observers/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"readReceiptSyncEngine.d.ts","sourceRoot":"","sources":["../../../../src/client/utils/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;IAUxB,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;IAmBlD,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/utils/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;IAiBlD,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;CASnB;;;;AAID,wBAME"}
package/dist/index.cjs.js CHANGED
@@ -5627,7 +5627,6 @@ class MessageReadReceiptSyncEngine {
5627
5627
  if (this.jobQueue.length === 0 || this.isActive === false)
5628
5628
  return;
5629
5629
  const readReceipts = this.getReadReceipts();
5630
- console.log('[New 🌟 readReceipts] Sync read receipts', readReceipts);
5631
5630
  if (readReceipts) {
5632
5631
  this.markReadApi(readReceipts);
5633
5632
  }
@@ -5729,7 +5728,6 @@ class MessageReadReceiptSyncEngine {
5729
5728
  // Step 1: Optimistic update of channelUnread.readToSegment to message.segment and update unreadCount value
5730
5729
  const cacheKey = ['channelUnread', 'get', channelId];
5731
5730
  const channelUnread = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
5732
- console.log('[New 🌟] Mark read => channel unread', channelUnread);
5733
5731
  if (channelUnread && segment > channelUnread.readToSegment) {
5734
5732
  channelUnread.readToSegment = segment;
5735
5733
  channelUnread.unreadCount = Math.max(channelUnread.lastSegment - segment, 0);
@@ -7072,7 +7070,7 @@ const updateChannelUnread = ({ currentUserId, channels, channelUsers, }) => {
7072
7070
  lastSegment: channels[i].messageCount,
7073
7071
  readToSegment,
7074
7072
  lastMentionedSegment,
7075
- unreadCount: channels[i].messageCount - readToSegment,
7073
+ unreadCount: Math.max(channels[i].messageCount - readToSegment, 0),
7076
7074
  isMentioned: lastMentionedSegment > readToSegment,
7077
7075
  isDeleted: channels[i].isDeleted,
7078
7076
  });
@@ -7919,12 +7917,21 @@ const onChannelDeleted = (callback) => {
7919
7917
  const client = getActiveClient();
7920
7918
  const filter = async (payload) => {
7921
7919
  const data = await prepareChannelPayload(payload);
7922
- if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
7923
- data.channels.forEach(channel => {
7920
+ const isConsistentMode = client.getMarkerSyncConsistentMode() && client.isUnreadCountEnabled;
7921
+ const isLegacyUnreadCount = client.useLegacyUnreadCount;
7922
+ data.channels.forEach(channel => {
7923
+ if (isConsistentMode) {
7924
7924
  addFlagIsDeletedSubChannelUnreadByChannelId(channel.channelId);
7925
7925
  deleteChannelUnreadByChannelId(channel.channelId);
7926
- });
7927
- }
7926
+ }
7927
+ else if (isLegacyUnreadCount) {
7928
+ const cacheKey = ['channelUnread', 'get', channel.channelId];
7929
+ const cache = pullFromCache(cacheKey);
7930
+ if (cache) {
7931
+ pushToCache(cacheKey, Object.assign(Object.assign({}, cache), { isDeleted: true }));
7932
+ }
7933
+ }
7934
+ });
7928
7935
  ingestInCache(data);
7929
7936
  callbacks$b.forEach(cb => cb(data.channels[0]));
7930
7937
  };
@@ -8623,10 +8630,17 @@ const onChannelLeft = (callback) => {
8623
8630
  const preparedPayload = await prepareChannelPayload(payload, {
8624
8631
  isMessagePreviewUpdated: isLeftByMe,
8625
8632
  });
8626
- if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode() && isLeftByMe) {
8633
+ const isConsistentMode = client.getMarkerSyncConsistentMode() && client.isUnreadCountEnabled;
8634
+ const isLegacyUnreadCount = client.useLegacyUnreadCount;
8635
+ if (isLeftByMe) {
8627
8636
  preparedPayload.channels.forEach(channel => {
8628
- addFlagIsDeletedSubChannelUnreadByChannelId(channel.channelId);
8629
- deleteChannelUnreadByChannelId(channel.channelId);
8637
+ if (isConsistentMode) {
8638
+ addFlagIsDeletedSubChannelUnreadByChannelId(channel.channelId);
8639
+ deleteChannelUnreadByChannelId(channel.channelId);
8640
+ }
8641
+ else if (isLegacyUnreadCount) {
8642
+ dropFromCache(['channelUnread', 'get', channel.channelId]);
8643
+ }
8630
8644
  });
8631
8645
  }
8632
8646
  const { channels, channelUsers } = preparedPayload;
@@ -8894,6 +8908,31 @@ const onMessageCreatedMqtt = (callback) => {
8894
8908
  reCalculateChannelUnreadInfo(message.channelId);
8895
8909
  });
8896
8910
  }
8911
+ if (client.useLegacyUnreadCount) {
8912
+ rawPayload.messages.forEach(message => {
8913
+ var _a, _b;
8914
+ const channelUnread = (_a = pullFromCache([
8915
+ 'channelUnread',
8916
+ 'get',
8917
+ message.channelId,
8918
+ ])) === null || _a === void 0 ? void 0 : _a.data;
8919
+ if (!channelUnread || channelUnread.lastSegment >= message.segment)
8920
+ return;
8921
+ const lastSegment = message.segment;
8922
+ const isMentionedInMessage = (_b = message.mentionedUsers) === null || _b === void 0 ? void 0 : _b.some(mention => {
8923
+ return (mention.type === 'channel' ||
8924
+ (mention.type === 'user' &&
8925
+ client.userId &&
8926
+ mention.userPublicIds.includes(client.userId)));
8927
+ });
8928
+ const lastMentionSegment = isMentionedInMessage
8929
+ ? message.segment
8930
+ : channelUnread.lastMentionSegment;
8931
+ const updatedChannelUnread = Object.assign(Object.assign({}, channelUnread), { lastSegment, unreadCount: Math.max(lastSegment - channelUnread.readToSegment, 0), lastMentionSegment, isMentioned: !(channelUnread.readToSegment >= lastMentionSegment) });
8932
+ pushToCache(['channelUnread', 'get', message.channelId], updatedChannelUnread);
8933
+ fireEvent('local.channelUnread.updated', updatedChannelUnread);
8934
+ });
8935
+ }
8897
8936
  // Update in cache
8898
8937
  ingestInCache(payload);
8899
8938
  payload.messages.forEach(message => {
@@ -16736,12 +16775,12 @@ var index$f = /*#__PURE__*/Object.freeze({
16736
16775
  /**
16737
16776
  * Internal used only
16738
16777
  *
16739
- * Fired when an {@link Amity.userMessageFeedMarkers} has been resolved by Object Rsesolver
16778
+ * Fired when an {@link Amity.channelUnreadInfo} has been updated.
16740
16779
  *
16741
16780
  * @param callback The function to call when the event was fired
16742
16781
  * @returns an {@link Amity.Unsubscriber} function to stop listening
16743
16782
  *
16744
- * @category MessageMarker Events
16783
+ * @category ChannelMarker Events
16745
16784
  */
16746
16785
  const onChannelUnreadInfoUpdatedLocal = (callback) => {
16747
16786
  const client = getActiveClient();
@@ -16754,12 +16793,12 @@ const onChannelUnreadInfoUpdatedLocal = (callback) => {
16754
16793
  /**
16755
16794
  * Internal used only
16756
16795
  *
16757
- * Fired when an {@link Amity.userMessageFeedMarkers} has been resolved by Object Rsesolver
16796
+ * Fired when an {@link Amity.ChannelUnread} has been updated.
16758
16797
  *
16759
16798
  * @param callback The function to call when the event was fired
16760
16799
  * @returns an {@link Amity.Unsubscriber} function to stop listening
16761
16800
  *
16762
- * @category MessageMarker Events
16801
+ * @category Channel Events
16763
16802
  */
16764
16803
  const onChannelUnreadUpdatedLocal = (callback) => {
16765
16804
  const client = getActiveClient();
@@ -17551,6 +17590,120 @@ const getChannels = (params, callback, config) => {
17551
17590
  };
17552
17591
  /* end_public_function */
17553
17592
 
17593
+ /**
17594
+ *
17595
+ * Calculate user unread from {@link Amity.ChannelUnread} objects
17596
+ *
17597
+ * @returns the {@link Amity.UserUnread} objects
17598
+ *
17599
+ * @category Channel API
17600
+ * @async
17601
+ */
17602
+ const getTotalChannelsUnread$1 = () => {
17603
+ var _a;
17604
+ const client = getActiveClient();
17605
+ client.log('channel/getTotalChannelsUnread.locally');
17606
+ const cachedChannelsUnread = ((_a = queryCache(['channelUnread', 'get'])) === null || _a === void 0 ? void 0 : _a.filter(({ data }) => {
17607
+ return !data.isDeleted;
17608
+ })) || [];
17609
+ const totalChannelsUnread = (cachedChannelsUnread === null || cachedChannelsUnread === void 0 ? void 0 : cachedChannelsUnread.reduce((acc, { data }) => {
17610
+ acc.unreadCount += data.unreadCount;
17611
+ acc.isMentioned = acc.isMentioned || data.isMentioned;
17612
+ return acc;
17613
+ }, { unreadCount: 0, isMentioned: false })) || { unreadCount: 0, isMentioned: false };
17614
+ const cachedAt = client.cache && Date.now();
17615
+ return {
17616
+ data: totalChannelsUnread,
17617
+ cachedAt,
17618
+ };
17619
+ };
17620
+
17621
+ /* begin_public_function
17622
+ id: totalChannelsUnread.get
17623
+ */
17624
+ /**
17625
+ * ```js
17626
+ * import { ChannelRepository } from '@amityco/ts-sdk';
17627
+ *
17628
+ * let totalChannelsUnread;
17629
+ *
17630
+ * const unsubscribe = ChannelRepository.getTotalChannelsUnread(response => {
17631
+ * unread = response.data;
17632
+ * });
17633
+ * ```
17634
+ *
17635
+ * Observe all mutation on a given {@link Amity.UserUnread}
17636
+ *
17637
+ * @returns An {@link Amity.UserUnread} function to run when willing to stop observing the message
17638
+ *
17639
+ * @category User Unread Live Object
17640
+ *
17641
+ */
17642
+ const getTotalChannelsUnread = (callback) => {
17643
+ const { _id: userId } = getActiveUser();
17644
+ if (!userId)
17645
+ throw new ASCError('The _id has not been defined in ActiveUser', 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
17646
+ const { log, cache } = getActiveClient();
17647
+ if (!cache) {
17648
+ console.log('For using Live Object feature you need to enable Cache!');
17649
+ }
17650
+ const timestamp = Date.now();
17651
+ log(`liveTotalChannelsUnread(tmpid: ${timestamp}) > listen`);
17652
+ const disposers = [];
17653
+ let isUnsyncedModel = false; // for messages
17654
+ let model;
17655
+ const dispatcher = (data) => {
17656
+ const { data: userUnread } = data;
17657
+ const callbackModel = userUnread
17658
+ ? {
17659
+ unreadCount: userUnread.unreadCount,
17660
+ isMentioned: userUnread.isMentioned,
17661
+ }
17662
+ : undefined;
17663
+ model = callbackModel ? convertGetterPropsToStatic(callbackModel) : callbackModel;
17664
+ callback({
17665
+ data: callbackModel
17666
+ ? Object.assign(Object.assign({}, callbackModel), { isMentioned: callbackModel.isMentioned }) : callbackModel,
17667
+ loading: data.loading,
17668
+ error: data.error,
17669
+ });
17670
+ };
17671
+ const realtimeRouter = (userUnread) => {
17672
+ if (isEqual(model, userUnread))
17673
+ return;
17674
+ dispatcher({
17675
+ loading: false,
17676
+ data: userUnread,
17677
+ });
17678
+ };
17679
+ const onFetch = () => {
17680
+ const query = createQuery(async () => getTotalChannelsUnread$1());
17681
+ runQuery(query, ({ error, data, loading, origin, cachedAt }) => {
17682
+ if (cachedAt === UNSYNCED_OBJECT_CACHED_AT_VALUE) {
17683
+ dispatcher({
17684
+ data,
17685
+ origin,
17686
+ loading: false,
17687
+ error: new ASCApiError(UNSYNCED_OBJECT_CACHED_AT_MESSAGE, 800800 /* Amity.ClientError.DISALOOW_UNSYNCED_OBJECT */, "error" /* Amity.ErrorLevel.ERROR */),
17688
+ });
17689
+ isUnsyncedModel = true;
17690
+ disposers.forEach(fn => fn());
17691
+ }
17692
+ else if (!isUnsyncedModel) {
17693
+ dispatcher({ loading, data, origin, error });
17694
+ }
17695
+ if (error) {
17696
+ disposers.forEach(fn => fn());
17697
+ }
17698
+ });
17699
+ };
17700
+ disposers.push(onChannelUnreadUpdatedLocal(realtimeRouter));
17701
+ onFetch();
17702
+ return () => {
17703
+ disposers.forEach(fn => fn());
17704
+ };
17705
+ };
17706
+
17554
17707
  /* begin_public_function
17555
17708
  id: channel.member.add
17556
17709
  */
@@ -18154,6 +18307,7 @@ var index$c = /*#__PURE__*/Object.freeze({
18154
18307
  onChannelMemberRoleRemoved: onChannelMemberRoleRemoved,
18155
18308
  getChannel: getChannel,
18156
18309
  getChannels: getChannels,
18310
+ getTotalChannelsUnread: getTotalChannelsUnread,
18157
18311
  MARKER_INCLUDED_CHANNEL_TYPE: MARKER_INCLUDED_CHANNEL_TYPE,
18158
18312
  isUnreadCountSupport: isUnreadCountSupport,
18159
18313
  convertFromRaw: convertFromRaw,
package/dist/index.esm.js CHANGED
@@ -21719,7 +21719,6 @@ class MessageReadReceiptSyncEngine {
21719
21719
  if (this.jobQueue.length === 0 || this.isActive === false)
21720
21720
  return;
21721
21721
  const readReceipts = this.getReadReceipts();
21722
- console.log('[New 🌟 readReceipts] Sync read receipts', readReceipts);
21723
21722
  if (readReceipts) {
21724
21723
  this.markReadApi(readReceipts);
21725
21724
  }
@@ -21821,7 +21820,6 @@ class MessageReadReceiptSyncEngine {
21821
21820
  // Step 1: Optimistic update of channelUnread.readToSegment to message.segment and update unreadCount value
21822
21821
  const cacheKey = ['channelUnread', 'get', channelId];
21823
21822
  const channelUnread = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
21824
- console.log('[New 🌟] Mark read => channel unread', channelUnread);
21825
21823
  if (channelUnread && segment > channelUnread.readToSegment) {
21826
21824
  channelUnread.readToSegment = segment;
21827
21825
  channelUnread.unreadCount = Math.max(channelUnread.lastSegment - segment, 0);
@@ -23164,7 +23162,7 @@ const updateChannelUnread = ({ currentUserId, channels, channelUsers, }) => {
23164
23162
  lastSegment: channels[i].messageCount,
23165
23163
  readToSegment,
23166
23164
  lastMentionedSegment,
23167
- unreadCount: channels[i].messageCount - readToSegment,
23165
+ unreadCount: Math.max(channels[i].messageCount - readToSegment, 0),
23168
23166
  isMentioned: lastMentionedSegment > readToSegment,
23169
23167
  isDeleted: channels[i].isDeleted,
23170
23168
  });
@@ -24011,12 +24009,21 @@ const onChannelDeleted = (callback) => {
24011
24009
  const client = getActiveClient();
24012
24010
  const filter = async (payload) => {
24013
24011
  const data = await prepareChannelPayload(payload);
24014
- if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
24015
- data.channels.forEach(channel => {
24012
+ const isConsistentMode = client.getMarkerSyncConsistentMode() && client.isUnreadCountEnabled;
24013
+ const isLegacyUnreadCount = client.useLegacyUnreadCount;
24014
+ data.channels.forEach(channel => {
24015
+ if (isConsistentMode) {
24016
24016
  addFlagIsDeletedSubChannelUnreadByChannelId(channel.channelId);
24017
24017
  deleteChannelUnreadByChannelId(channel.channelId);
24018
- });
24019
- }
24018
+ }
24019
+ else if (isLegacyUnreadCount) {
24020
+ const cacheKey = ['channelUnread', 'get', channel.channelId];
24021
+ const cache = pullFromCache(cacheKey);
24022
+ if (cache) {
24023
+ pushToCache(cacheKey, Object.assign(Object.assign({}, cache), { isDeleted: true }));
24024
+ }
24025
+ }
24026
+ });
24020
24027
  ingestInCache(data);
24021
24028
  callbacks$b.forEach(cb => cb(data.channels[0]));
24022
24029
  };
@@ -24715,10 +24722,17 @@ const onChannelLeft = (callback) => {
24715
24722
  const preparedPayload = await prepareChannelPayload(payload, {
24716
24723
  isMessagePreviewUpdated: isLeftByMe,
24717
24724
  });
24718
- if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode() && isLeftByMe) {
24725
+ const isConsistentMode = client.getMarkerSyncConsistentMode() && client.isUnreadCountEnabled;
24726
+ const isLegacyUnreadCount = client.useLegacyUnreadCount;
24727
+ if (isLeftByMe) {
24719
24728
  preparedPayload.channels.forEach(channel => {
24720
- addFlagIsDeletedSubChannelUnreadByChannelId(channel.channelId);
24721
- deleteChannelUnreadByChannelId(channel.channelId);
24729
+ if (isConsistentMode) {
24730
+ addFlagIsDeletedSubChannelUnreadByChannelId(channel.channelId);
24731
+ deleteChannelUnreadByChannelId(channel.channelId);
24732
+ }
24733
+ else if (isLegacyUnreadCount) {
24734
+ dropFromCache(['channelUnread', 'get', channel.channelId]);
24735
+ }
24722
24736
  });
24723
24737
  }
24724
24738
  const { channels, channelUsers } = preparedPayload;
@@ -24986,6 +25000,31 @@ const onMessageCreatedMqtt = (callback) => {
24986
25000
  reCalculateChannelUnreadInfo(message.channelId);
24987
25001
  });
24988
25002
  }
25003
+ if (client.useLegacyUnreadCount) {
25004
+ rawPayload.messages.forEach(message => {
25005
+ var _a, _b;
25006
+ const channelUnread = (_a = pullFromCache([
25007
+ 'channelUnread',
25008
+ 'get',
25009
+ message.channelId,
25010
+ ])) === null || _a === void 0 ? void 0 : _a.data;
25011
+ if (!channelUnread || channelUnread.lastSegment >= message.segment)
25012
+ return;
25013
+ const lastSegment = message.segment;
25014
+ const isMentionedInMessage = (_b = message.mentionedUsers) === null || _b === void 0 ? void 0 : _b.some(mention => {
25015
+ return (mention.type === 'channel' ||
25016
+ (mention.type === 'user' &&
25017
+ client.userId &&
25018
+ mention.userPublicIds.includes(client.userId)));
25019
+ });
25020
+ const lastMentionSegment = isMentionedInMessage
25021
+ ? message.segment
25022
+ : channelUnread.lastMentionSegment;
25023
+ const updatedChannelUnread = Object.assign(Object.assign({}, channelUnread), { lastSegment, unreadCount: Math.max(lastSegment - channelUnread.readToSegment, 0), lastMentionSegment, isMentioned: !(channelUnread.readToSegment >= lastMentionSegment) });
25024
+ pushToCache(['channelUnread', 'get', message.channelId], updatedChannelUnread);
25025
+ fireEvent('local.channelUnread.updated', updatedChannelUnread);
25026
+ });
25027
+ }
24989
25028
  // Update in cache
24990
25029
  ingestInCache(payload);
24991
25030
  payload.messages.forEach(message => {
@@ -32828,12 +32867,12 @@ var index$f = /*#__PURE__*/Object.freeze({
32828
32867
  /**
32829
32868
  * Internal used only
32830
32869
  *
32831
- * Fired when an {@link Amity.userMessageFeedMarkers} has been resolved by Object Rsesolver
32870
+ * Fired when an {@link Amity.channelUnreadInfo} has been updated.
32832
32871
  *
32833
32872
  * @param callback The function to call when the event was fired
32834
32873
  * @returns an {@link Amity.Unsubscriber} function to stop listening
32835
32874
  *
32836
- * @category MessageMarker Events
32875
+ * @category ChannelMarker Events
32837
32876
  */
32838
32877
  const onChannelUnreadInfoUpdatedLocal = (callback) => {
32839
32878
  const client = getActiveClient();
@@ -32846,12 +32885,12 @@ const onChannelUnreadInfoUpdatedLocal = (callback) => {
32846
32885
  /**
32847
32886
  * Internal used only
32848
32887
  *
32849
- * Fired when an {@link Amity.userMessageFeedMarkers} has been resolved by Object Rsesolver
32888
+ * Fired when an {@link Amity.ChannelUnread} has been updated.
32850
32889
  *
32851
32890
  * @param callback The function to call when the event was fired
32852
32891
  * @returns an {@link Amity.Unsubscriber} function to stop listening
32853
32892
  *
32854
- * @category MessageMarker Events
32893
+ * @category Channel Events
32855
32894
  */
32856
32895
  const onChannelUnreadUpdatedLocal = (callback) => {
32857
32896
  const client = getActiveClient();
@@ -33643,6 +33682,120 @@ const getChannels = (params, callback, config) => {
33643
33682
  };
33644
33683
  /* end_public_function */
33645
33684
 
33685
+ /**
33686
+ *
33687
+ * Calculate user unread from {@link Amity.ChannelUnread} objects
33688
+ *
33689
+ * @returns the {@link Amity.UserUnread} objects
33690
+ *
33691
+ * @category Channel API
33692
+ * @async
33693
+ */
33694
+ const getTotalChannelsUnread$1 = () => {
33695
+ var _a;
33696
+ const client = getActiveClient();
33697
+ client.log('channel/getTotalChannelsUnread.locally');
33698
+ const cachedChannelsUnread = ((_a = queryCache(['channelUnread', 'get'])) === null || _a === void 0 ? void 0 : _a.filter(({ data }) => {
33699
+ return !data.isDeleted;
33700
+ })) || [];
33701
+ const totalChannelsUnread = (cachedChannelsUnread === null || cachedChannelsUnread === void 0 ? void 0 : cachedChannelsUnread.reduce((acc, { data }) => {
33702
+ acc.unreadCount += data.unreadCount;
33703
+ acc.isMentioned = acc.isMentioned || data.isMentioned;
33704
+ return acc;
33705
+ }, { unreadCount: 0, isMentioned: false })) || { unreadCount: 0, isMentioned: false };
33706
+ const cachedAt = client.cache && Date.now();
33707
+ return {
33708
+ data: totalChannelsUnread,
33709
+ cachedAt,
33710
+ };
33711
+ };
33712
+
33713
+ /* begin_public_function
33714
+ id: totalChannelsUnread.get
33715
+ */
33716
+ /**
33717
+ * ```js
33718
+ * import { ChannelRepository } from '@amityco/ts-sdk';
33719
+ *
33720
+ * let totalChannelsUnread;
33721
+ *
33722
+ * const unsubscribe = ChannelRepository.getTotalChannelsUnread(response => {
33723
+ * unread = response.data;
33724
+ * });
33725
+ * ```
33726
+ *
33727
+ * Observe all mutation on a given {@link Amity.UserUnread}
33728
+ *
33729
+ * @returns An {@link Amity.UserUnread} function to run when willing to stop observing the message
33730
+ *
33731
+ * @category User Unread Live Object
33732
+ *
33733
+ */
33734
+ const getTotalChannelsUnread = (callback) => {
33735
+ const { _id: userId } = getActiveUser();
33736
+ if (!userId)
33737
+ throw new ASCError('The _id has not been defined in ActiveUser', 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
33738
+ const { log, cache } = getActiveClient();
33739
+ if (!cache) {
33740
+ console.log('For using Live Object feature you need to enable Cache!');
33741
+ }
33742
+ const timestamp = Date.now();
33743
+ log(`liveTotalChannelsUnread(tmpid: ${timestamp}) > listen`);
33744
+ const disposers = [];
33745
+ let isUnsyncedModel = false; // for messages
33746
+ let model;
33747
+ const dispatcher = (data) => {
33748
+ const { data: userUnread } = data;
33749
+ const callbackModel = userUnread
33750
+ ? {
33751
+ unreadCount: userUnread.unreadCount,
33752
+ isMentioned: userUnread.isMentioned,
33753
+ }
33754
+ : undefined;
33755
+ model = callbackModel ? convertGetterPropsToStatic(callbackModel) : callbackModel;
33756
+ callback({
33757
+ data: callbackModel
33758
+ ? Object.assign(Object.assign({}, callbackModel), { isMentioned: callbackModel.isMentioned }) : callbackModel,
33759
+ loading: data.loading,
33760
+ error: data.error,
33761
+ });
33762
+ };
33763
+ const realtimeRouter = (userUnread) => {
33764
+ if (isEqual(model, userUnread))
33765
+ return;
33766
+ dispatcher({
33767
+ loading: false,
33768
+ data: userUnread,
33769
+ });
33770
+ };
33771
+ const onFetch = () => {
33772
+ const query = createQuery(async () => getTotalChannelsUnread$1());
33773
+ runQuery(query, ({ error, data, loading, origin, cachedAt }) => {
33774
+ if (cachedAt === UNSYNCED_OBJECT_CACHED_AT_VALUE) {
33775
+ dispatcher({
33776
+ data,
33777
+ origin,
33778
+ loading: false,
33779
+ error: new ASCApiError(UNSYNCED_OBJECT_CACHED_AT_MESSAGE, 800800 /* Amity.ClientError.DISALOOW_UNSYNCED_OBJECT */, "error" /* Amity.ErrorLevel.ERROR */),
33780
+ });
33781
+ isUnsyncedModel = true;
33782
+ disposers.forEach(fn => fn());
33783
+ }
33784
+ else if (!isUnsyncedModel) {
33785
+ dispatcher({ loading, data, origin, error });
33786
+ }
33787
+ if (error) {
33788
+ disposers.forEach(fn => fn());
33789
+ }
33790
+ });
33791
+ };
33792
+ disposers.push(onChannelUnreadUpdatedLocal(realtimeRouter));
33793
+ onFetch();
33794
+ return () => {
33795
+ disposers.forEach(fn => fn());
33796
+ };
33797
+ };
33798
+
33646
33799
  /* begin_public_function
33647
33800
  id: channel.member.add
33648
33801
  */
@@ -34246,6 +34399,7 @@ var index$c = /*#__PURE__*/Object.freeze({
34246
34399
  onChannelMemberRoleRemoved: onChannelMemberRoleRemoved,
34247
34400
  getChannel: getChannel,
34248
34401
  getChannels: getChannels,
34402
+ getTotalChannelsUnread: getTotalChannelsUnread,
34249
34403
  MARKER_INCLUDED_CHANNEL_TYPE: MARKER_INCLUDED_CHANNEL_TYPE,
34250
34404
  isUnreadCountSupport: isUnreadCountSupport,
34251
34405
  convertFromRaw: convertFromRaw,