@amityco/ts-sdk 6.7.2-bd796de.0 → 6.7.2-c5c263a.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 (85) hide show
  1. package/dist/@types/core/events.d.ts +9 -3
  2. package/dist/@types/core/events.d.ts.map +1 -1
  3. package/dist/@types/core/marker.d.ts +3 -0
  4. package/dist/@types/core/marker.d.ts.map +1 -1
  5. package/dist/@types/core/payload.d.ts +36 -33
  6. package/dist/@types/core/payload.d.ts.map +1 -1
  7. package/dist/@types/domains/channel.d.ts +1 -0
  8. package/dist/@types/domains/channel.d.ts.map +1 -1
  9. package/dist/@types/domains/client.d.ts +1 -0
  10. package/dist/@types/domains/client.d.ts.map +1 -1
  11. package/dist/@types/domains/partials.d.ts +3 -0
  12. package/dist/@types/domains/partials.d.ts.map +1 -1
  13. package/dist/@types/domains/subChannel.d.ts +1 -0
  14. package/dist/@types/domains/subChannel.d.ts.map +1 -1
  15. package/dist/channelRepsitory/api/markAsRead.d.ts.map +1 -1
  16. package/dist/channelRepsitory/observers/getChannels.d.ts.map +1 -1
  17. package/dist/channelRepsitory/utils/getChannelHasMentioned.d.ts +7 -0
  18. package/dist/channelRepsitory/utils/getChannelHasMentioned.d.ts.map +1 -0
  19. package/dist/channelRepsitory/utils/prepareChannelPayload.d.ts.map +1 -1
  20. package/dist/client/api/markerSync.d.ts.map +1 -1
  21. package/dist/client/observers/getTotalUnreadCount.d.ts +2 -0
  22. package/dist/client/observers/getTotalUnreadCount.d.ts.map +1 -1
  23. package/dist/client/observers/getUserUnread.d.ts +19 -0
  24. package/dist/client/observers/getUserUnread.d.ts.map +1 -0
  25. package/dist/client/observers/index.d.ts +1 -0
  26. package/dist/client/observers/index.d.ts.map +1 -1
  27. package/dist/index.cjs.js +167 -31
  28. package/dist/index.esm.js +167 -31
  29. package/dist/index.umd.js +4 -4
  30. package/dist/marker/api/getChannelMarkers.d.ts.map +1 -1
  31. package/dist/marker/api/getMessageMarkers.d.ts.map +1 -1
  32. package/dist/marker/api/getSubChannelMarkers.d.ts.map +1 -1
  33. package/dist/marker/api/getUserMarker.d.ts.map +1 -1
  34. package/dist/marker/events/onUserMarkerSync.d.ts.map +1 -1
  35. package/dist/messageRepository/api/getDeliveredUsers.d.ts.map +1 -1
  36. package/dist/messageRepository/api/getReadUsers.d.ts.map +1 -1
  37. package/dist/messageRepository/api/markAsDelivered.d.ts.map +1 -1
  38. package/dist/subChannelRepository/api/readingAPI.d.ts.map +1 -1
  39. package/dist/subChannelRepository/api/startReadingAPI.d.ts.map +1 -1
  40. package/dist/subChannelRepository/api/stopReadingAPI.d.ts.map +1 -1
  41. package/dist/subChannelRepository/utils/getSubChannelHasMentioned.d.ts +2 -0
  42. package/dist/subChannelRepository/utils/getSubChannelHasMentioned.d.ts.map +1 -0
  43. package/dist/subChannelRepository/utils/prepareSubChannelPayload.d.ts.map +1 -1
  44. package/dist/utils/marker.d.ts +4 -0
  45. package/dist/utils/marker.d.ts.map +1 -0
  46. package/dist/utils/tests/dummy/channel.d.ts.map +1 -1
  47. package/dist/utils/tests/dummy/marker.d.ts +3 -0
  48. package/dist/utils/tests/dummy/marker.d.ts.map +1 -1
  49. package/package.json +1 -1
  50. package/src/@types/core/events.ts +3 -9
  51. package/src/@types/core/marker.ts +3 -0
  52. package/src/@types/core/payload.ts +37 -33
  53. package/src/@types/domains/channel.ts +1 -0
  54. package/src/@types/domains/client.ts +2 -0
  55. package/src/@types/domains/partials.ts +4 -0
  56. package/src/@types/domains/subChannel.ts +1 -0
  57. package/src/channelRepsitory/api/markAsRead.ts +22 -1
  58. package/src/channelRepsitory/observers/getChannels.ts +3 -2
  59. package/src/channelRepsitory/observers/tests/getChannels.test.ts +6 -2
  60. package/src/channelRepsitory/utils/getChannelHasMentioned.ts +28 -0
  61. package/src/channelRepsitory/utils/prepareChannelPayload.ts +4 -0
  62. package/src/channelRepsitory/utils/tests/prepareChannelPayload.test.ts +3 -0
  63. package/src/client/api/markerSync.ts +17 -2
  64. package/src/client/observers/getTotalUnreadCount.ts +2 -0
  65. package/src/client/observers/getUserUnread.ts +47 -0
  66. package/src/client/observers/index.ts +1 -0
  67. package/src/marker/api/getChannelMarkers.ts +9 -3
  68. package/src/marker/api/getMessageMarkers.ts +5 -2
  69. package/src/marker/api/getSubChannelMarkers.ts +16 -2
  70. package/src/marker/api/getUserMarker.ts +9 -2
  71. package/src/marker/api/tests/getMessageMarkers.test.ts +3 -1
  72. package/src/marker/api/tests/getSubChannelMarkers.test.ts +16 -8
  73. package/src/marker/events/onUserMarkerSync.ts +18 -2
  74. package/src/messageRepository/api/getDeliveredUsers.ts +9 -2
  75. package/src/messageRepository/api/getReadUsers.ts +6 -2
  76. package/src/messageRepository/api/markAsDelivered.ts +17 -1
  77. package/src/messageRepository/api/tests/markAsDelivered.test.ts +11 -4
  78. package/src/subChannelRepository/api/readingAPI.ts +17 -2
  79. package/src/subChannelRepository/api/startReadingAPI.ts +17 -2
  80. package/src/subChannelRepository/api/stopReadingAPI.ts +17 -2
  81. package/src/subChannelRepository/utils/getSubChannelHasMentioned.ts +34 -0
  82. package/src/subChannelRepository/utils/prepareSubChannelPayload.ts +4 -0
  83. package/src/utils/marker.ts +29 -0
  84. package/src/utils/tests/dummy/channel.ts +2 -0
  85. package/src/utils/tests/dummy/marker.ts +46 -0
