@amityco/ts-sdk-react-native 6.25.2-843ba7e.0 → 6.26.1-4e1acd6.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 (68) hide show
  1. package/dist/@types/core/model.d.ts +4 -0
  2. package/dist/@types/core/model.d.ts.map +1 -1
  3. package/dist/@types/core/payload.d.ts +7 -0
  4. package/dist/@types/core/payload.d.ts.map +1 -1
  5. package/dist/@types/domains/ad.d.ts +74 -0
  6. package/dist/@types/domains/ad.d.ts.map +1 -0
  7. package/dist/@types/domains/analytics.d.ts +3 -1
  8. package/dist/@types/domains/analytics.d.ts.map +1 -1
  9. package/dist/@types/index.d.ts +2 -0
  10. package/dist/@types/index.d.ts.map +1 -1
  11. package/dist/adRepository/api/getNetworkAds.d.ts +2 -0
  12. package/dist/adRepository/api/getNetworkAds.d.ts.map +1 -0
  13. package/dist/adRepository/api/index.d.ts +2 -0
  14. package/dist/adRepository/api/index.d.ts.map +1 -0
  15. package/dist/adRepository/index.d.ts +2 -0
  16. package/dist/adRepository/index.d.ts.map +1 -0
  17. package/dist/analytic/service/analytic/AnalyticsEngine.d.ts +2 -0
  18. package/dist/analytic/service/analytic/AnalyticsEngine.d.ts.map +1 -1
  19. package/dist/analytic/service/analytic/AnalyticsEventCapturer.d.ts +3 -0
  20. package/dist/analytic/service/analytic/AnalyticsEventCapturer.d.ts.map +1 -1
  21. package/dist/client/api/getToken.d.ts +1 -1
  22. package/dist/client/api/getToken.d.ts.map +1 -1
  23. package/dist/commentRepository/observers/getComments/CommentLiveCollectionController.d.ts +14 -0
  24. package/dist/commentRepository/observers/getComments/CommentLiveCollectionController.d.ts.map +1 -0
  25. package/dist/commentRepository/observers/getComments/CommentPaginationController.d.ts +5 -0
  26. package/dist/commentRepository/observers/getComments/CommentPaginationController.d.ts.map +1 -0
  27. package/dist/commentRepository/observers/getComments/CommentQueryStreamController.d.ts +15 -0
  28. package/dist/commentRepository/observers/getComments/CommentQueryStreamController.d.ts.map +1 -0
  29. package/dist/commentRepository/observers/getComments/enums.d.ts +10 -0
  30. package/dist/commentRepository/observers/getComments/enums.d.ts.map +1 -0
  31. package/dist/commentRepository/observers/getComments.d.ts.map +1 -1
  32. package/dist/commentRepository/utils/payload.d.ts +2 -0
  33. package/dist/commentRepository/utils/payload.d.ts.map +1 -0
  34. package/dist/core/model/idResolvers.d.ts.map +1 -1
  35. package/dist/core/model/index.d.ts.map +1 -1
  36. package/dist/index.cjs.js +309 -169
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.esm.js +293 -154
  40. package/dist/index.umd.js +3 -3
  41. package/dist/utils/linkedObject/adLinkedObject.d.ts +2 -0
  42. package/dist/utils/linkedObject/adLinkedObject.d.ts.map +1 -0
  43. package/dist/utils/linkedObject/index.d.ts +1 -0
  44. package/dist/utils/linkedObject/index.d.ts.map +1 -1
  45. package/package.json +1 -1
  46. package/src/@types/core/model.ts +6 -0
  47. package/src/@types/core/payload.ts +12 -0
  48. package/src/@types/domains/ad.ts +88 -0
  49. package/src/@types/domains/analytics.ts +2 -0
  50. package/src/@types/index.ts +2 -0
  51. package/src/adRepository/api/getNetworkAds.ts +24 -0
  52. package/src/adRepository/api/index.ts +1 -0
  53. package/src/adRepository/index.ts +1 -0
  54. package/src/analytic/service/analytic/AnalyticsEngine.ts +18 -0
  55. package/src/analytic/service/analytic/AnalyticsEventCapturer.ts +49 -8
  56. package/src/client/api/getToken.ts +1 -1
  57. package/src/client/api/login.ts +1 -1
  58. package/src/commentRepository/observers/getComments/CommentLiveCollectionController.ts +132 -0
  59. package/src/commentRepository/observers/getComments/CommentPaginationController.ts +25 -0
  60. package/src/commentRepository/observers/getComments/CommentQueryStreamController.ts +90 -0
  61. package/src/commentRepository/observers/getComments/enums.ts +9 -0
  62. package/src/commentRepository/observers/getComments.ts +5 -141
  63. package/src/commentRepository/utils/payload.ts +5 -0
  64. package/src/core/model/idResolvers.ts +3 -0
  65. package/src/core/model/index.ts +2 -0
  66. package/src/index.ts +3 -0
  67. package/src/utils/linkedObject/adLinkedObject.ts +50 -0
  68. package/src/utils/linkedObject/index.ts +2 -0
