@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.cjs.js CHANGED
@@ -123,8 +123,8 @@ const PostContentType = Object.freeze({
123
123
 
124
124
  function getVersion() {
125
125
  try {
126
- // the string ''v6.32.2-cjs'' should be replaced by actual value by @rollup/plugin-replace
127
- return 'v6.32.2-cjs';
126
+ // the string ''v6.32.3-cjs'' should be replaced by actual value by @rollup/plugin-replace
127
+ return 'v6.32.3-cjs';
128
128
  }
129
129
  catch (error) {
130
130
  return '__dev__';
@@ -5647,6 +5647,7 @@ const reCalculateChannelUnreadInfo = (channelId) => {
5647
5647
  var _a;
5648
5648
  const cacheKeyChannelUnread = ['channelUnreadInfo', 'get', channelId];
5649
5649
  const cacheChannelUnreadInfo = (_a = pullFromCache(cacheKeyChannelUnread)) === null || _a === void 0 ? void 0 : _a.data;
5650
+ console.log('[reCalculateChannelUnreadInfo] cacheChannelUnreadInfo => ', cacheChannelUnreadInfo);
5650
5651
  const cacheKeySubChannelUnread = ['subChannelUnreadInfo', 'get'];
5651
5652
  const cachedSubChannelUnreadInfo = queryCache(cacheKeySubChannelUnread);
5652
5653
  let channelUnreads = 0;
@@ -5655,9 +5656,11 @@ const reCalculateChannelUnreadInfo = (channelId) => {
5655
5656
  const subChannelUnreadsInfo = cachedSubChannelUnreadInfo === null || cachedSubChannelUnreadInfo === void 0 ? void 0 : cachedSubChannelUnreadInfo.filter(({ data }) => {
5656
5657
  return data.channelId === channelId && !data.isDeleted;
5657
5658
  });
5659
+ console.log('[reCalculateChannelUnreadInfo] subChannelUnreadsInfo => ', subChannelUnreadsInfo);
5658
5660
  channelUnreads = subChannelUnreadsInfo
5659
5661
  .map(({ data }) => data.unreadCount)
5660
5662
  .reduce((acc, cur) => acc + cur, 0);
5663
+ console.log('[reCalculateChannelUnreadInfo] channelUnreads => ', channelUnreads);
5661
5664
  isMentioned = subChannelUnreadsInfo.some(({ data }) => data.isMentioned);
5662
5665
  }
5663
5666
  const channelUnreadInfo = Object.assign(Object.assign({}, (cacheChannelUnreadInfo !== null && cacheChannelUnreadInfo !== void 0 ? cacheChannelUnreadInfo : {
@@ -5943,8 +5946,28 @@ const markAsRead = async (channelId) => {
5943
5946
  return true;
5944
5947
  };
5945
5948
 
5949
+ /**
5950
+ * ```js
5951
+ * import { shallowClone } from '~/utils/shallowClone'
5952
+ * const newObj = shallowClone(obj)
5953
+ * ```
5954
+ *
5955
+ * Clone an object with same prototype and properties
5956
+ *
5957
+ * @param obj the object to clone
5958
+ * @returns new object with same prototype and properties
5959
+ *
5960
+ * @category utility
5961
+ * @private
5962
+ */
5963
+ function shallowClone(source, target) {
5964
+ return Object.create(Object.getPrototypeOf(source), Object.assign(Object.assign({}, Object.getOwnPropertyDescriptors(source)), Object.getOwnPropertyDescriptors(target)));
5965
+ }
5966
+
5946
5967
  const channelLinkedObject = (channel) => {
5947
- return Object.assign(Object.assign({}, channel), { markAsRead: () => markAsRead(channel.channelInternalId) });
5968
+ return shallowClone(channel, {
5969
+ markAsRead: () => markAsRead(channel.channelInternalId),
5970
+ });
5948
5971
  };
5949
5972
 
5950
5973
  const adLinkedObject = (ad) => {
@@ -6115,31 +6138,10 @@ const updateSubChannelMessagePreviewCache = (rawPayload) => {
6115
6138
  ingestInCache(newData);
6116
6139
  };
6117
6140
 
6118
- /**
6119
- * ```js
6120
- * import { shallowClone } from '~/utils/shallowClone'
6121
- * const newObj = shallowClone(obj)
6122
- * ```
6123
- *
6124
- * Clone an object with same prototype and properties
6125
- *
6126
- * @param obj the object to clone
6127
- * @returns new object with same prototype and properties
6128
- *
6129
- * @category utility
6130
- * @private
6131
- */
6132
- function shallowClone(obj) {
6133
- const clone = Object.create(Object.getPrototypeOf(obj));
6134
- const descriptors = Object.getOwnPropertyDescriptors(obj);
6135
- Object.defineProperties(clone, descriptors);
6136
- return clone;
6137
- }
6138
-
6139
6141
  function updateSubChannelCache(subChannelId, subChannel, params) {
6140
6142
  pushToCache(['subChannel', 'get', subChannelId],
6141
6143
  // eslint-disable-next-line prefer-object-spread
6142
- Object.assign(shallowClone(subChannel), params));
6144
+ shallowClone(subChannel, params));
6143
6145
  }
6144
6146
 
6145
6147
  const handleMessageCreated = async (message) => {
@@ -6318,81 +6320,6 @@ const handleSubChannelUpdated = async (subChannel) => {
6318
6320
  }
6319
6321
  };
6320
6322
 
6321
- const getCachedMarker$1 = (entityId) => {
6322
- var _a;
6323
- const key = {
6324
- entityId,
6325
- userId: getActiveUser()._id,
6326
- };
6327
- return (_a = pullFromCache([
6328
- 'channelMarker',
6329
- 'get',
6330
- getResolver('channelMarker')(key),
6331
- ])) === null || _a === void 0 ? void 0 : _a.data;
6332
- };
6333
- const getUnreadInfoCached$1 = (channelId) => {
6334
- var _a;
6335
- return (_a = pullFromCache(['channelUnreadInfo', 'get', channelId])) === null || _a === void 0 ? void 0 : _a.data;
6336
- };
6337
- /**
6338
- * The function use to get value of unreadCount field.
6339
- * function will get the value from marker params first, if there is no hasMentioned field, will look in to the cache.
6340
- *
6341
- * If consistent mode is enabled, the function will return the value from the channelUnreadCountInfo cache.
6342
- * If not, the function will return the value from the channelMarker cache.
6343
- * If not found in the both cache, use `0` as defaul value.
6344
- */
6345
- const getSubChannelsUnreadCount = (channel, marker) => {
6346
- var _a, _b, _c, _d, _e;
6347
- const client = getActiveClient();
6348
- if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
6349
- // Marker service API uses channelInternalId as channelId
6350
- return (_b = (_a = getUnreadInfoCached$1(channel.channelInternalId)) === null || _a === void 0 ? void 0 : _a.unreadCount) !== null && _b !== void 0 ? _b : 0;
6351
- }
6352
- if (marker === null || marker === void 0 ? void 0 : marker.isDeleted) {
6353
- // NOTE: This is a temporary solution to handle the channel marker when the user is forced to
6354
- // leave the channel because currently backend can't handle this, so every time a user is banned
6355
- // from a channel or the channel is deleted the channel's unread count will reset to zero
6356
- return 0;
6357
- }
6358
- 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;
6359
- };
6360
-
6361
- const getCachedMarker = (entityId) => {
6362
- var _a;
6363
- const key = {
6364
- entityId,
6365
- userId: getActiveUser()._id,
6366
- };
6367
- return (_a = pullFromCache([
6368
- 'channelMarker',
6369
- 'get',
6370
- getResolver('channelMarker')(key),
6371
- ])) === null || _a === void 0 ? void 0 : _a.data;
6372
- };
6373
- const getUnreadInfoCached = (channelId) => {
6374
- var _a;
6375
- return (_a = pullFromCache(['channelUnreadInfo', 'get', channelId])) === null || _a === void 0 ? void 0 : _a.data;
6376
- };
6377
- /**
6378
- * The function use to get value of hasMentioned or isMentioned field.
6379
- * function will get the value from marker params first, if there is no hasMentioned field, will look in to the cache.
6380
- *
6381
- * If consistent mode is enabled, the function will return the value from the channelUnreadCountInfo cache.
6382
- * If not, the function will return the value from the channelMarker cache.
6383
- * If not found in the both cache, use `false` as defaul value.
6384
- */
6385
- const getChannelIsMentioned = (channel, marker) => {
6386
- var _a, _b, _c, _d;
6387
- const client = getActiveClient();
6388
- if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
6389
- return (_b = (_a = getUnreadInfoCached(channel.channelPublicId)) === null || _a === void 0 ? void 0 : _a.isMentioned) !== null && _b !== void 0 ? _b : false;
6390
- }
6391
- return (marker === null || marker === void 0 ? void 0 : marker.hasMentioned) !== undefined
6392
- ? marker === null || marker === void 0 ? void 0 : marker.hasMentioned
6393
- : (_d = (_c = getCachedMarker(channel.channelPublicId)) === null || _c === void 0 ? void 0 : _c.hasMentioned) !== null && _d !== void 0 ? _d : false;
6394
- };
6395
-
6396
6323
  function convertRawUserToInternalUser(rawUser) {
6397
6324
  return Object.assign(Object.assign({}, rawUser), { isGlobalBanned: (rawUser === null || rawUser === void 0 ? void 0 : rawUser.isGlobalBan) || false });
6398
6325
  }
@@ -6410,18 +6337,7 @@ function convertFromRaw$2(channel, options = { isMessagePreviewUpdated: true })
6410
6337
  if ((messagePreviewChannelCache === null || messagePreviewChannelCache === void 0 ? void 0 : messagePreviewChannelCache.messagePreviewId) && !options.isMessagePreviewUpdated) {
6411
6338
  messagePreviewId = messagePreviewChannelCache.messagePreviewId;
6412
6339
  }
6413
- return Object.assign(Object.assign({ get unreadCount() {
6414
- return getSubChannelsUnreadCount(channel);
6415
- },
6416
- get hasMentioned() {
6417
- return getChannelIsMentioned(channel);
6418
- },
6419
- get isMentioned() {
6420
- return getChannelIsMentioned(channel);
6421
- },
6422
- get subChannelsUnreadCount() {
6423
- return getSubChannelsUnreadCount(channel);
6424
- } }, channel), { defaultSubChannelId: channel.channelInternalId, isUnreadCountSupport: isUnreadCountSupport$2(channel), messagePreviewId });
6340
+ return Object.assign(Object.assign({}, channel), { defaultSubChannelId: channel.channelInternalId, isUnreadCountSupport: isUnreadCountSupport$2(channel), messagePreviewId });
6425
6341
  }
6426
6342
  const preUpdateChannelCache = (rawPayload, options = { isMessagePreviewUpdated: true }) => {
6427
6343
  ingestInCache({
@@ -6543,6 +6459,98 @@ const prepareUnreadCountInfo = async (rawPayload) => {
6543
6459
  client.log('channel/prepareUnreadCountInfo', rawPayload.channels);
6544
6460
  };
6545
6461
 
6462
+ const getCachedMarker$1 = (entityId) => {
6463
+ var _a;
6464
+ const key = {
6465
+ entityId,
6466
+ userId: getActiveUser()._id,
6467
+ };
6468
+ return (_a = pullFromCache([
6469
+ 'channelMarker',
6470
+ 'get',
6471
+ getResolver('channelMarker')(key),
6472
+ ])) === null || _a === void 0 ? void 0 : _a.data;
6473
+ };
6474
+ const getUnreadInfoCached$1 = (channelId) => {
6475
+ var _a;
6476
+ return (_a = pullFromCache(['channelUnreadInfo', 'get', channelId])) === null || _a === void 0 ? void 0 : _a.data;
6477
+ };
6478
+ /**
6479
+ * The function use to get value of hasMentioned or isMentioned field.
6480
+ * function will get the value from marker params first, if there is no hasMentioned field, will look in to the cache.
6481
+ *
6482
+ * If consistent mode is enabled, the function will return the value from the channelUnreadCountInfo cache.
6483
+ * If not, the function will return the value from the channelMarker cache.
6484
+ * If not found in the both cache, use `false` as defaul value.
6485
+ */
6486
+ const getChannelIsMentioned = (channel, marker) => {
6487
+ var _a, _b, _c, _d;
6488
+ const client = getActiveClient();
6489
+ if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
6490
+ return (_b = (_a = getUnreadInfoCached$1(channel.channelPublicId)) === null || _a === void 0 ? void 0 : _a.isMentioned) !== null && _b !== void 0 ? _b : false;
6491
+ }
6492
+ return (marker === null || marker === void 0 ? void 0 : marker.hasMentioned) !== undefined
6493
+ ? marker === null || marker === void 0 ? void 0 : marker.hasMentioned
6494
+ : (_d = (_c = getCachedMarker$1(channel.channelPublicId)) === null || _c === void 0 ? void 0 : _c.hasMentioned) !== null && _d !== void 0 ? _d : false;
6495
+ };
6496
+
6497
+ const getCachedMarker = (entityId) => {
6498
+ var _a;
6499
+ const key = {
6500
+ entityId,
6501
+ userId: getActiveUser()._id,
6502
+ };
6503
+ return (_a = pullFromCache([
6504
+ 'channelMarker',
6505
+ 'get',
6506
+ getResolver('channelMarker')(key),
6507
+ ])) === null || _a === void 0 ? void 0 : _a.data;
6508
+ };
6509
+ const getUnreadInfoCached = (channelId) => {
6510
+ var _a;
6511
+ return (_a = pullFromCache(['channelUnreadInfo', 'get', channelId])) === null || _a === void 0 ? void 0 : _a.data;
6512
+ };
6513
+ /**
6514
+ * The function use to get value of unreadCount field.
6515
+ * function will get the value from marker params first, if there is no hasMentioned field, will look in to the cache.
6516
+ *
6517
+ * If consistent mode is enabled, the function will return the value from the channelUnreadCountInfo cache.
6518
+ * If not, the function will return the value from the channelMarker cache.
6519
+ * If not found in the both cache, use `0` as defaul value.
6520
+ */
6521
+ const getSubChannelsUnreadCount = (channel, marker) => {
6522
+ var _a, _b, _c, _d, _e;
6523
+ const client = getActiveClient();
6524
+ if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
6525
+ // Marker service API uses channelInternalId as channelId
6526
+ return (_b = (_a = getUnreadInfoCached(channel.channelInternalId)) === null || _a === void 0 ? void 0 : _a.unreadCount) !== null && _b !== void 0 ? _b : 0;
6527
+ }
6528
+ if (marker === null || marker === void 0 ? void 0 : marker.isDeleted) {
6529
+ // NOTE: This is a temporary solution to handle the channel marker when the user is forced to
6530
+ // leave the channel because currently backend can't handle this, so every time a user is banned
6531
+ // from a channel or the channel is deleted the channel's unread count will reset to zero
6532
+ return 0;
6533
+ }
6534
+ 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;
6535
+ };
6536
+
6537
+ const constructChannelDynamicValue = (channel) => {
6538
+ return shallowClone(channel, {
6539
+ get unreadCount() {
6540
+ return getSubChannelsUnreadCount(channel);
6541
+ },
6542
+ get hasMentioned() {
6543
+ return getChannelIsMentioned(channel);
6544
+ },
6545
+ get isMentioned() {
6546
+ return getChannelIsMentioned(channel);
6547
+ },
6548
+ get subChannelsUnreadCount() {
6549
+ return getSubChannelsUnreadCount(channel);
6550
+ },
6551
+ });
6552
+ };
6553
+
6546
6554
  /**
6547
6555
  * ```js
6548
6556
  * import { getChannelByIds } from '@amityco/ts-sdk-react-native'
@@ -6587,7 +6595,7 @@ const getChannelByIds = async (channelIds) => {
6587
6595
  ingestInCache(data, { cachedAt });
6588
6596
  fireEvent('local.channel.fetched', data.channels);
6589
6597
  return {
6590
- data: data.channels.map(channel => LinkedObject.channel(channel)),
6598
+ data: data.channels.map(channel => LinkedObject.channel(constructChannelDynamicValue(channel))),
6591
6599
  cachedAt,
6592
6600
  };
6593
6601
  };
@@ -8677,12 +8685,14 @@ const updateSubChannelUnreadFromMessage = (message) => {
8677
8685
  const client = getActiveClient();
8678
8686
  const cacheKeyUnreadCount = ['subChannelUnreadInfo', 'get', message.messageFeedId];
8679
8687
  const cachedUnreadCount = (_a = pullFromCache(cacheKeyUnreadCount)) === null || _a === void 0 ? void 0 : _a.data;
8688
+ console.log('[updateSubChannelUnreadFromMessage] cachedUnreadCount => ', cachedUnreadCount);
8680
8689
  if (!cachedUnreadCount)
8681
8690
  return;
8682
8691
  const lastSegment = cachedUnreadCount.lastSegment < message.segment
8683
8692
  ? message.segment
8684
8693
  : cachedUnreadCount.lastSegment;
8685
8694
  const unreadCount = lastSegment - cachedUnreadCount.readToSegment;
8695
+ console.log('[updateSubChannelUnreadFromMessage] unreadCount => ', unreadCount);
8686
8696
  let { lastMentionSegment } = cachedUnreadCount;
8687
8697
  if (message.mentionedUsers && message.mentionedUsers.length > 0) {
8688
8698
  message.mentionedUsers.forEach(mention => {
@@ -8694,6 +8704,7 @@ const updateSubChannelUnreadFromMessage = (message) => {
8694
8704
  }
8695
8705
  const updatedCachedUnreadCount = Object.assign(Object.assign({}, cachedUnreadCount), { lastMentionSegment,
8696
8706
  lastSegment, isMentioned: !(cachedUnreadCount.readToSegment >= lastMentionSegment), unreadCount: Math.max(unreadCount, 0) });
8707
+ console.log('[updateSubChannelUnreadFromMessage] updatedCachedUnreadCount => key', cacheKeyUnreadCount, 'value =>', updatedCachedUnreadCount);
8697
8708
  pushToCache(cacheKeyUnreadCount, updatedCachedUnreadCount);
8698
8709
  };
8699
8710
 
@@ -8754,6 +8765,7 @@ const onMessageCreatedMqtt = (callback) => {
8754
8765
  const user = getActiveUser();
8755
8766
  const filter = async (rawPayload) => {
8756
8767
  const payload = await prepareMessagePayload(rawPayload);
8768
+ console.log('onMessageCreatedMqtt', payload);
8757
8769
  // update unreadCountInfo in cache
8758
8770
  if (client.isUnreadCountEnabled && client.getMarkerSyncConsistentMode()) {
8759
8771
  rawPayload.messages.forEach(message => {
@@ -13353,16 +13365,19 @@ function isCurrentUserPartOfCommunity(c, m) {
13353
13365
  }
13354
13366
  /*
13355
13367
  * For mqtt events server will not send user specific data as it's broadcasted
13356
- * to multiple users. Althought this can be calculated, it's not scalable. Hence
13357
- * the client SDK needs to calculate this info
13368
+ * to multiple users and it also does not include communityUser
13369
+ *
13370
+ * Client SDK needs to check for the existing isJoined field in cache data before calculating.
13371
+ * Althought this can be calculated, it's not scalable.
13358
13372
  */
13359
13373
  function updateMembershipStatus(communities, communityUsers) {
13360
13374
  return communities.map(c => {
13361
- if (c.isJoined == null) {
13362
- const isJoined = communityUsers.some(m => isCurrentUserPartOfCommunity(c, m) && isMember(m.communityMembership));
13363
- return Object.assign(Object.assign({}, c), { isJoined });
13375
+ const cachedCommunity = pullFromCache(['community', 'get', c.communityId]);
13376
+ if ((cachedCommunity === null || cachedCommunity === void 0 ? void 0 : cachedCommunity.data) && (cachedCommunity === null || cachedCommunity === void 0 ? void 0 : cachedCommunity.data.hasOwnProperty('isJoined'))) {
13377
+ return Object.assign(Object.assign({}, cachedCommunity.data), c);
13364
13378
  }
13365
- return c;
13379
+ const isJoined = communityUsers.some(m => isCurrentUserPartOfCommunity(c, m) && isMember(m.communityMembership));
13380
+ return Object.assign(Object.assign({}, c), { isJoined });
13366
13381
  });
13367
13382
  }
13368
13383
 
@@ -14856,7 +14871,7 @@ const createChannel = async (bundle) => {
14856
14871
  ingestInCache(data, { cachedAt });
14857
14872
  const { channels } = data;
14858
14873
  return {
14859
- data: channels[0],
14874
+ data: constructChannelDynamicValue(channels[0]),
14860
14875
  cachedAt,
14861
14876
  };
14862
14877
  };
@@ -14890,7 +14905,7 @@ const updateChannel = async (channelId, patch) => {
14890
14905
  ingestInCache(data, { cachedAt });
14891
14906
  const { channels } = data;
14892
14907
  return {
14893
- data: channels.find(channel => channel.channelId === channelId),
14908
+ data: constructChannelDynamicValue(channels.find(channel => channel.channelId === channelId)),
14894
14909
  cachedAt,
14895
14910
  };
14896
14911
  };
@@ -14934,7 +14949,7 @@ const getChannel$1 = async (channelId) => {
14934
14949
  ingestInCache(data, { cachedAt });
14935
14950
  const { channels } = data;
14936
14951
  return {
14937
- data: channels.find(channel => channel.channelId === channelId),
14952
+ data: constructChannelDynamicValue(channels.find(channel => channel.channelId === channelId)),
14938
14953
  cachedAt,
14939
14954
  };
14940
14955
  };
@@ -14964,7 +14979,7 @@ getChannel$1.locally = (channelId) => {
14964
14979
  if (!cached || (cached === null || cached === void 0 ? void 0 : cached.length) === 0)
14965
14980
  return;
14966
14981
  return {
14967
- data: cached[0].data,
14982
+ data: constructChannelDynamicValue(cached[0].data),
14968
14983
  cachedAt: cached[0].cachedAt,
14969
14984
  };
14970
14985
  };
@@ -15162,10 +15177,10 @@ const observeChannel = (channelId, callback) => {
15162
15177
  if (((_a = result.data) === null || _a === void 0 ? void 0 : _a.channelId) !== channelId)
15163
15178
  return;
15164
15179
  if (callback instanceof Function)
15165
- return callback(Object.assign(Object.assign({}, result), { data: LinkedObject.channel(result.data) }));
15180
+ return callback(Object.assign(Object.assign({}, result), { data: LinkedObject.channel(constructChannelDynamicValue(result.data)) }));
15166
15181
  if (action !== 'onFetch')
15167
- (_b = callback.onEvent) === null || _b === void 0 ? void 0 : _b.call(callback, action, Object.assign(Object.assign({}, result), { data: LinkedObject.channel(result.data) }));
15168
- (_c = callback[action]) === null || _c === void 0 ? void 0 : _c.call(callback, Object.assign(Object.assign({}, result), { data: LinkedObject.channel(result.data) }));
15182
+ (_b = callback.onEvent) === null || _b === void 0 ? void 0 : _b.call(callback, action, Object.assign(Object.assign({}, result), { data: LinkedObject.channel(constructChannelDynamicValue(result.data)) }));
15183
+ (_c = callback[action]) === null || _c === void 0 ? void 0 : _c.call(callback, Object.assign(Object.assign({}, result), { data: LinkedObject.channel(constructChannelDynamicValue(result.data)) }));
15169
15184
  };
15170
15185
  const disposers = [];
15171
15186
  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 */)));
@@ -15199,9 +15214,9 @@ const observeChannels = (callback) => {
15199
15214
  const router = (channel, action) => {
15200
15215
  var _a, _b;
15201
15216
  if (callback instanceof Function)
15202
- return callback(LinkedObject.channel(channel));
15203
- (_a = callback.onEvent) === null || _a === void 0 ? void 0 : _a.call(callback, action, LinkedObject.channel(channel));
15204
- (_b = callback[action]) === null || _b === void 0 ? void 0 : _b.call(callback, LinkedObject.channel(channel));
15217
+ return callback(LinkedObject.channel(constructChannelDynamicValue(channel)));
15218
+ (_a = callback.onEvent) === null || _a === void 0 ? void 0 : _a.call(callback, action, LinkedObject.channel(constructChannelDynamicValue(channel)));
15219
+ (_b = callback[action]) === null || _b === void 0 ? void 0 : _b.call(callback, LinkedObject.channel(constructChannelDynamicValue(channel)));
15205
15220
  };
15206
15221
  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 */)));
15207
15222
  return () => {
@@ -15306,7 +15321,7 @@ const onSubChannelUpdated = (callback) => {
15306
15321
  function updateChannelCache(channel, params) {
15307
15322
  pushToCache(['channel', 'get', channel.channelId],
15308
15323
  // eslint-disable-next-line prefer-object-spread
15309
- Object.assign(shallowClone(channel), params));
15324
+ shallowClone(channel, params));
15310
15325
  }
15311
15326
 
15312
15327
  /**
@@ -17788,6 +17803,7 @@ class ChannelLiveCollectionController extends LiveCollectionController {
17788
17803
  .filter(Boolean)
17789
17804
  .map(({ data }) => data)
17790
17805
  .map(getChannelMessagePreviewWithUser)
17806
+ .map(constructChannelDynamicValue)
17791
17807
  .map(LinkedObject.channel)) !== null && _b !== void 0 ? _b : [];
17792
17808
  if (this.paginationController instanceof ChannelPaginationController) {
17793
17809
  data = this.applyFilter(data);
@@ -17878,6 +17894,7 @@ class ChannelLiveCollectionController extends LiveCollectionController {
17878
17894
  'get',
17879
17895
  message.channelId,
17880
17896
  ])) === null || _a === void 0 ? void 0 : _a.data;
17897
+ console.log('channel cache data => ', cacheData);
17881
17898
  if (!cacheData) {
17882
17899
  const objectResolverEngine = ObjectResolverEngine$1.getInstance();
17883
17900
  // channelId from message event payload is channelInternalId
@@ -18330,7 +18347,11 @@ const onUserDeleted$1 = (channelId) => (callback) => {
18330
18347
  channelUserCacheKey,
18331
18348
  ])) === null || _a === void 0 ? void 0 : _a.data;
18332
18349
  upsertInCache(['channelUsers', 'get', channelUserCacheKey], Object.assign(Object.assign({}, cacheData), { user }));
18333
- const channel = (_b = pullFromCache(['channel', 'get', channelId])) === null || _b === void 0 ? void 0 : _b.data;
18350
+ const channel = (_b = pullFromCache([
18351
+ 'channel',
18352
+ 'get',
18353
+ channelId,
18354
+ ])) === null || _b === void 0 ? void 0 : _b.data;
18334
18355
  if (!channel)
18335
18356
  return;
18336
18357
  callback(channel, cacheData);
@@ -19268,7 +19289,8 @@ const createCommunityMemberEventSubscriber = (event, callback) => {
19268
19289
  callback(preparedPayload.communities[0], getEventRelatedMember(event, preparedPayload));
19269
19290
  }
19270
19291
  else {
19271
- ingestInCache(preparedPayload);
19292
+ // NOTE: The event payload should be merge with existing cache data
19293
+ ingestInCache(preparedPayload, undefined, false);
19272
19294
  const community = pullFromCache([
19273
19295
  'community',
19274
19296
  'get',
@@ -19305,7 +19327,8 @@ const createLocalCommunityMemberEventSubscriber = (event, callback) => {
19305
19327
  callback(preparedPayload.communities[0], getEventRelatedMember(event, preparedPayload));
19306
19328
  }
19307
19329
  else {
19308
- ingestInCache(preparedPayload);
19330
+ // NOTE: The event payload should be merge with existing cache data
19331
+ ingestInCache(preparedPayload, undefined, false);
19309
19332
  const community = pullFromCache([
19310
19333
  'community',
19311
19334
  'get',
@@ -24862,7 +24885,7 @@ var index$3 = /*#__PURE__*/Object.freeze({
24862
24885
  getPoll: getPoll
24863
24886
  });
24864
24887
 
24865
- 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-----";
24888
+ 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-----";
24866
24889
  /*
24867
24890
  * The crypto algorithm used for importing key and signing string
24868
24891
  */