package/dist/index.cjs.js CHANGED
@@ -4725,6 +4725,22 @@ const prepareMembershipPayload = (payload, memberProp, userIdProp = 'userId', us
4725
4725
  return Object.assign(Object.assign({}, rest), { [memberProp]: members });
4726
4726
  };
4727
4727
 
4728
+ function doConvert(markerResponses) {
4729
+ return markerResponses.map((_a) => {
4730
+ var { isMentioned } = _a, rest = __rest(_a, ["isMentioned"]);
4731
+ return (Object.assign({ hasMentioned: isMentioned }, rest));
4732
+ });
4733
+ }
4734
+ function convertUserMarkerResponse(userMarkerResponse) {
4735
+ return doConvert(userMarkerResponse);
4736
+ }
4737
+ function convertChannelMarkerResponse(channelMarkerResponse) {
4738
+ return doConvert(channelMarkerResponse);
4739
+ }
4740
+ function convertSubChannelMarkerResponse(subChannelMarkerResponse) {
4741
+ return doConvert(subChannelMarkerResponse);
4742
+ }
4743
+
4728
4744
  /**
4729
4745
  * ```js
4730
4746
  * import { getChannelMarker } from '@amityco/ts-sdk'
@@ -4753,18 +4769,22 @@ const getChannelMarkers = async (channelIds, page = { limit: 100 }) => {
4753
4769
  },
4754
4770
  });
4755
4771
  const { paging } = queryPayload, payload = __rest(queryPayload, ["paging"]);
4756
- const { userEntityMarkers, userMarkers } = payload;
4772
+ const { userEntityMarkers: userEntityMarkersPayload, userMarkers: userMarkersPayload } = payload;
4773
+ const userMarkers = convertUserMarkerResponse(userMarkersPayload);
4774
+ const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload);
4757
4775
  const cachedAt = client.cache && Date.now();
4758
4776
  if (client.cache)
4759
- ingestInCache(payload, { cachedAt });
4760
- fireEvent('local.channelMarker.fetched', { userEntityMarkers });
4777
+ ingestInCache({ userEntityMarkers, userMarkers }, { cachedAt });
4778
+ fireEvent('local.channelMarker.fetched', {
4779
+ userEntityMarkers,
4780
+ });
4761
4781
  fireEvent('local.userMarker.fetched', { userMarkers });
4762
4782
  const nextPage = toPage(paging.next);
4763
4783
  const prevPage = toPage(paging.previous);
4764
4784
  return { data: userEntityMarkers, cachedAt, prevPage, nextPage };
4765
4785
  };
4766
4786
 
4767
- const getCachedMarker$1 = (entityId) => {
4787
+ const getCachedMarker$2 = (entityId) => {
4768
4788
  var _a;
4769
4789
  const key = {
4770
4790
  entityId,
@@ -4784,7 +4804,31 @@ const getChannelUnreadCount = (channel, marker) => {
4784
4804
  // from a channel or the channel is deleted the channel's unread count will reset to zero
4785
4805
  return 0;
4786
4806
  }
4787
- return (_c = (_a = marker === null || marker === void 0 ? void 0 : marker.unreadCount) !== null && _a !== void 0 ? _a : (_b = getCachedMarker$1(channel.channelId)) === null || _b === void 0 ? void 0 : _b.unreadCount) !== null && _c !== void 0 ? _c : 0;
4807
+ return (_c = (_a = marker === null || marker === void 0 ? void 0 : marker.unreadCount) !== null && _a !== void 0 ? _a : (_b = getCachedMarker$2(channel.channelId)) === null || _b === void 0 ? void 0 : _b.unreadCount) !== null && _c !== void 0 ? _c : 0;
4808
+ };
4809
+
4810
+ const getCachedMarker$1 = (entityId) => {
4811
+ var _a;
4812
+ const key = {
4813
+ entityId,
4814
+ userId: getActiveUser()._id,
4815
+ };
4816
+ return (_a = pullFromCache([
4817
+ 'channelMarker',
4818
+ 'get',
4819
+ getResolver('channelMarker')(key),
4820
+ ])) === null || _a === void 0 ? void 0 : _a.data;
4821
+ };
4822
+ /**
4823
+ * The function use to get value of hasMentioned field.
4824
+ * function will get the value from marker params first, if there is no hasMentioned field, will look in to the cache.
4825
+ * If not found in the cache, use `false` as defaul value.
4826
+ */
4827
+ const getChannelHasMentioned = (channel, marker) => {
4828
+ var _a, _b;
4829
+ return (marker === null || marker === void 0 ? void 0 : marker.hasMentioned) !== undefined
4830
+ ? marker === null || marker === void 0 ? void 0 : marker.hasMentioned
4831
+ : (_b = (_a = getCachedMarker$1(channel.channelId)) === null || _a === void 0 ? void 0 : _a.hasMentioned) !== null && _b !== void 0 ? _b : false;
4788
4832
  };
