@amityco/ts-sdk-react-native 6.32.2 → 6.32.3-89ca939.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 (113) hide show
  1. package/.env +26 -26
  2. package/dist/@types/core/events.d.ts +1 -1
  3. package/dist/@types/core/events.d.ts.map +1 -1
  4. package/dist/@types/core/model.d.ts +1 -1
  5. package/dist/@types/core/model.d.ts.map +1 -1
  6. package/dist/@types/core/payload.d.ts +1 -1
  7. package/dist/@types/core/payload.d.ts.map +1 -1
  8. package/dist/@types/domains/channel.d.ts +1 -0
  9. package/dist/@types/domains/channel.d.ts.map +1 -1
  10. package/dist/channelRepository/api/createChannel.d.ts.map +1 -1
  11. package/dist/channelRepository/api/getChannel.d.ts.map +1 -1
  12. package/dist/channelRepository/api/getChannelByIds.d.ts.map +1 -1
  13. package/dist/channelRepository/api/updateChannel.d.ts.map +1 -1
  14. package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberQueryStreamController.d.ts +2 -2
  15. package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberQueryStreamController.d.ts.map +1 -1
  16. package/dist/channelRepository/events/onChannelCreated.d.ts +1 -1
  17. package/dist/channelRepository/events/onChannelCreated.d.ts.map +1 -1
  18. package/dist/channelRepository/events/onChannelDeleted.d.ts +1 -1
  19. package/dist/channelRepository/events/onChannelDeleted.d.ts.map +1 -1
  20. package/dist/channelRepository/events/onChannelFetched.d.ts +1 -1
  21. package/dist/channelRepository/events/onChannelFetched.d.ts.map +1 -1
  22. package/dist/channelRepository/events/onChannelJoined.d.ts +1 -1
  23. package/dist/channelRepository/events/onChannelJoined.d.ts.map +1 -1
  24. package/dist/channelRepository/events/onChannelLeft.d.ts +1 -1
  25. package/dist/channelRepository/events/onChannelLeft.d.ts.map +1 -1
  26. package/dist/channelRepository/events/onChannelMemberAdded.d.ts +1 -1
  27. package/dist/channelRepository/events/onChannelMemberAdded.d.ts.map +1 -1
  28. package/dist/channelRepository/events/onChannelMemberBanned.d.ts +1 -1
  29. package/dist/channelRepository/events/onChannelMemberBanned.d.ts.map +1 -1
  30. package/dist/channelRepository/events/onChannelMemberRemoved.d.ts +1 -1
  31. package/dist/channelRepository/events/onChannelMemberRemoved.d.ts.map +1 -1
  32. package/dist/channelRepository/events/onChannelMemberRoleAdded.d.ts +1 -1
  33. package/dist/channelRepository/events/onChannelMemberRoleAdded.d.ts.map +1 -1
  34. package/dist/channelRepository/events/onChannelMemberRoleRemoved.d.ts +1 -1
  35. package/dist/channelRepository/events/onChannelMemberRoleRemoved.d.ts.map +1 -1
  36. package/dist/channelRepository/events/onChannelMemberUnbanned.d.ts +1 -1
  37. package/dist/channelRepository/events/onChannelMemberUnbanned.d.ts.map +1 -1
  38. package/dist/channelRepository/events/onChannelMuted.d.ts +1 -1
  39. package/dist/channelRepository/events/onChannelMuted.d.ts.map +1 -1
  40. package/dist/channelRepository/events/onChannelResolved.d.ts +1 -1
  41. package/dist/channelRepository/events/onChannelResolved.d.ts.map +1 -1
  42. package/dist/channelRepository/events/onChannelUpdated.d.ts +1 -1
  43. package/dist/channelRepository/events/onChannelUpdated.d.ts.map +1 -1
  44. package/dist/channelRepository/events/onUserDeleted.d.ts +1 -1
  45. package/dist/channelRepository/events/onUserDeleted.d.ts.map +1 -1
  46. package/dist/channelRepository/observers/getChannels/ChannelLiveCollectionController.d.ts.map +1 -1
  47. package/dist/channelRepository/observers/getChannels/ChannelQueryStreamController.d.ts +2 -2
  48. package/dist/channelRepository/observers/getChannels/ChannelQueryStreamController.d.ts.map +1 -1
  49. package/dist/channelRepository/observers/observeChannel.d.ts.map +1 -1
  50. package/dist/channelRepository/observers/observeChannels.d.ts.map +1 -1
  51. package/dist/channelRepository/utils/constructChannelDynamicValue.d.ts +2 -0
  52. package/dist/channelRepository/utils/constructChannelDynamicValue.d.ts.map +1 -0
  53. package/dist/channelRepository/utils/prepareChannelPayload.d.ts +1 -1
  54. package/dist/channelRepository/utils/prepareChannelPayload.d.ts.map +1 -1
  55. package/dist/channelRepository/utils/resolveUnreadInfoOnChannelEvent.d.ts +1 -1
  56. package/dist/channelRepository/utils/resolveUnreadInfoOnChannelEvent.d.ts.map +1 -1
  57. package/dist/client/utils/removeChannelMarkerCache.d.ts +1 -1
  58. package/dist/client/utils/removeChannelMarkerCache.d.ts.map +1 -1
  59. package/dist/communityRepository/communityMembership/events/utils.d.ts.map +1 -1
  60. package/dist/communityRepository/utils/communityWithMembership.d.ts.map +1 -1
  61. package/dist/index.cjs.js +157 -134
  62. package/dist/index.esm.js +157 -134
  63. package/dist/index.umd.js +3 -3
  64. package/dist/marker/events/onMessageMarked.d.ts.map +1 -1
  65. package/dist/marker/utils/reCalculateChannelUnreadInfo.d.ts.map +1 -1
  66. package/dist/marker/utils/updateSubChannelUnreadFromMessage.d.ts.map +1 -1
  67. package/dist/messageRepository/events/onMessageCreated.d.ts.map +1 -1
  68. package/dist/utils/linkedObject/channelLinkedObject.d.ts.map +1 -1
  69. package/dist/utils/shallowClone.d.ts +1 -1
  70. package/dist/utils/shallowClone.d.ts.map +1 -1
  71. package/package.json +2 -2
  72. package/src/@types/core/events.ts +1 -1
  73. package/src/@types/core/model.ts +1 -1
  74. package/src/@types/core/payload.ts +1 -1
  75. package/src/@types/domains/channel.ts +5 -0
  76. package/src/channelRepository/api/createChannel.ts +2 -1
  77. package/src/channelRepository/api/getChannel.ts +4 -3
  78. package/src/channelRepository/api/getChannelByIds.ts +2 -1
  79. package/src/channelRepository/api/updateChannel.ts +2 -1
  80. package/src/channelRepository/channelMembership/observers/getMembers/ChannelMemberQueryStreamController.ts +2 -2
  81. package/src/channelRepository/events/onChannelCreated.ts +2 -2
  82. package/src/channelRepository/events/onChannelDeleted.ts +2 -2
  83. package/src/channelRepository/events/onChannelFetched.ts +3 -3
  84. package/src/channelRepository/events/onChannelJoined.ts +5 -2
  85. package/src/channelRepository/events/onChannelLeft.ts +5 -2
  86. package/src/channelRepository/events/onChannelMemberAdded.ts +5 -2
  87. package/src/channelRepository/events/onChannelMemberBanned.ts +5 -2
  88. package/src/channelRepository/events/onChannelMemberRemoved.ts +5 -2
  89. package/src/channelRepository/events/onChannelMemberRoleAdded.ts +5 -2
  90. package/src/channelRepository/events/onChannelMemberRoleRemoved.ts +5 -2
  91. package/src/channelRepository/events/onChannelMemberUnbanned.ts +5 -2
  92. package/src/channelRepository/events/onChannelMuted.ts +3 -2
  93. package/src/channelRepository/events/onChannelResolved.ts +2 -2
  94. package/src/channelRepository/events/onChannelUpdated.ts +2 -2
  95. package/src/channelRepository/events/onUserDeleted.ts +8 -2
  96. package/src/channelRepository/observers/getChannels/ChannelLiveCollectionController.ts +11 -7
  97. package/src/channelRepository/observers/getChannels/ChannelQueryStreamController.ts +2 -2
  98. package/src/channelRepository/observers/observeChannel.ts +5 -4
  99. package/src/channelRepository/observers/observeChannels.ts +6 -4
  100. package/src/channelRepository/utils/constructChannelDynamicValue.ts +22 -0
  101. package/src/channelRepository/utils/prepareChannelPayload.ts +1 -13
  102. package/src/channelRepository/utils/resolveUnreadInfoOnChannelEvent.ts +2 -2
  103. package/src/channelRepository/utils/updateChannelCache.ts +1 -1
  104. package/src/client/utils/removeChannelMarkerCache.ts +1 -1
  105. package/src/communityRepository/communityMembership/events/utils.ts +4 -2
  106. package/src/communityRepository/utils/communityWithMembership.ts +15 -8
  107. package/src/marker/events/onMessageMarked.ts +0 -2
  108. package/src/marker/utils/reCalculateChannelUnreadInfo.ts +6 -0
  109. package/src/marker/utils/updateSubChannelUnreadFromMessage.ts +10 -0
  110. package/src/messageRepository/events/onMessageCreated.ts +2 -0
  111. package/src/subChannelRepository/utils/updateSubChannelCache.ts +1 -1
  112. package/src/utils/linkedObject/channelLinkedObject.ts +3 -3
  113. package/src/utils/shallowClone.ts +8 -5