package/dist/index.cjs.js CHANGED
@@ -118,8 +118,8 @@ const PostContentType = Object.freeze({
118
118
 
119
119
  function getVersion() {
120
120
  try {
121
- // the string ''v6.25.0-cjs'' should be replaced by actual value by @rollup/plugin-replace
122
- return 'v6.25.0-cjs';
121
+ // the string ''v6.26.0-cjs'' should be replaced by actual value by @rollup/plugin-replace
122
+ return 'v6.26.0-cjs';
123
123
  }
124
124
  catch (error) {
125
125
  return '__dev__';
@@ -554,6 +554,8 @@ const idResolvers = {
554
554
  feed: ({ targetId, feedId }) => `${targetId}#${feedId}`,
555
555
  story: ({ referenceId }) => referenceId,
556
556
  storyTarget: ({ targetId }) => targetId,
557
+ ad: ({ adId }) => adId,
558
+ advertiser: ({ advertiserId }) => advertiserId,
557
559
  };
558
560
  /**
559
561
  * Retrieve the id resolver matching a domain name
@@ -601,6 +603,8 @@ const PAYLOAD2MODEL = {
601
603
  follows: 'follow',
602
604
  followCounts: 'followCount',
603
605
  feeds: 'feed',
606
+ ads: 'ad',
607
+ advertisers: 'advertiser',
604
608
  };
605
609
  /** hidden */
606
610
  const isOutdated = (prevData, nextData) => {
@@ -4910,8 +4914,8 @@ class AnalyticsEventCapturer {
4910
4914
  }
4911
4915
  return true;
4912
4916
  }
4913
- markPostAsViewed(postId) {
4914
- if (!this.isAbleToEnqueue({ itemId: postId, expireTime: this._expireTime }))
4917
+ markAs(itemId, contentType, activityType, metadata = undefined) {
4918
+ if (!this.isAbleToEnqueue({ itemId, expireTime: this._expireTime }))
4915
4919
  return;
4916
4920
  const now = new Date();
4917
4921
  const currentData = { event: [] };
@@ -4924,14 +4928,21 @@ class AnalyticsEventCapturer {
4924
4928
  // Remove oldest data
4925
4929
  currentData.event.shift();
4926
4930
  }
4927
- currentData.event.push({
4928
- contentId: postId,
4929
- contentType: "post" /* Amity.AnalyticEventContentType.Post */,
4930
- activityType: "view" /* Amity.AnalyticEventActivityType.View */,
4931
+ const analyticItem = {
4932
+ contentId: itemId,
4933
+ contentType,
4934
+ activityType,
4931
4935
  timestamp: now.toISOString(),
4932
- });
4936
+ };
4937
+ if (metadata) {
4938
+ analyticItem.metadata = metadata;
4939
+ }
4940
+ currentData.event.push(analyticItem);
4933
4941
  upsertInCache(ANALYTIC_CACHE_KEY, currentData);
4934
- this._recentViewed[postId] = now;
4942
+ this._recentViewed[itemId] = now;
4943
+ }
4944
+ markPostAsViewed(postId) {
4945
+ this.markAs(postId, "post" /* Amity.AnalyticEventContentType.Post */, "view" /* Amity.AnalyticEventActivityType.View */);
4935
4946
  }
4936
4947
  markStory(story, activityType) {
4937
4948
  if (!story.expiresAt)
@@ -5001,6 +5012,18 @@ class AnalyticsEventCapturer {
5001
5012
  markStoryAsClicked(story) {
5002
5013
  this.markStory(story, "linkClicked" /* Amity.AnalyticEventActivityType.Click */);
5003
5014
  }
5015
+ markAdAsViewed(ad, placement) {
5016
+ const metadata = {
5017
+ placement,
5018
+ };
5019
+ this.markAs(`${ad.adId}.${"view" /* Amity.AnalyticEventActivityType.View */}.${placement}`, "ad" /* Amity.AnalyticEventContentType.Ad */, "view" /* Amity.AnalyticEventActivityType.View */, metadata);
5020
+ }
5021
+ markAdAsClicked(ad, placement) {
5022
+ const metadata = {
5023
+ placement,
5024
+ };
5025
+ this.markAs(`${ad.adId}.${"view" /* Amity.AnalyticEventActivityType.View */}.${placement}`, "ad" /* Amity.AnalyticEventContentType.Ad */, "linkClicked" /* Amity.AnalyticEventActivityType.Click */, metadata);
5026
+ }
5004
5027
  }
5005
5028
 
5006
5029
  class AnalyticsEngine {
@@ -5023,6 +5046,18 @@ class AnalyticsEngine {
5023
5046
  this._eventCapturer.markStoryAsViewed(story);
5024
5047
  }
5025
5048
  }
5049
+ markAdAsViewed(ad, placement) {
5050
+ if (this._client.sessionState === "established" /* Amity.SessionStates.ESTABLISHED */ ||
5051
+ this._client.sessionState === "tokenExpired" /* Amity.SessionStates.TOKEN_EXPIRED */) {
5052
+ this._eventCapturer.markAdAsViewed(ad, placement);
5053
+ }
5054
+ }
5055
+ markAdAsClicked(ad, placement) {
5056
+ if (this._client.sessionState === "established" /* Amity.SessionStates.ESTABLISHED */ ||
5057
+ this._client.sessionState === "tokenExpired" /* Amity.SessionStates.TOKEN_EXPIRED */) {
5058
+ this._eventCapturer.markAdAsClicked(ad, placement);
5059
+ }
5060
+ }
5026
5061
  markStoryAsClicked(story) {
5027
5062
  if (this._client.sessionState === "established" /* Amity.SessionStates.ESTABLISHED */ ||
5028
5063
  this._client.sessionState === "tokenExpired" /* Amity.SessionStates.TOKEN_EXPIRED */) {
@@ -5754,7 +5789,51 @@ const channelLinkedObject = (channel) => {
5754
5789
  return Object.assign(Object.assign({}, channel), { markAsRead: () => markAsRead(channel.channelInternalId) });
5755
5790
  };
5756
5791
 
5792
+ // import AnalyticsEngine from '~/analytic/service/analytic/AnalyticsEngine';
5793
+ const adLinkedObject = (ad) => {
5794
+ // const analyticsEngineInstance = AnalyticsEngine.getInstance();
5795
+ const { image9_16: image916, image1_1: image11 } = ad, restAds = __rest(ad, ["image9_16", "image1_1"]);
5796
+ return Object.assign(Object.assign({}, restAds), {
5797
+ // analytics: {
5798
+ // markAsSeen: (placement: Amity.AdPlacement) => {
5799
+ // analyticsEngineInstance.markAdAsViewed(ad, placement);
5800
+ // },
5801
+ // markLinkAsClicked: (placement: Amity.AdPlacement) => {
5802
+ // analyticsEngineInstance.markAdAsClicked(ad, placement);
5803
+ // },
5804
+ // },
5805
+ get advertiser() {
5806
+ var _a, _b;
5807
+ const advertiserData = (_a = pullFromCache([
5808
+ 'advertiser',
5809
+ 'get',
5810
+ ad.advertiserId,
5811
+ ])) === null || _a === void 0 ? void 0 : _a.data;
5812
+ if (!advertiserData)
5813
+ return;
5814
+ const avatarFile = (_b = pullFromCache([
5815
+ 'file',
5816
+ 'get',
5817
+ advertiserData.avatarFileId,
5818
+ ])) === null || _b === void 0 ? void 0 : _b.data;
5819
+ return Object.assign(Object.assign({}, advertiserData), { avatar: avatarFile });
5820
+ },
5821
+ get image1_1() {
5822
+ const cacheData = pullFromCache(['file', 'get', image11]);
5823
+ if (!cacheData)
5824
+ return undefined;
5825
+ return cacheData.data || undefined;
5826
+ },
5827
+ get image9_16() {
5828
+ const cacheData = pullFromCache(['file', 'get', image916]);
5829
+ if (!cacheData)
5830
+ return undefined;
5831
+ return cacheData.data || undefined;
5832
+ } });
5833
+ };
5834
+
5757
5835
  const LinkedObject = {
5836
+ ad: adLinkedObject,
5758
5837
  comment: commentLinkedObject,
5759
5838
  post: postLinkedObject,
5760
5839
  user: userLinkedObject,
@@ -8846,7 +8925,7 @@ const login = async (params, sessionHandler, config) => {
8846
8925
  // default values
8847
8926
  const defaultDeviceId = await getDeviceId();
8848
8927
  try {
8849
- const { users } = await setClientToken(Object.assign(Object.assign({}, params), { displayName: (params === null || params === void 0 ? void 0 : params.displayName) || params.userId, deviceId: (params === null || params === void 0 ? void 0 : params.deviceId) || defaultDeviceId }));
8928
+ const { users } = await setClientToken(Object.assign(Object.assign({}, params), { displayName: params === null || params === void 0 ? void 0 : params.displayName, deviceId: (params === null || params === void 0 ? void 0 : params.deviceId) || defaultDeviceId }));
8850
8929
  const user = users.find(u => u.userId === params.userId);
8851
8930
  if (user == null) {
8852
8931
  throw new ASCError(`${params.userId} has not been founded`, 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
@@ -9726,7 +9805,7 @@ const getUserUnread = (callback) => {
9726
9805
  };
9727
9806
  };
9728
9807
 
9729
- var index$k = /*#__PURE__*/Object.freeze({
9808
+ var index$l = /*#__PURE__*/Object.freeze({
9730
9809
  __proto__: null,
9731
9810
  getActiveClient: getActiveClient,
9732
9811
  getActiveUser: getActiveUser,
@@ -10889,7 +10968,7 @@ const getMyFollowInfo = (callback) => {
10889
10968
  };
10890
10969
  /* end_public_function */
10891
10970
 
10892
- var index$j = /*#__PURE__*/Object.freeze({
10971
+ var index$k = /*#__PURE__*/Object.freeze({
10893
10972
  __proto__: null,
10894
10973
  blockUser: blockUser,
10895
10974
  unBlockUser: unBlockUser,
@@ -11776,9 +11855,9 @@ const getReachedUsers = (params, callback) => {
11776
11855
  };
11777
11856
  };
11778
11857
 
11779
- var index$i = /*#__PURE__*/Object.freeze({
11858
+ var index$j = /*#__PURE__*/Object.freeze({
11780
11859
  __proto__: null,
11781
- Relationship: index$j,
11860
+ Relationship: index$k,
11782
11861
  getUserByIds: getUserByIds,
11783
11862
  updateUser: updateUser,
11784
11863
  flagUser: flagUser,
@@ -12206,7 +12285,7 @@ const observeFile = (fileId, callback) => {
12206
12285
  };
12207
12286
  };
12208
12287
 
12209
- var index$h = /*#__PURE__*/Object.freeze({
12288
+ var index$i = /*#__PURE__*/Object.freeze({
12210
12289
  __proto__: null,
12211
12290
  getFile: getFile,
12212
12291
  uploadFile: uploadFile,
@@ -13658,7 +13737,7 @@ const getReactions = (params, callback, config) => {
13658
13737
  };
13659
13738
  /* end_public_function */
13660
13739
 
13661
- var index$g = /*#__PURE__*/Object.freeze({
13740
+ var index$h = /*#__PURE__*/Object.freeze({
13662
13741
  __proto__: null,
13663
13742
  addReaction: addReaction,
13664
13743
  removeReaction: removeReaction,
@@ -15896,7 +15975,7 @@ const observeMessages = (subChannelId, callback) => {
15896
15975
  };
15897
15976
  };
15898
15977
 
15899
- var index$f = /*#__PURE__*/Object.freeze({
15978
+ var index$g = /*#__PURE__*/Object.freeze({
15900
15979
  __proto__: null,
15901
15980
  getMessageByIds: getMessages$1,
15902
15981
  createMessage: createMessage,
@@ -16505,7 +16584,7 @@ const stopMessageReceiptSync = (subChannelId) => {
16505
16584
  };
16506
16585
  /* end_public_function */
16507
16586
 
16508
- var index$e = /*#__PURE__*/Object.freeze({
16587
+ var index$f = /*#__PURE__*/Object.freeze({
16509
16588
  __proto__: null,
16510
16589
  getSubChannelByIds: getSubChannels$1,
16511
16590
  createSubChannel: createSubChannel,
@@ -17623,7 +17702,7 @@ const searchMembers$1 = (params, callback, config) => {
17623
17702
  };
17624
17703
  /* end_public_function */
17625
17704
 
17626
- var index$d = /*#__PURE__*/Object.freeze({
17705
+ var index$e = /*#__PURE__*/Object.freeze({
17627
17706
  __proto__: null,
17628
17707
  addMembers: addMembers$1,
17629
17708
  removeMembers: removeMembers$1,
@@ -17826,7 +17905,7 @@ const unmuteMembers = async (channelId, userIds) => {
17826
17905
  };
17827
17906
  /* end_public_function */
17828
17907
 
17829
- var index$c = /*#__PURE__*/Object.freeze({
17908
+ var index$d = /*#__PURE__*/Object.freeze({
17830
17909
  __proto__: null,
17831
17910
  addRole: addRole,
17832
17911
  removeRole: removeRole,
@@ -17836,10 +17915,10 @@ var index$c = /*#__PURE__*/Object.freeze({
17836
17915
  unmuteMembers: unmuteMembers
17837
17916
  });
17838
17917
 
17839
- var index$b = /*#__PURE__*/Object.freeze({
17918
+ var index$c = /*#__PURE__*/Object.freeze({
17840
17919
  __proto__: null,
17841
- Membership: index$d,
17842
- Moderation: index$c,
17920
+ Membership: index$e,
17921
+ Moderation: index$d,
17843
17922
  getChannelByIds: getChannelByIds,
17844
17923
  createChannel: createChannel,
17845
17924
  updateChannel: updateChannel,
@@ -19199,7 +19278,7 @@ const searchMembers = (params, callback, config) => {
19199
19278
  };
19200
19279
  /* end_public_function */
19201
19280
 
19202
- var index$a = /*#__PURE__*/Object.freeze({
19281
+ var index$b = /*#__PURE__*/Object.freeze({
19203
19282
  __proto__: null,
19204
19283
  addMembers: addMembers,
19205
19284
  removeMembers: removeMembers,
@@ -19980,7 +20059,7 @@ const unbanMembers = async (communityId, userIds) => {
19980
20059
  };
19981
20060
  /* end_public_function */
19982
20061
 
19983
- var index$9 = /*#__PURE__*/Object.freeze({
20062
+ var index$a = /*#__PURE__*/Object.freeze({
19984
20063
  __proto__: null,
19985
20064
  addRoles: addRoles,
19986
20065
  removeRoles: removeRoles,
@@ -19988,10 +20067,10 @@ var index$9 = /*#__PURE__*/Object.freeze({
19988
20067
  unbanMembers: unbanMembers
19989
20068
  });
19990
20069
 
19991
- var index$8 = /*#__PURE__*/Object.freeze({
20070
+ var index$9 = /*#__PURE__*/Object.freeze({
19992
20071
  __proto__: null,
19993
- Moderation: index$9,
19994
- Membership: index$a,
20072
+ Moderation: index$a,
20073
+ Membership: index$b,
19995
20074
  getCommunityByIds: getCommunities$1,
19996
20075
  createCommunity: createCommunity,
19997
20076
  updateCommunity: updateCommunity,
@@ -20224,7 +20303,7 @@ const getCategories = (params, callback, config) => {
20224
20303
  };
20225
20304
  /* end_public_function */
20226
20305
 
20227
- var index$7 = /*#__PURE__*/Object.freeze({
20306
+ var index$8 = /*#__PURE__*/Object.freeze({
20228
20307
  __proto__: null,
20229
20308
  getCategory: getCategory,
20230
20309
  getCategories: getCategories
@@ -20434,7 +20513,7 @@ getCustomRankingGlobalFeed.locally = (query) => {
20434
20513
  : undefined;
20435
20514
  };
20436
20515
 
20437
- var index$6 = /*#__PURE__*/Object.freeze({
20516
+ var index$7 = /*#__PURE__*/Object.freeze({
20438
20517
  __proto__: null,
20439
20518
  queryGlobalFeed: queryGlobalFeed,
20440
20519
  getCustomRankingGlobalFeed: getCustomRankingGlobalFeed
@@ -21626,48 +21705,160 @@ const getComment = (commentId, callback) => {
21626
21705
  };
21627
21706
  /* end_public_function */
21628
21707
 
21629
- const convertToInternalComment = (commentPayload) => {
21630
- const { comments } = commentPayload;
21631
- return Object.assign(Object.assign({}, commentPayload), { comments: comments.map(comment => {
21632
- if (comment.hasOwnProperty('myReactions'))
21633
- return comment;
21634
- // Sometimes `myReactions` field will not come with BE response because that field is empty
21635
- // We need to put it with an empty array manually to make it show up in client side
21636
- return Object.assign({ myReactions: [] }, comment);
21637
- }) });
21638
- };
21708
+ class CommentPaginationController extends PaginationController {
21709
+ async getRequest(queryParams, token) {
21710
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, includeDeleted } = queryParams, params = __rest(queryParams, ["limit", "includeDeleted"]);
21711
+ const options = token ? { token } : { limit };
21712
+ const { data: queryResponse } = await this.http.get(`/api/v3/comments`, {
21713
+ params: Object.assign(Object.assign({}, params), { isDeleted: inferIsDeleted(includeDeleted), options }),
21714
+ });
21715
+ return queryResponse;
21716
+ }
21717
+ }
21639
21718
 
21640
- const queryComments = async (query) => {
21641
- const client = getActiveClient();
21642
- client.log('comment/queryComments', query);
21643
- const { limit = 10, includeDeleted } = query, params = __rest(query, ["limit", "includeDeleted"]);
21644
- const options = {
21645
- type: params.sortBy || query.limit ? 'pagination' : undefined,
21646
- limit: query.limit,
21647
- token: query.page,
21648
- };
21649
- // const filterByParentId = query.parentId !== undefined
21650
- // API-FIX: parameters should be querystring. (1)
21651
- // API-FIX: backend should answer Amity.Response (2)
21652
- // const { data } = await client.http.get<Amity.Response<Amity.PagedResponse<Amity.CommentPayload>>>(
21653
- const { data } = await client.http.get(`/api/v3/comments`, {
21654
- params: Object.assign(Object.assign({}, params), { isDeleted: inferIsDeleted(includeDeleted),
21655
- // filterByParentId, API-FIX: backend does not support this boolean LOL. what the hell seriously.
21656
- options }),
21657
- });
21658
- // API-FIX: backend should answer Amity.Response (2)
21659
- // const { paging, comments } = unwrapPayload(data)
21660
- const { paging } = data, payload = __rest(data, ["paging"]);
21661
- const processedData = convertToInternalComment(payload);
21662
- const { comments } = processedData;
21663
- const cachedAt = client.cache && Date.now();
21664
- if (client.cache) {
21665
- ingestInCache(processedData, { cachedAt });
21666
- const cacheKey = ['comment', 'query', Object.assign(Object.assign({}, params), { options: { limit } })];
21667
- pushToCache(cacheKey, { comments: comments.map(getResolver('comment')), paging });
21719
+ var EnumCommentActions;
21720
+ (function (EnumCommentActions) {
21721
+ EnumCommentActions["OnCommentCreated"] = "onCommentCreated";
21722
+ EnumCommentActions["OnCommentUpdated"] = "onCommentUpdated";
21723
+ EnumCommentActions["OnCommentDeleted"] = "onCommentDeleted";
21724
+ EnumCommentActions["OnCommentFlagged"] = "onCommentFlagged";
21725
+ EnumCommentActions["OnCommentUnflagged"] = "onCommentUnflagged";
21726
+ EnumCommentActions["OnCommentReactionAdded"] = "onCommentReactionAdded";
21727
+ EnumCommentActions["OnCommentReactionRemoved"] = "onCommentReactionRemoved";
21728
+ })(EnumCommentActions || (EnumCommentActions = {}));
21729
+
21730
+ class CommentQueryStreamController extends QueryStreamController {
21731
+ constructor(query, cacheKey, notifyChange, preparePayload) {
21732
+ super(query, cacheKey);
21733
+ this.notifyChange = notifyChange;
21734
+ this.preparePayload = preparePayload;
21668
21735
  }
21669
- return { data: comments, cachedAt, paging };
21670
- };
21736
+ async saveToMainDB(response) {
21737
+ const processedPayload = await this.preparePayload(response);
21738
+ const client = getActiveClient();
21739
+ const cachedAt = client.cache && Date.now();
21740
+ if (client.cache) {
21741
+ ingestInCache(processedPayload, { cachedAt });
21742
+ }
21743
+ }
21744
+ appendToQueryStream(response, direction, refresh = false) {
21745
+ var _a, _b;
21746
+ if (refresh) {
21747
+ pushToCache(this.cacheKey, {
21748
+ data: response.comments.map(getResolver('comment')),
21749
+ });
21750
+ }
21751
+ else {
21752
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
21753
+ const comments = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
21754
+ pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [...new Set([...comments, ...response.comments.map(getResolver('comment'))])] }));
21755
+ }
21756
+ }
21757
+ reactor(action) {
21758
+ return (comment) => {
21759
+ var _a;
21760
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
21761
+ if (this.query.referenceId !== comment.referenceId ||
21762
+ this.query.referenceType !== comment.referenceType ||
21763
+ !collection) {
21764
+ return;
21765
+ }
21766
+ if (action === EnumCommentActions.OnCommentCreated) {
21767
+ collection.data = [...new Set([comment.commentId, ...collection.data])];
21768
+ }
21769
+ else if (action === EnumCommentActions.OnCommentDeleted) {
21770
+ collection.data = collection.data.filter(p => p !== comment.commentId);
21771
+ }
21772
+ pushToCache(this.cacheKey, collection);
21773
+ this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
21774
+ };
21775
+ }
21776
+ subscribeRTE(createSubscriber) {
21777
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
21778
+ }
21779
+ }
21780
+
21781
+ function prepareCommentPayload(comment) {
21782
+ return comment;
21783
+ }
21784
+
21785
+ class CommentLiveCollectionController extends LiveCollectionController {
21786
+ constructor(query, callback) {
21787
+ const queryStreamId = hash__default["default"](query);
21788
+ const cacheKey = ['comments', 'collection', queryStreamId];
21789
+ const paginationController = new CommentPaginationController(query);
21790
+ super(paginationController, queryStreamId, cacheKey, callback);
21791
+ this.query = query;
21792
+ this.queryStreamController = new CommentQueryStreamController(this.query, this.cacheKey, this.notifyChange.bind(this), prepareCommentPayload);
21793
+ this.callback = callback.bind(this);
21794
+ this.loadPage({ initial: true });
21795
+ }
21796
+ setup() {
21797
+ var _a;
21798
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
21799
+ if (!collection) {
21800
+ pushToCache(this.cacheKey, {
21801
+ data: [],
21802
+ params: {},
21803
+ });
21804
+ }
21805
+ }
21806
+ async persistModel(queryPayload) {
21807
+ await this.queryStreamController.saveToMainDB(queryPayload);
21808
+ }
21809
+ persistQueryStream({ response, direction, refresh, }) {
21810
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
21811
+ }
21812
+ startSubscription() {
21813
+ return this.queryStreamController.subscribeRTE([
21814
+ { fn: onCommentCreated, action: EnumCommentActions.OnCommentCreated },
21815
+ { fn: onCommentUpdated, action: EnumCommentActions.OnCommentUpdated },
21816
+ { fn: onCommentDeleted, action: EnumCommentActions.OnCommentDeleted },
21817
+ { fn: onCommentFlagged, action: EnumCommentActions.OnCommentFlagged },
21818
+ { fn: onCommentUnflagged, action: EnumCommentActions.OnCommentUnflagged },
21819
+ { fn: onCommentReactionAdded, action: EnumCommentActions.OnCommentReactionAdded },
21820
+ { fn: onCommentReactionRemoved, action: EnumCommentActions.OnCommentReactionRemoved },
21821
+ ]);
21822
+ }
21823
+ notifyChange({ origin, loading, error }) {
21824
+ var _a, _b;
21825
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
21826
+ if (!collection)
21827
+ return;
21828
+ const data = this.applyFilter((_b = collection.data
21829
+ .map(id => pullFromCache(['comments', 'get', id]))
21830
+ .filter(isNonNullable)
21831
+ .map(({ data }) => data)) !== null && _b !== void 0 ? _b : []).map(LinkedObject.comment);
21832
+ if (!this.shouldNotify(data) && origin === 'event')
21833
+ return;
21834
+ this.callback({
21835
+ onNextPage: () => this.loadPage({ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */ }),
21836
+ data,
21837
+ hasNextPage: !!this.paginationController.getNextToken(),
21838
+ loading,
21839
+ error,
21840
+ });
21841
+ }
21842
+ applyFilter(data) {
21843
+ let comments = data;
21844
+ if (this.query.includeDeleted) {
21845
+ comments = filterByPropEquality(comments, 'isDeleted', false);
21846
+ }
21847
+ if (this.query.parentId) {
21848
+ comments = comments.filter(comment => comment.parentId === this.query.parentId);
21849
+ }
21850
+ switch (this.query.sortBy) {
21851
+ case 'firstCreated':
21852
+ comments = comments.sort(sortByFirstCreated);
21853
+ break;
21854
+ case 'lastCreated':
21855
+ default:
21856
+ comments = comments.sort(sortByLastCreated);
21857
+ break;
21858
+ }
21859
+ return comments;
21860
+ }
21861
+ }
21671
21862
 
21672
21863
  /* begin_public_function
21673
21864
  id: comment.query
@@ -21699,82 +21890,9 @@ const getComments = (params, callback, config) => {
21699
21890
  }
21700
21891
  const timestamp = Date.now();
21701
21892
  log(`getComments(tmpid: ${timestamp}) > listen`);
21702
- const { limit: queryLimit } = params, queryParams = __rest(params, ["limit"]);
21703
- const { policy = COLLECTION_DEFAULT_CACHING_POLICY } = config !== null && config !== void 0 ? config : {};
21704
- const disposers = [];
21705
- const sortBy = params.sortBy ? params.sortBy : 'lastCreated';
21706
- const cacheKey = [
21707
- 'comment',
21708
- 'collection',
21709
- {
21710
- referenceId: params.referenceType,
21711
- referenceType: params.referenceId,
21712
- parentId: (params === null || params === void 0 ? void 0 : params.parentId) || '',
21713
- sortBy,
21714
- },
21715
- ];
21716
- const responder = (data) => {
21717
- var _a, _b;
21718
- let comments = (_a = data.data
21719
- .map(commentId => pullFromCache(['comment', 'get', commentId]))
21720
- .filter(({ data }) => data.parentId === (params === null || params === void 0 ? void 0 : params.parentId))
21721
- .filter(Boolean)
21722
- .map(({ data }) => LinkedObject.comment(data))) !== null && _a !== void 0 ? _a : [];
21723
- if (!params.includeDeleted) {
21724
- comments = filterByPropEquality(comments, 'isDeleted', false);
21725
- }
21726
- comments = comments.sort(sortBy === 'lastCreated' ? sortByLastCreated : sortByFirstCreated);
21727
- callback({
21728
- onNextPage: onFetch,
21729
- data: comments,
21730
- hasNextPage: !!((_b = data.params) === null || _b === void 0 ? void 0 : _b.page),
21731
- loading: data.loading,
21732
- error: data.error,
21733
- });
21734
- };
21735
- const realtimeRouter = (action) => (comment) => {
21736
- var _a;
21737
- const collection = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
21738
- if (params.referenceId !== comment.referenceId ||
21739
- params.referenceType !== comment.referenceType ||
21740
- !collection) {
21741
- return;
21742
- }
21743
- if (action === 'onCreate') {
21744
- collection.data = [...new Set([comment.commentId, ...collection.data])];
21745
- }
21746
- else if (action === 'onDelete') {
21747
- collection.data = collection.data.filter(p => p !== comment.commentId);
21748
- }
21749
- pushToCache(cacheKey, collection);
21750
- responder(collection);
21751
- };
21752
- const onFetch = (initial = false) => {
21753
- var _a, _b, _c;
21754
- const collection = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
21755
- const comments = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
21756
- if (!initial && comments.length > 0 && !((_c = collection === null || collection === void 0 ? void 0 : collection.params) === null || _c === void 0 ? void 0 : _c.page))
21757
- return;
21758
- const query = createQuery(queryComments, Object.assign(Object.assign({}, queryParams), { limit: queryLimit, page: !initial ? collection === null || collection === void 0 ? void 0 : collection.params.page : undefined }));
21759
- runQuery(query, ({ data: result, error, loading, paging }) => {
21760
- const page = paging === null || paging === void 0 ? void 0 : paging.next;
21761
- const data = {
21762
- loading,
21763
- error,
21764
- params: { page },
21765
- data: comments,
21766
- };
21767
- if (result) {
21768
- data.data = initial
21769
- ? result.map(getResolver('comment')) // Replace a collection list with new data from BE
21770
- : [...new Set([...comments, ...result.map(getResolver('comment'))])];
21771
- }
21772
- pushToCache(cacheKey, data);
21773
- responder(data);
21774
- }, queryOptions(policy, CACHE_SHORTEN_LIFESPAN));
21775
- };
21776
- disposers.push(onCommentCreated(realtimeRouter('onCreate')), onCommentUpdated(realtimeRouter('onUpdate')), onCommentDeleted(realtimeRouter('onDelete')), onCommentFlagged(realtimeRouter('onFlagged')), onCommentUnflagged(realtimeRouter('onUnflagged')), onCommentReactionAdded(realtimeRouter('onReactionAdded')), onCommentReactionRemoved(realtimeRouter('onReactionRemoved')));
21777
- onFetch(true);
21893
+ const commentsLiveCollection = new CommentLiveCollectionController(params, callback);
21894
+ const disposers = commentsLiveCollection.startSubscription();
21895
+ const cacheKey = commentsLiveCollection.getCacheKey();
21778
21896
  disposers.push(() => dropFromCache(cacheKey));
21779
21897
  return () => {
21780
21898
  log(`getComments(tmpid: ${timestamp}) > dispose`);
@@ -21783,7 +21901,7 @@ const getComments = (params, callback, config) => {
21783
21901
  };
21784
21902
  /* end_public_function */
21785
21903
 
21786
- var index$5 = /*#__PURE__*/Object.freeze({
21904
+ var index$6 = /*#__PURE__*/Object.freeze({
21787
21905
  __proto__: null,
21788
21906
  getCommentByIds: getCommentByIds,
21789
21907
  createComment: createComment,
@@ -22096,7 +22214,7 @@ const getPosts = (params, callback, config) => {
22096
22214
  };
22097
22215
  /* end_public_function */
22098
22216
 
22099
- var index$4 = /*#__PURE__*/Object.freeze({
22217
+ var index$5 = /*#__PURE__*/Object.freeze({
22100
22218
  __proto__: null,
22101
22219
  getPostByIds: getPostByIds,
22102
22220
  createPost: createPost,
@@ -22666,7 +22784,7 @@ const getStreams = (params, callback, config) => {
22666
22784
  };
22667
22785
  /* end_public_function */
22668
22786
 
22669
- var index$3 = /*#__PURE__*/Object.freeze({
22787
+ var index$4 = /*#__PURE__*/Object.freeze({
22670
22788
  __proto__: null,
22671
22789
  createStream: createStream,
22672
22790
  updateStream: updateStream,
@@ -22999,7 +23117,7 @@ const getPoll = (pollId, callback) => {
22999
23117
  };
23000
23118
  /* end_public_function */
23001
23119
 
23002
- var index$2 = /*#__PURE__*/Object.freeze({
23120
+ var index$3 = /*#__PURE__*/Object.freeze({
23003
23121
  __proto__: null,
23004
23122
  createPoll: createPoll,
23005
23123
  closePoll: closePoll,
@@ -23371,7 +23489,7 @@ const getPlayer = async (parameters) => {
23371
23489
  return video;
23372
23490
  };
23373
23491
 
23374
- var index$1 = /*#__PURE__*/Object.freeze({
23492
+ var index$2 = /*#__PURE__*/Object.freeze({
23375
23493
  __proto__: null,
23376
23494
  getPlayer: getPlayer
23377
23495
  });
@@ -24444,7 +24562,7 @@ const getGlobalStoryTargets = (params, callback, config) => {
24444
24562
  };
24445
24563
  };
24446
24564
 
24447
- var index = /*#__PURE__*/Object.freeze({
24565
+ var index$1 = /*#__PURE__*/Object.freeze({
24448
24566
  __proto__: null,
24449
24567
  createImageStory: createImageStory,
24450
24568
  createVideoStory: createVideoStory,
@@ -24458,6 +24576,27 @@ var index = /*#__PURE__*/Object.freeze({
24458
24576
  getGlobalStoryTargets: getGlobalStoryTargets
24459
24577
  });
24460
24578
 
24579
+ const convertToNetworkAds = (data) => {
24580
+ const { ads, settings } = data;
24581
+ return {
24582
+ ads: ads.map(LinkedObject.ad),
24583
+ settings,
24584
+ };
24585
+ };
24586
+ const getNetworkAds = async () => {
24587
+ const client = getActiveClient();
24588
+ const { data } = await client.http.get('/api/v1/ads/me');
24589
+ const { settings } = data, rest = __rest(data, ["settings"]);
24590
+ ingestInCache(rest);
24591
+ pushToCache(['ad', 'setting'], settings);
24592
+ return convertToNetworkAds(data);
24593
+ };
24594
+
24595
+ var index = /*#__PURE__*/Object.freeze({
24596
+ __proto__: null,
24597
+ getNetworkAds: getNetworkAds
24598
+ });
24599
+
24461
24600
  /**
24462
24601
  * Retrieves accessToken info to use in Beta services
24463
24602
  *
@@ -24481,29 +24620,30 @@ const createUserToken = async (apiKey, apiRegion, params) => {
24481
24620
  };
24482
24621
 
24483
24622
  exports.API_REGIONS = API_REGIONS;
24484
- exports.CategoryRepository = index$7;
24485
- exports.ChannelRepository = index$b;
24486
- exports.Client = index$k;
24487
- exports.CommentRepository = index$5;
24623
+ exports.AdRepository = index;
24624
+ exports.CategoryRepository = index$8;
24625
+ exports.ChannelRepository = index$c;
24626
+ exports.Client = index$l;
24627
+ exports.CommentRepository = index$6;
24488
24628
  exports.CommunityPostSettingMaps = CommunityPostSettingMaps;
24489
24629
  exports.CommunityPostSettings = CommunityPostSettings;
24490
- exports.CommunityRepository = index$8;
24630
+ exports.CommunityRepository = index$9;
24491
24631
  exports.ContentFeedType = ContentFeedType;
24492
24632
  exports.DefaultCommunityPostSetting = DefaultCommunityPostSetting;
24493
- exports.FeedRepository = index$6;
24494
- exports.FileRepository = index$h;
24633
+ exports.FeedRepository = index$7;
24634
+ exports.FileRepository = index$i;
24495
24635
  exports.FileType = FileType;
24496
- exports.LiveStreamPlayer = index$1;
24636
+ exports.LiveStreamPlayer = index$2;
24497
24637
  exports.MessageContentType = MessageContentType;
24498
- exports.MessageRepository = index$f;
24499
- exports.PollRepository = index$2;
24638
+ exports.MessageRepository = index$g;
24639
+ exports.PollRepository = index$3;
24500
24640
  exports.PostContentType = PostContentType;
24501
- exports.PostRepository = index$4;
24502
- exports.ReactionRepository = index$g;
24503
- exports.StoryRepository = index;
24504
- exports.StreamRepository = index$3;
24505
- exports.SubChannelRepository = index$e;
24506
- exports.UserRepository = index$i;
24641
+ exports.PostRepository = index$5;
24642
+ exports.ReactionRepository = index$h;
24643
+ exports.StoryRepository = index$1;
24644
+ exports.StreamRepository = index$4;
24645
+ exports.SubChannelRepository = index$f;
24646
+ exports.UserRepository = index$j;
24507
24647
  exports.VERSION = VERSION;
24508
24648
  exports.VideoResolution = VideoResolution;
24509
24649
  exports.VideoSize = VideoSize;