4789
4833
 
4790
4834
  const MARKER_INCLUDED_CHANNEL_TYPE = ['broadcast', 'conversation', 'community'];
@@ -4792,6 +4836,9 @@ const isUnreadCountSupport$1 = ({ type }) => MARKER_INCLUDED_CHANNEL_TYPE.includ
4792
4836
  function convertFromRaw$2(channel) {
4793
4837
  return Object.assign(Object.assign({ get unreadCount() {
4794
4838
  return getChannelUnreadCount(channel);
4839
+ },
4840
+ get hasMentioned() {
4841
+ return getChannelHasMentioned(channel);
4795
4842
  } }, channel), { defaultSubChannelId: channel._id, isUnreadCountSupport: isUnreadCountSupport$1(channel) });
4796
4843
  }
4797
4844
  const preUpdateChannelCache = (rawPayload) => {
@@ -4993,10 +5040,11 @@ const getMessageMarkers = async (messageIds, page = { limit: 100 }) => {
4993
5040
  },
4994
5041
  });
4995
5042
  const { paging } = queryPayload, payload = __rest(queryPayload, ["paging"]);
4996
- const { contentMarkers, feedMarkers, userMarkers } = payload;
5043
+ const { contentMarkers, feedMarkers, userMarkers: userMarkersPayload } = payload;
5044
+ const userMarkers = convertUserMarkerResponse(userMarkersPayload);
4997
5045
  const cachedAt = client.cache && Date.now();
