@amityco/ts-sdk 7.7.1-c6a1e2a.0 → 7.7.1-cfb204b8.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 (107) hide show
  1. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/core/payload.d.ts +3 -8
  2. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/core/payload.d.ts.map +1 -1
  3. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/core/payload.js.map +1 -1
  4. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/hashtag.d.ts +11 -0
  5. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/hashtag.d.ts.map +1 -0
  6. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/hashtag.js +2 -0
  7. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/hashtag.js.map +1 -0
  8. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/post.d.ts +4 -1
  9. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/post.d.ts.map +1 -1
  10. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/post.js.map +1 -1
  11. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/index.d.ts +1 -0
  12. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/index.d.ts.map +1 -1
  13. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/index.js +1 -0
  14. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/index.js.map +1 -1
  15. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/channelRepository/events/onChannelSetMuted.d.ts.map +1 -1
  16. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/channelRepository/events/onChannelSetMuted.js +8 -6
  17. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/channelRepository/events/onChannelSetMuted.js.map +1 -1
  18. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/createPost.d.ts +1 -1
  19. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/createPost.js.map +1 -1
  20. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/editPost.d.ts +1 -1
  21. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/editPost.js.map +1 -1
  22. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/getPostsByHashtag.d.ts +15 -0
  23. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/getPostsByHashtag.d.ts.map +1 -0
  24. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/getPostsByHashtag.js +61 -0
  25. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/getPostsByHashtag.js.map +1 -0
  26. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.d.ts +1 -0
  27. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.d.ts.map +1 -1
  28. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.js +1 -0
  29. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.js.map +1 -1
  30. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/queryPosts.js +2 -2
  31. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/queryPosts.js.map +1 -1
  32. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts +14 -0
  33. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts.map +1 -0
  34. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.js +126 -0
  35. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.js.map +1 -0
  36. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts +5 -0
  37. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts.map +1 -0
  38. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.js +26 -0
  39. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.js.map +1 -0
  40. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts +15 -0
  41. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts.map +1 -0
  42. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.js +65 -0
  43. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.js.map +1 -0
  44. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.d.ts +1 -0
  45. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.d.ts.map +1 -1
  46. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.js +1 -0
  47. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.js.map +1 -1
  48. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.d.ts +22 -0
  49. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.d.ts.map +1 -0
  50. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.js +45 -0
  51. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.js.map +1 -0
  52. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/streamRepository/events/onStreamViewerBanned.d.ts.map +1 -1
  53. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/streamRepository/events/onStreamViewerBanned.js +8 -5
  54. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/streamRepository/events/onStreamViewerBanned.js.map +1 -1
  55. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/streamRepository/events/onStreamViewerUnbanned.d.ts.map +1 -1
  56. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/streamRepository/events/onStreamViewerUnbanned.js +6 -3
  57. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/streamRepository/events/onStreamViewerUnbanned.js.map +1 -1
  58. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/tsconfig.tsbuildinfo +1 -1
  59. package/dist/@types/core/payload.d.ts +3 -8
  60. package/dist/@types/core/payload.d.ts.map +1 -1
  61. package/dist/@types/domains/hashtag.d.ts +11 -0
  62. package/dist/@types/domains/hashtag.d.ts.map +1 -0
  63. package/dist/@types/domains/post.d.ts +4 -1
  64. package/dist/@types/domains/post.d.ts.map +1 -1
  65. package/dist/@types/index.d.ts +1 -0
  66. package/dist/@types/index.d.ts.map +1 -1
  67. package/dist/channelRepository/events/onChannelSetMuted.d.ts.map +1 -1
  68. package/dist/index.cjs.js +310 -15
  69. package/dist/index.esm.js +310 -15
  70. package/dist/index.umd.js +4 -4
  71. package/dist/postRepository/api/createPost.d.ts +1 -1
  72. package/dist/postRepository/api/editPost.d.ts +1 -1
  73. package/dist/postRepository/api/getPostsByHashtag.d.ts +15 -0
  74. package/dist/postRepository/api/getPostsByHashtag.d.ts.map +1 -0
  75. package/dist/postRepository/api/index.d.ts +1 -0
  76. package/dist/postRepository/api/index.d.ts.map +1 -1
  77. package/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts +14 -0
  78. package/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts.map +1 -0
  79. package/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts +5 -0
  80. package/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts.map +1 -0
  81. package/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts +15 -0
  82. package/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts.map +1 -0
  83. package/dist/postRepository/observers/index.d.ts +1 -0
  84. package/dist/postRepository/observers/index.d.ts.map +1 -1
  85. package/dist/postRepository/observers/searchPostsByHashtag.d.ts +22 -0
  86. package/dist/postRepository/observers/searchPostsByHashtag.d.ts.map +1 -0
  87. package/dist/streamRepository/events/onStreamViewerBanned.d.ts.map +1 -1
  88. package/dist/streamRepository/events/onStreamViewerUnbanned.d.ts.map +1 -1
  89. package/package.json +1 -1
  90. package/src/@types/core/payload.ts +3 -4
  91. package/src/@types/domains/hashtag.ts +11 -0
  92. package/src/@types/domains/post.ts +8 -1
  93. package/src/@types/index.ts +1 -0
  94. package/src/channelRepository/events/onChannelSetMuted.ts +8 -6
  95. package/src/postRepository/api/createPost.ts +1 -1
  96. package/src/postRepository/api/editPost.ts +1 -1
  97. package/src/postRepository/api/getPostsByHashtag.ts +78 -0
  98. package/src/postRepository/api/index.ts +2 -0
  99. package/src/postRepository/api/queryPosts.ts +2 -2
  100. package/src/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.ts +180 -0
  101. package/src/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.ts +45 -0
  102. package/src/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.ts +99 -0
  103. package/src/postRepository/observers/index.ts +1 -0
  104. package/src/postRepository/observers/searchPostsByHashtag.ts +56 -0
  105. package/src/streamRepository/events/onStreamViewerBanned.ts +8 -5
  106. package/src/streamRepository/events/onStreamViewerUnbanned.ts +6 -4
  107. package/tsconfig.tsbuildinfo +1 -1