package/dist/index.esm.js CHANGED
@@ -89,8 +89,8 @@ const PostContentType = Object.freeze({
89
89
 
90
90
  function getVersion() {
91
91
  try {
92
- // the string ''v6.32.2-esm'' should be replaced by actual value by @rollup/plugin-replace
93
- return 'v6.32.2-esm';
92
+ // the string ''v6.32.3-esm'' should be replaced by actual value by @rollup/plugin-replace
93
+ return 'v6.32.3-esm';
94
94
  }
95
95
  catch (error) {
96
96
  return '__dev__';
@@ -21720,6 +21720,7 @@ const reCalculateChannelUnreadInfo = (channelId) => {
21720
21720
  var _a;
21721
21721
  const cacheKeyChannelUnread = ['channelUnreadInfo', 'get', channelId];
21722
21722
  const cacheChannelUnreadInfo = (_a = pullFromCache(cacheKeyChannelUnread)) === null || _a === void 0 ? void 0 : _a.data;
21723
+ console.log('[reCalculateChannelUnreadInfo] cacheChannelUnreadInfo => ', cacheChannelUnreadInfo);
21723
21724
  const cacheKeySubChannelUnread = ['subChannelUnreadInfo', 'get'];
21724
21725
  const cachedSubChannelUnreadInfo = queryCache(cacheKeySubChannelUnread);
21725
21726
  let channelUnreads = 0;
@@ -21728,9 +21729,11 @@ const reCalculateChannelUnreadInfo = (channelId) => {
21728
21729
  const subChannelUnreadsInfo = cachedSubChannelUnreadInfo === null || cachedSubChannelUnreadInfo === void 0 ? void 0 : cachedSubChannelUnreadInfo.filter(({ data }) => {
21729
21730
  return data.channelId === channelId && !data.isDeleted;
21730
21731
  });
21732
+ console.log('[reCalculateChannelUnreadInfo] subChannelUnreadsInfo => ', subChannelUnreadsInfo);
21731
21733
  channelUnreads = subChannelUnreadsInfo
21732
21734
  .map(({ data }) => data.unreadCount)
21733
21735
  .reduce((acc, cur) => acc + cur, 0);
21736
+ console.log('[reCalculateChannelUnreadInfo] channelUnreads => ', channelUnreads);
21734
21737
  isMentioned = subChannelUnreadsInfo.some(({ data }) => data.isMentioned);
21735
21738
  }
21736
21739
  const channelUnreadInfo = Object.assign(Object.assign({}, (cacheChannelUnreadInfo !== null && cacheChannelUnreadInfo !== void 0 ? cacheChannelUnreadInfo : {
@@ -22016,8 +22019,28 @@ const markAsRead = async (channelId) => {
22016
22019
  return true;
22017
22020
  };
22018
22021
 
22022
+ /**
22023
+ * ```js
22024
+ * import { shallowClone } from '~/utils/shallowClone'
22025
+ * const newObj = shallowClone(obj)
22026
+ * ```
22027
+ *
22028
+ * Clone an object with same prototype and properties
22029
+ *
22030
+ * @param obj the object to clone
22031
+ * @returns new object with same prototype and properties
22032
+ *
22033
+ * @category utility
22034
+ * @private
22035
+ */
22036
+ function shallowClone(source, target) {
22037
+ return Object.create(Object.getPrototypeOf(source), Object.assign(Object.assign({}, Object.getOwnPropertyDescriptors(source)), Object.getOwnPropertyDescriptors(target)));
22038
+ }
22039
+
22019
22040
  const channelLinkedObject = (channel) => {
22020
- return Object.assign(Object.assign({}, channel), { markAsRead: () => markAsRead(channel.channelInternalId) });
22041
+ return shallowClone(channel, {
22042
+ markAsRead: () => markAsRead(channel.channelInternalId),
22043
+ });
22021
22044
  };
22022
22045
 
22023
22046
  const adLinkedObject = (ad) => {
@@ -22188,31 +22211,10 @@ const updateSubChannelMessagePreviewCache = (rawPayload) => {
22188
22211
  ingestInCache(newData);
22189
22212
  };
22190
22213
 
22191
- /**
22192
- * ```js
22193
- * import { shallowClone } from '~/utils/shallowClone'
22194
- * const newObj = shallowClone(obj)
22195
- * ```
22196
- *
22197
- * Clone an object with same prototype and properties
22198
- *
22199
- * @param obj the object to clone
22200
- * @returns new object with same prototype and properties
22201
- *
22202
- * @category utility
22203
- * @private
22204
- */
22205
- function shallowClone(obj) {
22206
- const clone = Object.create(Object.getPrototypeOf(obj));
22207
- const descriptors = Object.getOwnPropertyDescriptors(obj);
22208
- Object.defineProperties(clone, descriptors);
22209
- return clone;
22210
- }
22211
-
22212
22214
  function updateSubChannelCache(subChannelId, subChannel, params) {
22213
22215
  pushToCache(['subChannel', 'get', subChannelId],
22214
22216
  // eslint-disable-next-line prefer-object-spread
22215
- Object.assign(shallowClone(subChannel), params));
22217
+ shallowClone(subChannel, params));
22216
22218
  }
22217
22219
 
22218
22220
  const handleMessageCreated = async (message) => {
@@ -22391,81 +22393,6 @@ const handleSubChannelUpdated = async (subChannel) => {
22391
22393
  }
22392
22394
  };
22393
22395
 
22394
- const getCachedMarker$1 = (entityId) => {
22395
- var _a;
22396
- const key = {
22397
- entityId,
22398
- userId: getActiveUser()._id,
22399
- };
22400
- return (_a = pullFromCache([
22401
- 'channelMarker',
22402
- 'get',
22403
- getResolver('channelMarker')(key),
22404
- ])) === null || _a === void 0 ? void 0 : _a.data;
22405
- };
22406
- const getUnreadInfoCached$1 = (channelId) => {
22407
- var _a;
22408
- return (_a = pullFromCache(['channelUnreadInfo', 'get', channelId])) === null || _a === void 0 ? void 0 : _a.data;
22409
- };
22410
- /**
22411
- * The function use to get value of unreadCount field.
22412
- * function will get the value from marker params first, if there is no hasMentioned field, will look in to the cache.
22413
- *
22414
- * If consistent mode is enabled, the function will return the value from the channelUnreadCountInfo cache.
22415
- * If not, the function will return the value from the channelMarker cache.
22416
- * If not found in the both cache, use `0` as defaul value.
22417
- */
22418
- const getSubChannelsUnreadCount = (channel, marker) => {
22419
- var _a, _b, _c, _d, _e;
22420
- const client = getActiveClient();
22421
- if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
22422
- // Marker service API uses channelInternalId as channelId
22423
- return (_b = (_a = getUnreadInfoCached$1(channel.channelInternalId)) === null || _a === void 0 ? void 0 : _a.unreadCount) !== null && _b !== void 0 ? _b : 0;
22424
- }
22425
- if (marker === null || marker === void 0 ? void 0 : marker.isDeleted) {
22426
- // NOTE: This is a temporary solution to handle the channel marker when the user is forced to
22427
- // leave the channel because currently backend can't handle this, so every time a user is banned
22428
- // from a channel or the channel is deleted the channel's unread count will reset to zero
22429
- return 0;
22430
- }
22431
- return (_e = (_c = marker === null || marker === void 0 ? void 0 : marker.unreadCount) !== null && _c !== void 0 ? _c : (_d = getCachedMarker$1(channel.channelInternalId)) === null || _d === void 0 ? void 0 : _d.unreadCount) !== null && _e !== void 0 ? _e : 0;
22432
- };
22433
-
22434
- const getCachedMarker = (entityId) => {
22435
- var _a;
22436
- const key = {
22437
- entityId,
22438
- userId: getActiveUser()._id,
22439
- };
22440
- return (_a = pullFromCache([
22441
- 'channelMarker',
22442
- 'get',
22443
- getResolver('channelMarker')(key),
22444
- ])) === null || _a === void 0 ? void 0 : _a.data;
22445
- };
22446
- const getUnreadInfoCached = (channelId) => {
22447
- var _a;
22448
- return (_a = pullFromCache(['channelUnreadInfo', 'get', channelId])) === null || _a === void 0 ? void 0 : _a.data;
22449
- };
22450
- /**
22451
- * The function use to get value of hasMentioned or isMentioned field.
22452
- * function will get the value from marker params first, if there is no hasMentioned field, will look in to the cache.
22453
- *
22454
- * If consistent mode is enabled, the function will return the value from the channelUnreadCountInfo cache.
22455
- * If not, the function will return the value from the channelMarker cache.
22456
- * If not found in the both cache, use `false` as defaul value.
22457
- */
22458
- const getChannelIsMentioned = (channel, marker) => {
22459
- var _a, _b, _c, _d;
22460
- const client = getActiveClient();
22461
- if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
22462
- return (_b = (_a = getUnreadInfoCached(channel.channelPublicId)) === null || _a === void 0 ? void 0 : _a.isMentioned) !== null && _b !== void 0 ? _b : false;
22463
- }
22464
- return (marker === null || marker === void 0 ? void 0 : marker.hasMentioned) !== undefined
22465
- ? marker === null || marker === void 0 ? void 0 : marker.hasMentioned
22466
- : (_d = (_c = getCachedMarker(channel.channelPublicId)) === null || _c === void 0 ? void 0 : _c.hasMentioned) !== null && _d !== void 0 ? _d : false;
22467
- };
22468
-
22469
22396
  function convertRawUserToInternalUser(rawUser) {
22470
22397
  return Object.assign(Object.assign({}, rawUser), { isGlobalBanned: (rawUser === null || rawUser === void 0 ? void 0 : rawUser.isGlobalBan) || false });
22471
22398
  }
@@ -22483,18 +22410,7 @@ function convertFromRaw$2(channel, options = { isMessagePreviewUpdated: true })
22483
22410
  if ((messagePreviewChannelCache === null || messagePreviewChannelCache === void 0 ? void 0 : messagePreviewChannelCache.messagePreviewId) && !options.isMessagePreviewUpdated) {
22484
22411
  messagePreviewId = messagePreviewChannelCache.messagePreviewId;
22485
22412
  }
22486
- return Object.assign(Object.assign({ get unreadCount() {
22487
- return getSubChannelsUnreadCount(channel);
22488
- },
22489
- get hasMentioned() {
22490
- return getChannelIsMentioned(channel);
22491
- },
22492
- get isMentioned() {
22493
- return getChannelIsMentioned(channel);
22494
- },
22495
- get subChannelsUnreadCount() {
22496
- return getSubChannelsUnreadCount(channel);
22497
- } }, channel), { defaultSubChannelId: channel.channelInternalId, isUnreadCountSupport: isUnreadCountSupport$2(channel), messagePreviewId });
22413
+ return Object.assign(Object.assign({}, channel), { defaultSubChannelId: channel.channelInternalId, isUnreadCountSupport: isUnreadCountSupport$2(channel), messagePreviewId });
22498
22414
  }
22499
22415
  const preUpdateChannelCache = (rawPayload, options = { isMessagePreviewUpdated: true }) => {
22500
22416
  ingestInCache({
@@ -22616,6 +22532,98 @@ const prepareUnreadCountInfo = async (rawPayload) => {
22616
22532
  client.log('channel/prepareUnreadCountInfo', rawPayload.channels);
22617
22533
  };
22618
22534
 
22535
+ const getCachedMarker$1 = (entityId) => {
22536
+ var _a;
22537
+ const key = {
22538
+ entityId,
22539
+ userId: getActiveUser()._id,
22540
+ };
22541
+ return (_a = pullFromCache([
22542
+ 'channelMarker',
22543
+ 'get',
22544
+ getResolver('channelMarker')(key),
22545
+ ])) === null || _a === void 0 ? void 0 : _a.data;
22546
+ };
22547
+ const getUnreadInfoCached$1 = (channelId) => {
22548
+ var _a;
22549
+ return (_a = pullFromCache(['channelUnreadInfo', 'get', channelId])) === null || _a === void 0 ? void 0 : _a.data;
22550
+ };
22551
+ /**
22552
+ * The function use to get value of hasMentioned or isMentioned field.
22553
+ * function will get the value from marker params first, if there is no hasMentioned field, will look in to the cache.
22554
+ *
22555
+ * If consistent mode is enabled, the function will return the value from the channelUnreadCountInfo cache.
22556
+ * If not, the function will return the value from the channelMarker cache.
22557
+ * If not found in the both cache, use `false` as defaul value.
22558
+ */
22559
+ const getChannelIsMentioned = (channel, marker) => {
22560
+ var _a, _b, _c, _d;
22561
+ const client = getActiveClient();
22562
+ if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
22563
+ return (_b = (_a = getUnreadInfoCached$1(channel.channelPublicId)) === null || _a === void 0 ? void 0 : _a.isMentioned) !== null && _b !== void 0 ? _b : false;
22564
+ }
22565
+ return (marker === null || marker === void 0 ? void 0 : marker.hasMentioned) !== undefined
22566
+ ? marker === null || marker === void 0 ? void 0 : marker.hasMentioned
22567
+ : (_d = (_c = getCachedMarker$1(channel.channelPublicId)) === null || _c === void 0 ? void 0 : _c.hasMentioned) !== null && _d !== void 0 ? _d : false;
22568
+ };
22569
+
22570
+ const getCachedMarker = (entityId) => {
22571
+ var _a;
22572
+ const key = {
22573
+ entityId,
22574
+ userId: getActiveUser()._id,
22575
+ };
22576
+ return (_a = pullFromCache([
22577
+ 'channelMarker',
22578
+ 'get',
22579
+ getResolver('channelMarker')(key),
22580
+ ])) === null || _a === void 0 ? void 0 : _a.data;
22581
+ };
22582
+ const getUnreadInfoCached = (channelId) => {
22583
+ var _a;
22584
+ return (_a = pullFromCache(['channelUnreadInfo', 'get', channelId])) === null || _a === void 0 ? void 0 : _a.data;
22585
+ };
22586
+ /**
22587
+ * The function use to get value of unreadCount field.
22588
+ * function will get the value from marker params first, if there is no hasMentioned field, will look in to the cache.
22589
+ *
22590
+ * If consistent mode is enabled, the function will return the value from the channelUnreadCountInfo cache.
22591
+ * If not, the function will return the value from the channelMarker cache.
22592
+ * If not found in the both cache, use `0` as defaul value.
22593
+ */
22594
+ const getSubChannelsUnreadCount = (channel, marker) => {
22595
+ var _a, _b, _c, _d, _e;
22596
+ const client = getActiveClient();
22597
+ if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
22598
+ // Marker service API uses channelInternalId as channelId
22599
+ return (_b = (_a = getUnreadInfoCached(channel.channelInternalId)) === null || _a === void 0 ? void 0 : _a.unreadCount) !== null && _b !== void 0 ? _b : 0;
22600
+ }
22601
+ if (marker === null || marker === void 0 ? void 0 : marker.isDeleted) {
22602
+ // NOTE: This is a temporary solution to handle the channel marker when the user is forced to
22603
+ // leave the channel because currently backend can't handle this, so every time a user is banned
22604
+ // from a channel or the channel is deleted the channel's unread count will reset to zero
22605
+ return 0;
22606
+ }
22607
+ return (_e = (_c = marker === null || marker === void 0 ? void 0 : marker.unreadCount) !== null && _c !== void 0 ? _c : (_d = getCachedMarker(channel.channelInternalId)) === null || _d === void 0 ? void 0 : _d.unreadCount) !== null && _e !== void 0 ? _e : 0;
22608
+ };
22609
+
22610
+ const constructChannelDynamicValue = (channel) => {
22611
+ return shallowClone(channel, {
22612
+ get unreadCount() {
22613
+ return getSubChannelsUnreadCount(channel);
22614
+ },
22615
+ get hasMentioned() {
22616
+ return getChannelIsMentioned(channel);
22617
+ },
22618
+ get isMentioned() {
22619
+ return getChannelIsMentioned(channel);
22620
+ },
22621
+ get subChannelsUnreadCount() {
22622
+ return getSubChannelsUnreadCount(channel);
22623
+ },
22624
+ });
22625
+ };
22626
+
22619
22627
  /**
22620
22628
  * ```js
22621
22629
  * import { getChannelByIds } from '@amityco/ts-sdk-react-native'
@@ -22660,7 +22668,7 @@ const getChannelByIds = async (channelIds) => {
22660
22668
  ingestInCache(data, { cachedAt });
22661
22669
  fireEvent('local.channel.fetched', data.channels);
22662
22670
  return {
22663
- data: data.channels.map(channel => LinkedObject.channel(channel)),
22671
+ data: data.channels.map(channel => LinkedObject.channel(constructChannelDynamicValue(channel))),
22664
22672
  cachedAt,
22665
22673
  };
22666
22674
  };
@@ -24750,12 +24758,14 @@ const updateSubChannelUnreadFromMessage = (message) => {
24750
24758
  const client = getActiveClient();
24751
24759
  const cacheKeyUnreadCount = ['subChannelUnreadInfo', 'get', message.messageFeedId];
24752
24760
  const cachedUnreadCount = (_a = pullFromCache(cacheKeyUnreadCount)) === null || _a === void 0 ? void 0 : _a.data;
24761
+ console.log('[updateSubChannelUnreadFromMessage] cachedUnreadCount => ', cachedUnreadCount);
24753
24762
  if (!cachedUnreadCount)
24754
24763
  return;
24755
24764
  const lastSegment = cachedUnreadCount.lastSegment < message.segment
24756
24765
  ? message.segment
24757
24766
  : cachedUnreadCount.lastSegment;
24758
24767
  const unreadCount = lastSegment - cachedUnreadCount.readToSegment;
24768
+ console.log('[updateSubChannelUnreadFromMessage] unreadCount => ', unreadCount);
24759
24769
  let { lastMentionSegment } = cachedUnreadCount;
24760
24770
  if (message.mentionedUsers && message.mentionedUsers.length > 0) {
24761
24771
  message.mentionedUsers.forEach(mention => {
@@ -24767,6 +24777,7 @@ const updateSubChannelUnreadFromMessage = (message) => {
24767
24777
  }
24768
24778
  const updatedCachedUnreadCount = Object.assign(Object.assign({}, cachedUnreadCount), { lastMentionSegment,
24769
24779
  lastSegment, isMentioned: !(cachedUnreadCount.readToSegment >= lastMentionSegment), unreadCount: Math.max(unreadCount, 0) });
24780
+ console.log('[updateSubChannelUnreadFromMessage] updatedCachedUnreadCount => key', cacheKeyUnreadCount, 'value =>', updatedCachedUnreadCount);
24770
24781
  pushToCache(cacheKeyUnreadCount, updatedCachedUnreadCount);
24771
24782
  };
24772
24783
 
@@ -24827,6 +24838,7 @@ const onMessageCreatedMqtt = (callback) => {
24827
24838
  const user = getActiveUser();
24828
24839
  const filter = async (rawPayload) => {
24829
24840
  const payload = await prepareMessagePayload(rawPayload);
24841
+ console.log('onMessageCreatedMqtt', payload);
24830
24842
  // update unreadCountInfo in cache
24831
24843
  if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
24832
24844
  rawPayload.messages.forEach(message => {
@@ -29426,16 +29438,19 @@ function isCurrentUserPartOfCommunity(c, m) {
29426
29438
  }
29427
29439
  /*
29428
29440
  * For mqtt events server will not send user specific data as it's broadcasted
29429
- * to multiple users. Althought this can be calculated, it's not scalable. Hence
29430
- * the client SDK needs to calculate this info
29441
+ * to multiple users and it also does not include communityUser
29442
+ *
29443
+ * Client SDK needs to check for the existing isJoined field in cache data before calculating.
29444
+ * Althought this can be calculated, it's not scalable.
29431
29445
  */
29432
29446
  function updateMembershipStatus(communities, communityUsers) {
29433
29447
  return communities.map(c => {
29434
- if (c.isJoined == null) {
29435
- const isJoined = communityUsers.some(m => isCurrentUserPartOfCommunity(c, m) && isMember(m.communityMembership));
29436
- return Object.assign(Object.assign({}, c), { isJoined });
29448
+ const cachedCommunity = pullFromCache(['community', 'get', c.communityId]);
29449
+ if ((cachedCommunity === null || cachedCommunity === void 0 ? void 0 : cachedCommunity.data) && (cachedCommunity === null || cachedCommunity === void 0 ? void 0 : cachedCommunity.data.hasOwnProperty('isJoined'))) {
29450
+ return Object.assign(Object.assign({}, cachedCommunity.data), c);
29437
29451
  }
29438
- return c;
29452
+ const isJoined = communityUsers.some(m => isCurrentUserPartOfCommunity(c, m) && isMember(m.communityMembership));
29453
+ return Object.assign(Object.assign({}, c), { isJoined });
29439
29454
  });
29440
29455
  }
29441
29456
 
@@ -30929,7 +30944,7 @@ const createChannel = async (bundle) => {
30929
30944
  ingestInCache(data, { cachedAt });
30930
30945
  const { channels } = data;
30931
30946
  return {
30932
- data: channels[0],
30947
+ data: constructChannelDynamicValue(channels[0]),
30933
30948
  cachedAt,
30934
30949
  };
30935
30950
  };
@@ -30963,7 +30978,7 @@ const updateChannel = async (channelId, patch) => {
30963
30978
  ingestInCache(data, { cachedAt });
30964
30979
  const { channels } = data;
30965
30980
  return {
30966
- data: channels.find(channel => channel.channelId === channelId),
30981
+ data: constructChannelDynamicValue(channels.find(channel => channel.channelId === channelId)),
30967
30982
  cachedAt,
30968
30983
  };
30969
30984
  };
@@ -31007,7 +31022,7 @@ const getChannel$1 = async (channelId) => {
31007
31022
  ingestInCache(data, { cachedAt });
31008
31023
  const { channels } = data;
31009
31024
  return {
31010
- data: channels.find(channel => channel.channelId === channelId),
31025
+ data: constructChannelDynamicValue(channels.find(channel => channel.channelId === channelId)),
31011
31026
  cachedAt,
31012
31027
  };
31013
31028
  };
@@ -31037,7 +31052,7 @@ getChannel$1.locally = (channelId) => {
31037
31052
  if (!cached || (cached === null || cached === void 0 ? void 0 : cached.length) === 0)
31038
31053
  return;
31039
31054
  return {
31040
- data: cached[0].data,
31055
+ data: constructChannelDynamicValue(cached[0].data),
31041
31056
  cachedAt: cached[0].cachedAt,
31042
31057
  };
31043
31058
  };
@@ -31235,10 +31250,10 @@ const observeChannel = (channelId, callback) => {
31235
31250
  if (((_a = result.data) === null || _a === void 0 ? void 0 : _a.channelId) !== channelId)
31236
31251
  return;
31237
31252
  if (callback instanceof Function)
31238
- return callback(Object.assign(Object.assign({}, result), { data: LinkedObject.channel(result.data) }));
31253
+ return callback(Object.assign(Object.assign({}, result), { data: LinkedObject.channel(constructChannelDynamicValue(result.data)) }));
31239
31254
  if (action !== 'onFetch')
31240
- (_b = callback.onEvent) === null || _b === void 0 ? void 0 : _b.call(callback, action, Object.assign(Object.assign({}, result), { data: LinkedObject.channel(result.data) }));
31241
- (_c = callback[action]) === null || _c === void 0 ? void 0 : _c.call(callback, Object.assign(Object.assign({}, result), { data: LinkedObject.channel(result.data) }));
31255
+ (_b = callback.onEvent) === null || _b === void 0 ? void 0 : _b.call(callback, action, Object.assign(Object.assign({}, result), { data: LinkedObject.channel(constructChannelDynamicValue(result.data)) }));
31256
+ (_c = callback[action]) === null || _c === void 0 ? void 0 : _c.call(callback, Object.assign(Object.assign({}, result), { data: LinkedObject.channel(constructChannelDynamicValue(result.data)) }));
31242
31257
  };
31243
31258
  const disposers = [];
31244
31259
  disposers.push(onChannelUpdated(data => router({ data, loading: false, origin: 'event' }, "onUpdate" /* Amity.ChannelActionType.OnUpdate */)), onChannelDeleted(data => router({ data, loading: false, origin: 'event' }, "onDelete" /* Amity.ChannelActionType.OnDelete */)), onChannelJoined(data => router({ data, loading: false, origin: 'event' }, "onJoin" /* Amity.ChannelActionType.OnJoin */)), onChannelLeft(data => router({ data, loading: false, origin: 'event' }, "onLeft" /* Amity.ChannelActionType.OnLeft */)), onChannelMuted(data => router({ data, loading: false, origin: 'event' }, "onMute" /* Amity.ChannelActionType.OnMute */)), onChannelMemberAdded(data => router({ data, loading: false, origin: 'event' }, "onMemberAdded" /* Amity.ChannelActionType.OnMemberAdded */)), onChannelMemberRemoved(data => router({ data, loading: false, origin: 'event' }, "onMemberRemoved" /* Amity.ChannelActionType.OnMemberRemoved */)), convertEventPayload(onChannelMarkerFetched, 'entityId', 'channel')(data => router({ data, loading: false, origin: 'event' }, "onUpdate" /* Amity.ChannelActionType.OnUpdate */)));
@@ -31272,9 +31287,9 @@ const observeChannels = (callback) => {
31272
31287
  const router = (channel, action) => {
31273
31288
  var _a, _b;
31274
31289
  if (callback instanceof Function)
31275
- return callback(LinkedObject.channel(channel));
31276
- (_a = callback.onEvent) === null || _a === void 0 ? void 0 : _a.call(callback, action, LinkedObject.channel(channel));
31277
- (_b = callback[action]) === null || _b === void 0 ? void 0 : _b.call(callback, LinkedObject.channel(channel));
31290
+ return callback(LinkedObject.channel(constructChannelDynamicValue(channel)));
31291
+ (_a = callback.onEvent) === null || _a === void 0 ? void 0 : _a.call(callback, action, LinkedObject.channel(constructChannelDynamicValue(channel)));
31292
+ (_b = callback[action]) === null || _b === void 0 ? void 0 : _b.call(callback, LinkedObject.channel(constructChannelDynamicValue(channel)));
31278
31293
  };
31279
31294
  disposers.push(onChannelCreated(data => router(data, "onCreate" /* Amity.ChannelActionType.OnCreate */)), onChannelUpdated(data => router(data, "onUpdate" /* Amity.ChannelActionType.OnUpdate */)), onChannelDeleted(data => router(data, "onDelete" /* Amity.ChannelActionType.OnDelete */)), onChannelJoined(data => router(data, "onJoin" /* Amity.ChannelActionType.OnJoin */)), onChannelLeft(data => router(data, "onLeft" /* Amity.ChannelActionType.OnLeft */)), onChannelMuted(data => router(data, "onMute" /* Amity.ChannelActionType.OnMute */)), onChannelMemberAdded(data => router(data, "onMemberAdded" /* Amity.ChannelActionType.OnMemberAdded */)), onChannelMemberRemoved(data => router(data, "onMemberRemoved" /* Amity.ChannelActionType.OnMemberRemoved */)), convertEventPayload(onChannelMarkerFetched, 'entityId', 'channel')(data => router(data, "onUpdate" /* Amity.ChannelActionType.OnUpdate */)));
31280
31295
  return () => {
@@ -31379,7 +31394,7 @@ const onSubChannelUpdated = (callback) => {
31379
31394
  function updateChannelCache(channel, params) {
31380
31395
  pushToCache(['channel', 'get', channel.channelId],
31381
31396
  // eslint-disable-next-line prefer-object-spread
31382
- Object.assign(shallowClone(channel), params));
31397
+ shallowClone(channel, params));
31383
31398
  }
31384
31399
 
31385
31400
  /**
@@ -33861,6 +33876,7 @@ class ChannelLiveCollectionController extends LiveCollectionController {
33861
33876
  .filter(Boolean)
33862
33877
  .map(({ data }) => data)
33863
33878
  .map(getChannelMessagePreviewWithUser)
33879
+ .map(constructChannelDynamicValue)
33864
33880
  .map(LinkedObject.channel)) !== null && _b !== void 0 ? _b : [];
33865
33881
  if (this.paginationController instanceof ChannelPaginationController) {
33866
33882
  data = this.applyFilter(data);
@@ -33951,6 +33967,7 @@ class ChannelLiveCollectionController extends LiveCollectionController {
33951
33967
  'get',
33952
33968
  message.channelId,
33953
33969
  ])) === null || _a === void 0 ? void 0 : _a.data;
33970
+ console.log('channel cache data => ', cacheData);
33954
33971
  if (!cacheData) {
33955
33972
  const objectResolverEngine = ObjectResolverEngine$1.getInstance();
33956
33973
  // channelId from message event payload is channelInternalId
@@ -34403,7 +34420,11 @@ const onUserDeleted$1 = (channelId) => (callback) => {
34403
34420
  channelUserCacheKey,
34404
34421
  ])) === null || _a === void 0 ? void 0 : _a.data;
34405
34422
  upsertInCache(['channelUsers', 'get', channelUserCacheKey], Object.assign(Object.assign({}, cacheData), { user }));
34406
- const channel = (_b = pullFromCache(['channel', 'get', channelId])) === null || _b === void 0 ? void 0 : _b.data;
34423
+ const channel = (_b = pullFromCache([
34424
+ 'channel',
34425
+ 'get',
34426
+ channelId,
34427
+ ])) === null || _b === void 0 ? void 0 : _b.data;
34407
34428
  if (!channel)
34408
34429
  return;
34409
34430
  callback(channel, cacheData);
@@ -35341,7 +35362,8 @@ const createCommunityMemberEventSubscriber = (event, callback) => {
35341
35362
  callback(preparedPayload.communities[0], getEventRelatedMember(event, preparedPayload));
35342
35363
  }
35343
35364
  else {
35344
- ingestInCache(preparedPayload);
35365
+ // NOTE: The event payload should be merge with existing cache data
35366
+ ingestInCache(preparedPayload, undefined, false);
35345
35367
  const community = pullFromCache([
35346
35368
  'community',
35347
35369
  'get',
@@ -35378,7 +35400,8 @@ const createLocalCommunityMemberEventSubscriber = (event, callback) => {
35378
35400
  callback(preparedPayload.communities[0], getEventRelatedMember(event, preparedPayload));
35379
35401
  }
35380
35402
  else {
35381
- ingestInCache(preparedPayload);
35403
+ // NOTE: The event payload should be merge with existing cache data
35404
+ ingestInCache(preparedPayload, undefined, false);
35382
35405
  const community = pullFromCache([
35383
35406
  'community',
35384
35407
  'get',
@@ -40935,7 +40958,7 @@ var index$3 = /*#__PURE__*/Object.freeze({
40935
40958
  getPoll: getPoll
40936
40959
  });
40937
40960
 
40938
- const privateKey = "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDHo80SecH7FuF2\nhFYnb+l26/VN8UMLXAQFLnxciNTEwkGVFMpdezlH8rU2HtUJL4RETogbAOLVY0XM\njs6sPn8G1nALmh9qeDpUtVqFOVtBHxEZ910TLOtQiunjqJKO5nWdqZ71EC3OFluR\niGQkO84BiIFbv37ub7xl3S8XarbtKoLcyVpkDHi+1wx1pgCAn6gtBUgckPL5NR8j\nLseabl3HAXQfhTCKo4tmOFM2Dxwl1IUMmIJrJg/aIU/U0tj/1Eoo7mG0JcNWX19l\nW3EecCbi0ncCJOrkUdwlBrcjaMayaX/ubEwyUeTGiLdyc4L3GRLHjyK8xgVNXRMH\nbZWJ2a5NAgMBAAECggEASxuE+35zTFO/XydKgmvIGcWL9FbgMlXb7Vcf0nBoG945\nbiz0NVc2paraIhJXc608xbYF3qLmtAE1MVBI0ORyRdBHNxY024l/6H6SH60Ed+uI\nM4ysp5ourY6Vj+DLwpdRiI9YDjqYAQDIUmhNxJP7XPhOMoZI6st+xZQBM34ic/bv\nAMSJm9OZphSp3+qXVkFZztr2mxD2EZSJJLYxi8BCdgM2qhazalbcJ6zDKHCZWVWm\n8RRxDGldyMb/237JxETzP40tAlzOZDmBAbUgEnurDJ93RVDIE3rbZUshwgeQd18a\nem096mWgvB1AIKYgsTAR3pw+V19YWAjq/glP6fz8wQKBgQD/oQq+ukKF0PRgBeM5\ngeTjSwsdGppQLmf5ndujvoiz/TpdjDEPu6R8kigQr1rG2t4K/yfdZoI8RdmJD1al\n3Q7N9hofooSy4rj6E3txzWZCHJjHad2cnCp/O26HiReGAl7wTcfTmNdiFHhZQzm5\nJBkvWAiwuvQMNfEbnXxw6/vIDwKBgQDH7fX8gsc77JLvAWgp1MaQN/sbqVb6JeT1\nFQfR8E/WFCSmzQBtNzd5KgYuCeelwr/8DyYytvN2BzCYZXp73gI1jF3YlW5jVn74\nOY6TwQ095digwo6Z0yuxopdIOApKgAkL9PRKgNrqAf3NAyMua6lOGifzjDojC3KU\nfylQmxMn4wKBgHp2B9O/H0dEBw5JQ8W0+JX6yWQz7mEjGiR2/1W+XXb8hQ1zr709\nw1r6Gb+EghRpnZ3fBpYGGbYOMFx8wKHM+N6qW3F0ReX8v2juFGE8aRSa5oYBrWzt\nU16Idjbv8hj84cZ1PJmdyvDtpYn9rpWHOZl4rxEbPvbqkIsOMyNVqdT5AoGAOSge\nmwIIU2le2FVeohbibXiToWTYKMuMmURZ5/r72AgKMmWJKbAPe+Q3wBG01/7FRBpQ\noU8Ma0HC8s6QJbliiEyIx9JwrJWd1vkdecBHONrtA4ibm/5zD2WcOllLF+FitLhi\n3qnX6+6F0IaFGFBPJrTzlv0P4dTz/OAdv52V7GECgYEA2TttOKBAqWllgOaZOkql\nLVMJVmgR7s6tLi1+cEP8ZcapV9aRbRzTAKXm4f8AEhtlG9F9kCOvHYCYGi6JaiWJ\nZkHjeex3T+eE6Di6y5Bm/Ift5jtVhJ4jCVwHOKTMej79NPUFTJfv8hCo29haBDv6\nRXFrv+T21KCcw8k3sJeJWWQ=\n-----END PRIVATE KEY-----";
40961
+ const privateKey = "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDAARz+hmBgi8pJ\nQb8LeY41gtHhk+ACMwRfhsn7GqpqRQNG2qU0755mzZuVDUqjQMGSo8THJB7O+OJs\nflbZRkFXlFoFOVNw1UpNOgwEQZ6wB9oRwzepTJAfF1sVhm/o/ixvXh1zDFNDy6yZ\npXyiiJHUVxqyjllZhxnwdvjoVtDs6hW6awG09bB9nh/TTejlUKXoAgzqVwu/1QMu\nUVViET495elEe19aUarEy+oL2iKeXCEvqda/pWNBdbieFyJvvZ08HN8dPuT88wq2\njZLEAth1vrwQ2IAa4ktaLcBQdLJgIkrbDvAiVZ8lQAjS/bq5vXQikTGvoPlC5bbn\nvuOM/3eLAgMBAAECggEAVZ+peHAghq2QVj71nX5lxsNCKaCyYwixSJBpfouTt7Rz\nE6PpzMOXFi1W1o+I22jDakuSM2SOQKqI/u0QefB0r0O/KVk5NrZHXk0mkrdYtxOp\nUgaGyf8UvmjB+8VqHrNKyZdk9qtmbnNj01kTTcAtmE4H39zPR7eR/8Rul94vaZbs\nwCnKJS3mLT3JxyGug6lxanveKkjG+CKC1nJQYWaxCJxaFSzbwXQPvDhB+TvrIbee\npd5v4EAyEJohpr+T9oDGGJkb/KARBZCtwLyB976PKJwwBA8MRVL1i5QwawuMiMq5\nUtnOnbGKtCeFzaLbNU0Qi8bqyims84EQxC6DOu1fkQKBgQDdvsoBsEhsOXV7hlIJ\naEd0eSJZVkdqimxH8uGoMM2FeNaOrcB6yBXqTSP0R3OIyf8eaY6yjRvP30ZNXcll\n/gD3O1Mu6YmWQdt1W2WA6pKOsUuPXasf0pdOF7IiFZKlSabz5YHXFqwVuqm8loaj\nsXel3YWqPVdHiankE7tz+3ssnQKBgQDdqi4TNdD1MdEpihx19jr0QjUiXW3939FK\nqp30HESPEGDGQzXdmJgif9HhZb+cJSuWaHEbjgBrYahvgCF+y6LbEpOD+D/dmT+s\nDEAQaR84sah6dokwPjV8fjBSrcVFjCS+doxv0d3p/9OUEeyUhFrY03nxtIEYkLIE\n/Zvn37b4RwKBgQCLENVFe9XfsaVhQ5r9dV2iyTlmh7qgMZG5CbTFs12hQGhm8McO\n+Z7s41YSJCFr/yq1WwP4LJDtrBw99vyQr1zRsG35tNLp3gGRNzGQSQyC2uQFVHw2\np+7mNewsfhUK/gbrXNsyFnDz6635rPlhfbII3sWuP2wWXFqkxE9CbMwR7QKBgQC6\nawDMzxmo2/iYArrkyevSuEuPVxvFwpF1RgAI6C0QVCnPE38dmdN4UB7mfHekje4W\nVEercMURidPp0cxZolCYBQtilUjAyL0vqC3In1/Ogjq6oy3FEMxSop1pKxMY5j+Q\nnoqFD+6deLUrddeNH7J3X4LSr4dSbX4JjG+tlgt+yQKBgQCuwTL4hA6KqeInQ0Ta\n9VQX5Qr8hFlqJz1gpymi/k63tW/Ob8yedbg3WWNWyShwRMFYyY9S81ITFWM95uL6\nvF3x9rmRjwElJw9PMwVu6dmf/CO0Z1wzXSp2VVD12gbrUD/0/d7MUoJ9LgC8X8f/\nn0txLHYGHbx+nf95+JUg6lV3hg==\n-----END PRIVATE KEY-----";
40939
40962
  /*
40940
40963
  * The crypto algorithm used for importing key and signing string
40941
40964
  */