4998
5046
  if (client.cache)
4999
- ingestInCache(payload, { cachedAt });
5047
+ ingestInCache({ contentMarkers, feedMarkers, userMarkers }, { cachedAt });
5000
5048
  fireEvent('local.feedMarker.fetched', { feedMarkers });
5001
5049
  fireEvent('local.messageMarker.fetched', { contentMarkers });
5002
5050
  fireEvent('local.userMarker.fetched', { userMarkers });
@@ -5033,10 +5081,13 @@ const getSubChannelMarkers = async (messageFeedIds, page = { limit: 100 }) => {
5033
5081
  },
5034
5082
  });
5035
5083
  const { paging } = queryPayload, payload = __rest(queryPayload, ["paging"]);
5036
- const { userEntityMarkers, userFeedMarkers, userMarkers } = payload;
5084
+ const { userEntityMarkers: userEntityMarkersPayload, userFeedMarkers: userFeedMarkersPayload, userMarkers: userMarkersPayload, } = payload;
5085
+ const userMarkers = convertUserMarkerResponse(userMarkersPayload);
5086
+ const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload);
5087
+ const userFeedMarkers = convertSubChannelMarkerResponse(userFeedMarkersPayload);
5037
5088
  const cachedAt = client.cache && Date.now();
5038
5089
  if (client.cache)
5039
- ingestInCache(payload, { cachedAt });
5090
+ ingestInCache({ userEntityMarkers, userFeedMarkers, userMarkers }, { cachedAt });
5040
5091
  fireEvent('local.channelMarker.fetched', { userEntityMarkers });
5041
5092
  fireEvent('local.subChannelMarker.fetched', { userFeedMarkers });
5042
5093
  fireEvent('local.userMarker.fetched', { userMarkers });
@@ -5049,10 +5100,14 @@ const getUserMarker = async () => {
5049
5100
  const client = getActiveClient();
5050
5101
  client.log('channel/getUserMarker');
5051
5102
  const { data: payload } = await client.http.get(`/api/v1/markers/userMarker`);
5052
- const { userMarkers } = payload;
5103
+ const { userMarkers: UserMarkersPayload } = payload;
5104
+ /*
5105
+ change field isMentioned from backend to be hasMentioned
5106
+ */
5107
+ const userMarkers = convertUserMarkerResponse(UserMarkersPayload);
5053
5108
  const cachedAt = client.cache && Date.now();
5054
5109
  if (client.cache)
5055
- ingestInCache(payload, { cachedAt });
5110
+ ingestInCache({ userMarkers }, { cachedAt });
5056
5111
  fireEvent('local.userMarker.fetched', { userMarkers });
5057
5112
  return { data: userMarkers[0], cachedAt };
5058
5113
  };
@@ -5222,6 +5277,30 @@ function getSubChannelUnreadCount(channelId, subChannelId, marker) {
5222
5277
  return 0;
5223
5278
  }
5224
5279
 
5280
+ function getSubChannelHasMentioned(channelId, subChannelId, marker) {
5281
+ var _a;
5282
+ // Look for `unreadCount` in the marker param first
5283
+ if (marker) {
5284
+ return marker.hasMentioned;
5285
+ }
5286
+ const key = {
5287
+ entityId: channelId,
5288
+ feedId: subChannelId,
5289
+ userId: getActiveUser()._id,
5290
+ };
5291
+ // If the marker param is not set, look in the cache
5292
+ const cachedMarker = (_a = pullFromCache([
5293
+ 'subChannelMarker',
5294
+ 'get',
5295
+ getResolver('subChannelMarker')(key),
5296
+ ])) === null || _a === void 0 ? void 0 : _a.data;
5297
+ if (cachedMarker) {
5298
+ return cachedMarker.hasMentioned;
5299
+ }
5300
+ // and if not found in cache use default value `false`
5301
+ return false;
5302
+ }
5303
+
5225
5304
  const MARKER_INCLUDED_SUB_CHANNEL_TYPE = ['broadcast', 'conversation', 'community'];