package/dist/index.esm.js CHANGED
@@ -22453,17 +22453,19 @@ const dispose$7 = (cb) => {
22453
22453
  const onChannelSetMuted = (callback) => {
22454
22454
  if (callbacks$7.length === 0) {
22455
22455
  const client = getActiveClient();
22456
- const filter = async (payload) => {
22456
+ const filter = async (payloads) => {
22457
22457
  var _a;
22458
- upsertInCache(['channel', 'get', payload.channelId], {
22459
- // If muteTimeout > now => user is muted
22460
- // Otherwise => user is unmuted
22461
- isMuted: Date.parse(payload.muteTimeout) > Date.now(),
22458
+ payloads.forEach(payload => {
22459
+ upsertInCache(['channel', 'get', payload.channelId], {
22460
+ // If muteTimeout > now => user is muted
22461
+ // Otherwise => user is unmuted
22462
+ isMuted: Date.parse(payload.muteTimeout) > Date.now(),
22463
+ });
22462
22464
  });
22463
22465
  const channel = (_a = pullFromCache([
22464
22466
  'channel',
22465
22467
  'get',
22466
- payload.channelId,
22468
+ payloads[0].channelId,
22467
22469
  ])) === null || _a === void 0 ? void 0 : _a.data;
22468
22470
  if (channel) {
22469
22471
  callbacks$7.forEach(cb => cb(channel));
@@ -33826,20 +33828,23 @@ const onStreamViewerBanned = (callback) => {
33826
33828
  const client = getActiveClient();
33827
33829
  const filter = (payloads) => {
33828
33830
  var _a;
33829
- const { list } = payloads;
33830
- list.forEach(payload => {
33831
+ payloads.forEach(streamBanned => {
33831
33832
  var _a;
33832
- mergeInCache(['stream', 'get', payload.streamId], { watcherUrl: null });
33833
+ mergeInCache(['stream', 'get', streamBanned.streamId], { watcherUrl: null });
33833
33834
  // Update isDeleted = true in banned user's messages
33834
33835
  const messageCache = (_a = queryCache(['message', 'get'])) === null || _a === void 0 ? void 0 : _a.filter(
33835
33836
  // Check if creator id and user id are internal or external id
33836
- ({ data }) => data.creatorId === payload.userId);
33837
+ ({ data }) => data.creatorId === streamBanned.userId);
33837
33838
  // Update isDeleted for each relavant messages
33838
33839
  messageCache === null || messageCache === void 0 ? void 0 : messageCache.forEach(message => {
33839
33840
  mergeInCache(message.key, { isDeleted: true });
33840
33841
  });
33841
33842
  });
33842
- const stream = (_a = pullFromCache(['stream', 'get', list[0].streamId])) === null || _a === void 0 ? void 0 : _a.data;
33843
+ const stream = (_a = pullFromCache([
33844
+ 'stream',
33845
+ 'get',
33846
+ payloads[0].streamId,
33847
+ ])) === null || _a === void 0 ? void 0 : _a.data;
33843
33848
  if (!stream)
33844
33849
  return;
33845
33850
  callback(stream);
@@ -39758,6 +39763,60 @@ const createClipPost = async (bundle) => {
39758
39763
  };
39759
39764
  /* end_public_function */
39760
39765
 
39766
+ /**
39767
+ * ```js
39768
+ * import { PostRepository } from '@amityco/ts-sdk';
39769
+ * const { data: posts, prevPage, nextPage } = await PostRepository.searchPostsByHashtag({ hashtags: ['amity'], limit: 10 });
39770
+ * ```
39771
+ *
39772
+ * Queries a paginable list of {@link Amity.Post} objects
39773
+ *
39774
+ * @param query The query parameters
39775
+ * @returns posts
39776
+ * @category Post API
39777
+ * @async
39778
+ */
39779
+ const getPostsByHashtag = async (query) => {
39780
+ const client = getActiveClient();
39781
+ client.log('post/queryByHashtag', query);
39782
+ const { page, limit = 10 } = query, params = __rest(query, ["page", "limit"]);
39783
+ const { dataTypes, matchingOnlyParentPost, hashtags } = params;
39784
+ const options = (() => {
39785
+ if (page)
39786
+ return { token: page };
39787
+ if (limit)
39788
+ return { limit };
39789
+ return undefined;
39790
+ })();
39791
+ // API-FIX: parameters should be querystring. (1)
39792
+ // API-FIX: backend should answer Amity.Response (2)
39793
+ // const { data } = await client.http.get<Amity.Response<Amity.PagedResponse<Amity.PostPayload>>>(
39794
+ const { data } = await client.http.get(`/api/v1/search/posts`, {
39795
+ params: Object.assign(Object.assign({}, params), { hashtags,
39796
+ /*
39797
+ * when creating post like image, file, video BE will create 2 posts
39798
+ * 1. parent post to store text with dataType=text
39799
+ * 2. child post to store dataTypes post data
39800
+ *
39801
+ * By default, BE queries only parent post
39802
+ */
39803
+ matchingOnlyParentPost: matchingOnlyParentPost !== null && matchingOnlyParentPost !== void 0 ? matchingOnlyParentPost : !(dataTypes === null || dataTypes === void 0 ? void 0 : dataTypes.length), options }),
39804
+ });
39805
+ // API-FIX: backend should answer Amity.Response (2)
39806
+ // const { paging, posts } = unwrapPayload(data)
39807
+ // unpacking
39808
+ const { paging } = data, payload = __rest(data, ["paging"]);
39809
+ const preparedPayload = prepareMembershipPayload(payload, 'communityUsers');
39810
+ const { posts } = payload;
39811
+ const cachedAt = client.cache && Date.now();
39812
+ if (client.cache) {
39813
+ ingestInCache(preparedPayload, { cachedAt });
39814
+ const cacheKey = ['post', 'query', Object.assign(Object.assign({}, params), { options })];
39815
+ pushToCache(cacheKey, { posts: posts.map(getResolver('post')), paging });
39816
+ }
39817
+ return { data: posts.map(LinkedObject.post), cachedAt, paging };
39818
+ };
39819
+
39761
39820
  /* begin_public_function
39762
39821
  id: comment.get_by_ids
39763
39822
  */
@@ -41645,6 +41704,237 @@ const semanticSearchPosts = (params, callback, config) => {
41645
41704
  };
41646
41705
  };
41647
41706
 
41707
+ class SearchPostPaginationController extends PaginationController {
41708
+ async getRequest(queryParams, token) {
41709
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, matchingOnlyParentPost, hashtags } = queryParams, params = __rest(queryParams, ["limit", "matchingOnlyParentPost", "hashtags"]);
41710
+ const { dataTypes } = params;
41711
+ const baseOptions = {
41712
+ type: params.sortBy || queryParams.limit ? 'pagination' : undefined,
41713
+ };
41714
+ const options = token ? Object.assign(Object.assign({}, baseOptions), { token }) : Object.assign(Object.assign({}, baseOptions), { limit });
41715
+ const { data: queryResponse } = await this.http.get(`/api/v1/search/posts`, {
41716
+ params: Object.assign(Object.assign({}, params), { hashtags,
41717
+ /*
41718
+ * when creating post like image, file, video BE will create 2 posts
41719
+ * 1. parent post to store text with dataType=text
41720
+ * 2. child post to store dataTypes post data
41721
+ *
41722
+ * By default, BE queries only parent post
41723
+ */
41724
+ matchingOnlyParentPost: matchingOnlyParentPost !== null && matchingOnlyParentPost !== void 0 ? matchingOnlyParentPost : !(dataTypes === null || dataTypes === void 0 ? void 0 : dataTypes.length), options }),
41725
+ });
41726
+ return queryResponse;
41727
+ }
41728
+ }
41729
+
41730
+ class SearchPostQueryStreamController extends QueryStreamController {
41731
+ constructor(query, cacheKey, notifyChange, preparePayload) {
41732
+ super(query, cacheKey);
41733
+ this.notifyChange = notifyChange;
41734
+ this.preparePayload = preparePayload;
41735
+ }
41736
+ async saveToMainDB(response) {
41737
+ const processedPayload = await this.preparePayload(response);
41738
+ const client = getActiveClient();
41739
+ const cachedAt = client.cache && Date.now();
41740
+ if (client.cache) {
41741
+ ingestInCache(processedPayload, { cachedAt });
41742
+ }
41743
+ }
41744
+ appendToQueryStream(response, direction, refresh = false) {
41745
+ var _a, _b;
41746
+ if (refresh) {
41747
+ pushToCache(this.cacheKey, {
41748
+ data: response.posts.map(getResolver('post')),
41749
+ });
41750
+ }
41751
+ else {
41752
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
41753
+ const posts = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
41754
+ pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [...new Set([...posts, ...response.posts.map(getResolver('post'))])] }));
41755
+ }
41756
+ }
41757
+ reactor(action) {
41758
+ return (post) => {
41759
+ var _a, _b;
41760
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
41761
+ if (!collection)
41762
+ return;
41763
+ if (post.parentPostId && post.isDeleted) {
41764
+ const parentPost = (_b = pullFromCache([
41765
+ 'post',
41766
+ 'get',
41767
+ post.parentPostId,
41768
+ ])) === null || _b === void 0 ? void 0 : _b.data;
41769
+ if (!parentPost)
41770
+ return;
41771
+ parentPost.children = parentPost.children.filter(childId => childId !== post.postId);
41772
+ pushToCache(['post', 'get', parentPost.postId], parentPost);
41773
+ }
41774
+ if (action === EnumPostActions.OnPostDeclined) {
41775
+ collection.data = collection.data.filter(postId => postId !== post.postId);
41776
+ }
41777
+ if (action === EnumPostActions.OnPostCreated || action === EnumPostActions.OnPostApproved) {
41778
+ collection.data = [...new Set([post.postId, ...collection.data])];
41779
+ }
41780
+ pushToCache(this.cacheKey, collection);
41781
+ this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
41782
+ };
41783
+ }
41784
+ subscribeRTE(createSubscriber) {
41785
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
41786
+ }
41787
+ }
41788
+
41789
+ class SearchPostLiveCollectionController extends LiveCollectionController {
41790
+ constructor(query, callback) {
41791
+ const queryStreamId = hash(query);
41792
+ const cacheKey = ['posts', 'collection', queryStreamId];
41793
+ const paginationController = new SearchPostPaginationController(query);
41794
+ super(paginationController, queryStreamId, cacheKey, callback);
41795
+ this.query = query;
41796
+ this.queryStreamController = new SearchPostQueryStreamController(this.query, this.cacheKey, this.notifyChange.bind(this), preparePostPayload);
41797
+ this.callback = callback.bind(this);
41798
+ this.loadPage({ initial: true });
41799
+ }
41800
+ setup() {
41801
+ var _a;
41802
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
41803
+ if (!collection) {
41804
+ pushToCache(this.cacheKey, {
41805
+ data: [],
41806
+ params: {},
41807
+ });
41808
+ }
41809
+ }
41810
+ async persistModel(queryPayload) {
41811
+ await this.queryStreamController.saveToMainDB(queryPayload);
41812
+ }
41813
+ persistQueryStream({ response, direction, refresh, }) {
41814
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
41815
+ }
41816
+ startSubscription() {
41817
+ return this.queryStreamController.subscribeRTE([
41818
+ { fn: onPostCreated, action: EnumPostActions.OnPostCreated },
41819
+ { fn: onPostUpdated, action: EnumPostActions.OnPostUpdated },
41820
+ { fn: onPostUpdatedLocal, action: EnumPostActions.OnPostUpdated },
41821
+ { fn: onPostDeleted, action: EnumPostActions.OnPostDeleted },
41822
+ { fn: onPostFlagged, action: EnumPostActions.OnPostFlagged },
41823
+ { fn: onPostUnflagged, action: EnumPostActions.OnPostUnflagged },
41824
+ { fn: onPostApproved, action: EnumPostActions.OnPostApproved },
41825
+ { fn: onPostDeclined, action: EnumPostActions.OnPostDeclined },
41826
+ { fn: onPostReactionAdded, action: EnumPostActions.OnPostReactionAdded },
41827
+ { fn: onPostReactionRemoved, action: EnumPostActions.OnPostReactionRemoved },
41828
+ { fn: onLocalPostReactionAdded, action: EnumPostActions.OnPostReactionAdded },
41829
+ { fn: onLocalPostReactionRemoved, action: EnumPostActions.OnPostReactionRemoved },
41830
+ { fn: onLocalPostDeleted, action: EnumPostActions.OnPostDeleted },
41831
+ {
41832
+ fn: convertEventPayload((callback) => {
41833
+ return onCommentCreated(async (comment) => {
41834
+ var _a;
41835
+ const currentCollection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
41836
+ if (!currentCollection || currentCollection.data.includes(comment.referenceId))
41837
+ return;
41838
+ await getPost(comment.referenceId);
41839
+ callback(comment);
41840
+ });
41841
+ }, 'referenceId', 'post'),
41842
+ action: EnumPostActions.OnPostUpdated,
41843
+ },
41844
+ {
41845
+ fn: convertEventPayload((callback) => {
41846
+ return onCommentDeleted(async (comment) => {
41847
+ var _a;
41848
+ const currentCollection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
41849
+ if (!currentCollection || currentCollection.data.includes(comment.referenceId))
41850
+ return;
41851
+ await getPost(comment.referenceId);
41852
+ callback(comment);
41853
+ });
41854
+ }, 'referenceId', 'post'),
41855
+ action: EnumPostActions.OnPostUpdated,
41856
+ },
41857
+ ]);
41858
+ }
41859
+ notifyChange({ origin, loading, error }) {
41860
+ var _a, _b;
41861
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
41862
+ if (!collection)
41863
+ return;
41864
+ const data = this.applyFilter((_b = collection.data
41865
+ .map(id => pullFromCache(['post', 'get', id]))
41866
+ .filter(isNonNullable)
41867
+ .map(({ data }) => data)) !== null && _b !== void 0 ? _b : []).map(LinkedObject.post);
41868
+ if (!this.shouldNotify(data) && origin === 'event')
41869
+ return;
41870
+ this.callback({
41871
+ onNextPage: () => this.loadPage({ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */ }),
41872
+ data,
41873
+ hasNextPage: !!this.paginationController.getNextToken(),
41874
+ loading,
41875
+ error,
41876
+ });
41877
+ }
41878
+ applyFilter(data) {
41879
+ var _a;
41880
+ let posts = data;
41881
+ if ((_a = this.query.dataTypes) === null || _a === void 0 ? void 0 : _a.length) {
41882
+ posts = filterByPostDataTypes(posts, this.query.dataTypes);
41883
+ }
41884
+ switch (this.query.sortBy) {
41885
+ case 'firstCreated':
41886
+ posts = posts.sort(sortByFirstCreated);
41887
+ break;
41888
+ case 'lastCreated':
41889
+ default:
41890
+ posts = posts.sort(sortByLastCreated);
41891
+ break;
41892
+ }
41893
+ return posts;
41894
+ }
41895
+ }
41896
+
41897
+ /* begin_public_function
41898
+ id: post.query
41899
+ */
41900
+ /**
41901
+ * ```js
41902
+ * import { PostRepository } from '@amityco/ts-sdk'
41903
+ *
41904
+ * let posts = []
41905
+ * const unsub = PostRepository.searchPostsByHashtag({
41906
+ * hashtags: ['amity'],
41907
+ * limit: 10,
41908
+ * }, response => merge(posts, response.data))
41909
+ * ```
41910
+ *
41911
+ * Observe all mutations on a list of {@link Amity.Post} for a given target object
41912
+ *
41913
+ * @param params.hashtags the hashtags to search for
41914
+ * @param callback the function to call when new data are available
41915
+ * @param config
41916
+ * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
41917
+ *
41918
+ * @category Posts Live Collection
41919
+ */
41920
+ const searchPostsByHashtag = (params, callback, config) => {
41921
+ const { log, cache } = getActiveClient();
41922
+ if (!cache) {
41923
+ console.log(ENABLE_CACHE_MESSAGE);
41924
+ }
41925
+ const timestamp = Date.now();
41926
+ log(`searchPostsByHashtag(tmpid: ${timestamp}) > listen`);
41927
+ const postsLiveCollection = new SearchPostLiveCollectionController(params, callback);
41928
+ const disposers = postsLiveCollection.startSubscription();
41929
+ const cacheKey = postsLiveCollection.getCacheKey();
41930
+ disposers.push(() => dropFromCache(cacheKey));
41931
+ return () => {
41932
+ log(`searchPostsByHashtag(tmpid: ${timestamp}) > dispose`);
41933
+ disposers.forEach(fn => fn());
41934
+ };
41935
+ };
41936
+ /* end_public_function */
41937
+
41648
41938
  var index$8 = /*#__PURE__*/Object.freeze({
41649
41939
  __proto__: null,
41650
41940
  getPostByIds: getPostByIds,
@@ -41659,6 +41949,7 @@ var index$8 = /*#__PURE__*/Object.freeze({
41659
41949
  unflagPost: unflagPost,
41660
41950
  isPostFlaggedByMe: isPostFlaggedByMe,
41661
41951
  createClipPost: createClipPost,
41952
+ getPostsByHashtag: getPostsByHashtag,
41662
41953
  onPostCreated: onPostCreated,
41663
41954
  onPostUpdated: onPostUpdated,
41664
41955
  onPostDeleted: onPostDeleted,
@@ -41672,7 +41963,8 @@ var index$8 = /*#__PURE__*/Object.freeze({
41672
41963
  getPosts: getPosts,
41673
41964
  getPinnedPosts: getPinnedPosts,
41674
41965
  getGlobalPinnedPosts: getGlobalPinnedPosts,
41675
- semanticSearchPosts: semanticSearchPosts
41966
+ semanticSearchPosts: semanticSearchPosts,
41967
+ searchPostsByHashtag: searchPostsByHashtag
41676
41968
  });
41677
41969
 
41678
41970
  /* begin_public_function
@@ -42037,9 +42329,12 @@ const onStreamViewerUnbanned = (callback) => {
42037
42329
  const filter = async (payloads) => {
42038
42330
  var _a;
42039
42331
  // Get new stream object to restore stream watcherUrl in cache
42040
- const { list } = payloads;
42041
- await Promise.all(list.map(({ streamId }) => getStream(streamId)));
42042
- const stream = (_a = pullFromCache(['stream', 'get', list[0].streamId])) === null || _a === void 0 ? void 0 : _a.data;
42332
+ await Promise.all(payloads.map(({ streamId }) => getStream(streamId)));
42333
+ const stream = (_a = pullFromCache([
42334
+ 'stream',
42335
+ 'get',
42336
+ payloads[0].streamId,
42337
+ ])) === null || _a === void 0 ? void 0 : _a.data;
42043
42338
  if (!stream)
42044
42339
  return;
42045
42340
  callback(stream);