5226
5305
  /**
5227
5306
  * Filter sub channel by type. Only conversation, community and broadcast type are included.
@@ -5231,6 +5310,9 @@ function convertFromRaw(_a) {
5231
5310
  var { channelId, channelPublicId, channelType, childCount, creatorId, creatorPublicId, lastMessageId, lastMessageTimestamp, messageFeedId, name } = _a, rest = __rest(_a, ["channelId", "channelPublicId", "channelType", "childCount", "creatorId", "creatorPublicId", "lastMessageId", "lastMessageTimestamp", "messageFeedId", "name"]);
5232
5311
  return Object.assign(Object.assign({ get unreadCount() {
5233
5312
  return getSubChannelUnreadCount(channelId, messageFeedId);
5313
+ },
5314
+ get hasMentioned() {
5315
+ return getSubChannelHasMentioned(channelId, messageFeedId);
5234
5316
  } }, rest), { channelId: channelPublicId, creatorId: creatorPublicId, displayName: name, lastActivity: lastMessageTimestamp, latestMessageId: lastMessageId, messageCount: childCount, subChannelId: messageFeedId, isUnreadCountSupport: isUnreadCountSupport({ channelType }) });
5235
5317
  }
5236
5318
  const preUpdateSubChannelCache = (rawPayload) => {
@@ -5350,10 +5432,13 @@ const readingAPI = async (messageFeedIds) => {
5350
5432
  const client = getActiveClient();
5351
5433
  client.log('subChannel/readingAPI', messageFeedIds);
5352
5434
  const { data: payload } = await client.http.post(`/api/v1/markers/message-feeds/reading`, { messageFeedIds });
5353
- const { userEntityMarkers, userFeedMarkers, feedMarkers, userMarkers } = payload;
5435
+ const { userEntityMarkers: userEntityMarkersPayload, userFeedMarkers: userFeedMarkersPayload, feedMarkers, userMarkers: userMarkersPayload, } = payload;
5436
+ const userMarkers = convertUserMarkerResponse(userMarkersPayload);
5437
+ const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload);
5438
+ const userFeedMarkers = convertSubChannelMarkerResponse(userFeedMarkersPayload);
5354
5439
  const cachedAt = client.cache && Date.now();
5355
5440
  if (client.cache)
5356
- ingestInCache(payload, { cachedAt });
5441
+ ingestInCache({ userEntityMarkers, userFeedMarkers, feedMarkers, userMarkers }, { cachedAt });
5357
5442
  fireEvent('local.feedMarker.fetched', { feedMarkers });
5358
5443
  fireEvent('local.channelMarker.fetched', { userEntityMarkers });
5359
5444
  fireEvent('local.subChannelMarker.fetched', { userFeedMarkers });
@@ -5380,10 +5465,13 @@ const startReadingAPI = async (messageFeedId) => {
5380
5465
  const client = getActiveClient();
5381
5466
  client.log('subChannel/startReadingAPI', messageFeedId);
5382
5467
  const { data: payload } = await client.http.post(`/api/v1/markers/message-feeds/${messageFeedId}/start-reading`);
5383
- const { userEntityMarkers, userFeedMarkers, feedMarkers, userMarkers } = payload;
5468
+ const { userEntityMarkers: userEntityMarkersPayload, userFeedMarkers: userFeedMarkersPayload, feedMarkers, userMarkers: userMarkersPayload, } = payload;
5469
+ const userMarkers = convertUserMarkerResponse(userMarkersPayload);
5470
+ const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload);
5471
+ const userFeedMarkers = convertSubChannelMarkerResponse(userFeedMarkersPayload);
5384
5472
  const cachedAt = client.cache && Date.now();
5385
5473
  if (client.cache)
5386
- ingestInCache(payload, { cachedAt });
5474
+ ingestInCache({ userEntityMarkers, userFeedMarkers, feedMarkers, userMarkers }, { cachedAt });
5387
5475
  fireEvent('local.feedMarker.fetched', { feedMarkers });
5388
5476
  fireEvent('local.channelMarker.fetched', { userEntityMarkers });
5389
5477
  fireEvent('local.subChannelMarker.fetched', { userFeedMarkers });
@@ -5410,10 +5498,13 @@ const stopReadingAPI = async (messageFeedId) => {
5410
5498
  const client = getActiveClient();
5411
5499
  client.log('channel/stopReadingAPI', messageFeedId);
5412
5500
  const { data: payload } = await client.http.post(`/api/v1/markers/message-feeds/${messageFeedId}/stop-reading`);
5413
- const { userEntityMarkers, userFeedMarkers, feedMarkers, userMarkers } = payload;
5501
+ const { userEntityMarkers: userEntityMarkersPayload, userFeedMarkers: userFeedMarkersPayload, feedMarkers, userMarkers: userMarkersPayload, } = payload;
5502
+ const userMarkers = convertUserMarkerResponse(userMarkersPayload);
5503
+ const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload);
5504
+ const userFeedMarkers = convertSubChannelMarkerResponse(userFeedMarkersPayload);
5414
5505
  const cachedAt = client.cache && Date.now();
5415
5506
  if (client.cache)
5416
- ingestInCache(payload, { cachedAt });
5507
+ ingestInCache({ userEntityMarkers, userFeedMarkers, feedMarkers, userMarkers }, { cachedAt });
5417
5508
  fireEvent('local.feedMarker.fetched', { feedMarkers });
5418
5509
  fireEvent('local.channelMarker.fetched', { userEntityMarkers });
5419
5510
  fireEvent('local.subChannelMarker.fetched', { userFeedMarkers });
@@ -6117,10 +6208,13 @@ const markerSync = async (deviceLastSyncAt) => {
6117
6208
  const client = getActiveClient();
6118
6209
  client.log('channel/markerSync');
6119
6210
  const { data: payload } = await client.http.post(`/api/v1/markers/sync`, { deviceLastSyncAt });
6120
- const { userEntityMarkers, userFeedMarkers, feedMarkers, userMarkers } = payload;
6211
+ const { userEntityMarkers: userEntityMarkersPayload, userFeedMarkers: userFeedMarkersPayload, feedMarkers, userMarkers: userMarkersPayload, } = payload;
6212
+ const userMarkers = convertUserMarkerResponse(userMarkersPayload);
6213
+ const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload);
6214
+ const userFeedMarkers = convertSubChannelMarkerResponse(userFeedMarkersPayload);
6121
6215
  const cachedAt = client.cache && Date.now();
6122
6216
  if (client.cache)
6123
- ingestInCache(payload, { cachedAt });
6217
+ ingestInCache({ userEntityMarkers, userFeedMarkers, feedMarkers, userMarkers }, { cachedAt });
6124
6218
  fireEvent('local.feedMarker.fetched', { feedMarkers });
6125
6219
  fireEvent('local.channelMarker.fetched', { userEntityMarkers });
6126
6220
  fireEvent('local.subChannelMarker.fetched', { userFeedMarkers });
@@ -6454,6 +6548,8 @@ const liveObject = (id, callback, key, fetcher, eventHandlers, options) => {
6454
6548
  };
6455
6549
 
6456
6550
  /**
6551
+ * @deprecated Please use unreadCount from `getUserUnread` instead.
6552
+ *
6457
6553
  * ```js
6458
6554
  * import { getTotalUnreadCount } from '@amityco/ts-sdk';
6459
6555
  *
@@ -6479,6 +6575,39 @@ const getTotalUnreadCount = (callback) => {
6479
6575
  });
6480
6576
  };
6481
6577
 
6578
+ /**
6579
+ *
6580
+ * ```js
6581
+ * import { getUserUnread } from '@amityco/ts-sdk';
6582
+ *
6583
+ * const unsubscribe = getUserUnread(response => {
6584
+ * userUnread = response.data;
6585
+ * });
6586
+ * ```
6587
+ *
6588
+ * Observe current user's unread including unreadCount and hasMentioned from {@link Amity.UserMarker}
6589
+ *
6590
+ * @param callback the function to call when new data are available
6591
+ * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the events
6592
+ *
6593
+ * @category Message Live Object
6594
+ */
6595
+ const getUserUnread = (callback) => {
6596
+ const { _id: userId } = getActiveUser();
6597
+ if (!userId)
6598
+ throw new ASCError('The _id has not been defined in ActiveUser', 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
6599
+ const callbackDataSelector = (data) => {
6600
+ var _a;
6601
+ return {
6602
+ unreadCount: (_a = data === null || data === void 0 ? void 0 : data.unreadCount) !== null && _a !== void 0 ? _a : 0,
6603
+ hasMentioned: !!(data === null || data === void 0 ? void 0 : data.hasMentioned),
6604
+ };
6605
+ };
6606
+ return liveObject(userId, callback, 'userId', getUserMarker, [onUserMarkerFetched], {
6607
+ callbackDataSelector,
6608
+ });
6609
+ };
6610
+
6482
6611
  /**
6483
6612
  * ```js
6484
6613
  * import { getChannelByIds } from '@amityco/ts-sdk'
@@ -6852,9 +6981,10 @@ const markAsRead = async (channelId) => {
6852
6981
  const client = getActiveClient();
6853
6982
  client.log('channel/markAsRead', channelId);
6854
6983
  const { data } = await client.http.put(`/api/v1/markers/channels/${channelId}/mark-read`);
6984
+ const { userMarkers: userMarkersPayload, userEntityMarkers: userEntityMarkersPayload, userFeedMarkers: userFeedMarkersPayload } = data, rest = __rest(data, ["userMarkers", "userEntityMarkers", "userFeedMarkers"]);
6855
6985
  const cachedAt = client.cache && Date.now();
6856
6986
  if (client.cache)
6857
- ingestInCache(data, { cachedAt });
6987
+ ingestInCache(Object.assign({ userMarkers: convertUserMarkerResponse(userMarkersPayload), userEntityMarkers: convertChannelMarkerResponse(userEntityMarkersPayload), userFeedMarkers: convertSubChannelMarkerResponse(userFeedMarkersPayload) }, rest), { cachedAt });
6858
6988
  return true;
6859
6989
  };
6860
6990
 
@@ -7240,6 +7370,8 @@ const queryChannels = async (query) => {
7240
7370
  return { data: channels, cachedAt, prevPage, nextPage };
7241
7371
  };
7242
7372
 
7373
+ const uuid = () => nativeIdGenerator__default["default"].v4().toString();
7374
+
7243
7375
  /* begin_public_function
7244
7376
  id: channel.query
7245
7377
  */
@@ -7272,7 +7404,7 @@ const getChannels = (params, callback, config) => {
7272
7404
  const limit = queryLimit !== null && queryLimit !== void 0 ? queryLimit : COLLECTION_DEFAULT_PAGINATION_LIMIT;
7273
7405
  const { policy = COLLECTION_DEFAULT_CACHING_POLICY } = config !== null && config !== void 0 ? config : {};
7274
7406
  const disposers = [];
7275
- const cacheKey = ['channel', 'collection', {}];
7407
+ const cacheKey = ['channel', 'collection', uuid()];
7276
7408
  const responder = (data) => {
7277
7409
  var _a, _b;
7278
7410
  let channels = (_a = data.data
@@ -7358,7 +7490,7 @@ const getChannels = (params, callback, config) => {
7358
7490
  };
7359
7491
  disposers.push(onChannelCreated(realtimeRouter()), onChannelDeleted(realtimeRouter()), onChannelUpdated(realtimeRouter()), onChannelMuted(realtimeRouter()), onChannelJoined(realtimeRouter()), onChannelLeft(realtimeRouter()), onChannelMemberAdded(realtimeRouter()), onChannelMemberRemoved(realtimeRouter()), convertEventPayload(onChannelMarkerFetched, 'entityId', 'channel')(realtimeRouter()));
7360
7492
  onFetch(true);
7361
- dropFromCache(cacheKey);
7493
+ disposers.push(() => dropFromCache(cacheKey));
7362
7494
  return () => {
7363
7495
  log(`getChannels(tmpid: ${timestamp}) > dispose`);
7364
7496
  disposers.forEach(fn => fn());
@@ -7887,8 +8019,12 @@ var index$g = /*#__PURE__*/Object.freeze({
7887
8019
  const onUserMarkerSync = (callback) => {
7888
8020
  const client = getActiveClient();
7889
8021
  const filter = (payload) => {
7890
- ingestInCache(payload);
7891
- callback(payload.userMarkers[0]);
8022
+ const { userMarkers: userMarkersPayload, userEntityMarkers: userEntityMarkersPayload, userFeedMarkers: userFeedMarkersPayload } = payload, rest = __rest(payload, ["userMarkers", "userEntityMarkers", "userFeedMarkers"]);
8023
+ const userMarkers = convertUserMarkerResponse(userMarkersPayload);
8024
+ const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload);
8025
+ const userFeedMarker = convertSubChannelMarkerResponse(userFeedMarkersPayload);
8026
+ ingestInCache(Object.assign({ userMarkers, userEntityMarkers, userFeedMarker }, rest));
8027
+ callback(userMarkers[0]);
7892
8028
  };
7893
8029
  return createEventSubscriber(client, 'UserMarker/onUserMarkerSync', 'marker.user-sync', filter);
7894
8030
  };
@@ -8395,6 +8531,7 @@ var index$f = /*#__PURE__*/Object.freeze({
8395
8531
  onClientBanned: onClientBanned,
8396
8532
  onSessionStateChange: onSessionStateChange,
8397
8533
  getTotalUnreadCount: getTotalUnreadCount,
8534
+ getUserUnread: getUserUnread,
8398
8535
  getMarkerSyncEvents: getMarkerSyncEvents,
8399
8536
  setMarkerSyncEvents: setMarkerSyncEvents,
8400
8537
  pushMarkerSyncEvent: pushMarkerSyncEvent,
@@ -12152,8 +12289,6 @@ getMessages$1.locally = (messageIds) => {
12152
12289
  };
12153
12290
  };
12154
12291
 
12155
- const uuid = () => nativeIdGenerator__default["default"].v4().toString();
12156
-
12157
12292
  const getLocalId = () => `LOCAL_${uuid()}`;
12158
12293
  // FIXME: temp solution
12159
12294
  let uniqueId;
@@ -12525,9 +12660,10 @@ const markAsDelivered = async (subChannelId, messageId) => {
12525
12660
  const client = getActiveClient();
12526
12661
  client.log('message/markAsDelivered', subChannelId, messageId);
12527
12662
  const { data } = await client.http.put(`/api/v1/markers/message-feeds/${subChannelId}/mark-delivering`, { messageId });
12663
+ const { userMarkers, userEntityMarkers, userFeedMarkers } = data, rest = __rest(data, ["userMarkers", "userEntityMarkers", "userFeedMarkers"]);
12528
12664
  const cachedAt = client.cache && Date.now();
12529
12665
  if (client.cache)
12530
- ingestInCache(data, { cachedAt });
12666
+ ingestInCache(Object.assign({ userMarkers: convertUserMarkerResponse(userMarkers), userEntityMarkers: convertChannelMarkerResponse(userEntityMarkers), userFeedMarkers: convertSubChannelMarkerResponse(userFeedMarkers) }, rest), { cachedAt });
12531
12667
  return true;
12532
12668
  };
12533
12669
 
@@ -12557,10 +12693,10 @@ const getReadUsers = async (query) => {
12557
12693
  token: toToken(page, 'afterbeforeraw'),
12558
12694
  } }),
12559
12695
  });
12560
- const { paging, publicUserIds: readUsers } = data, payload = __rest(data, ["paging", "publicUserIds"]);
12696
+ const { paging, publicUserIds: readUsers, userFeedMarkers } = data, payload = __rest(data, ["paging", "publicUserIds", "userFeedMarkers"]);
12561
12697
  const cachedAt = client.cache && Date.now();
12562
12698
  if (client.cache) {
12563
- ingestInCache(payload, { cachedAt });
12699
+ ingestInCache(Object.assign(Object.assign({}, payload), { userFeedMarkers: convertSubChannelMarkerResponse(userFeedMarkers) }), { cachedAt });
12564
12700
  const cacheKey = [
12565
12701
  'read-user',
12566
12702
  'query',
@@ -12638,10 +12774,10 @@ const getDeliveredUsers = async (query) => {
12638
12774
  token: toToken(page, 'afterbeforeraw'),
12639
12775
  } }),
12640
12776
  });
12641
- const { paging, publicUserIds: deliveredUsers } = data, payload = __rest(data, ["paging", "publicUserIds"]);
12777
+ const { paging, publicUserIds: deliveredUsers, userFeedMarkers } = data, payload = __rest(data, ["paging", "publicUserIds", "userFeedMarkers"]);
12642
12778
  const cachedAt = client.cache && Date.now();
12643
12779
  if (client.cache) {
12644
- ingestInCache(payload, { cachedAt });
12780
+ ingestInCache(Object.assign(Object.assign({}, payload), { userFeedMarkers: convertSubChannelMarkerResponse(userFeedMarkers) }), { cachedAt });
12645
12781
  const cacheKey = [
12646
12782
  'delivered-user',
12647
12783
  'query',