@amityco/ts-sdk 7.7.1-3f344102.0 → 7.7.1-4843378b.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 (99) hide show
  1. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/core/payload.d.ts +1 -2
  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 +8 -3
  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 +16 -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 +62 -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/observers/getPosts/PostPaginationController.d.ts.map +1 -1
  31. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPosts/PostPaginationController.js +2 -3
  32. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPosts/PostPaginationController.js.map +1 -1
  33. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts +14 -0
  34. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts.map +1 -0
  35. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.js +126 -0
  36. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.js.map +1 -0
  37. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts +5 -0
  38. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts.map +1 -0
  39. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.js +26 -0
  40. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.js.map +1 -0
  41. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts +15 -0
  42. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts.map +1 -0
  43. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.js +65 -0
  44. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.js.map +1 -0
  45. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.d.ts +1 -0
  46. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.d.ts.map +1 -1
  47. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.js +1 -0
  48. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.js.map +1 -1
  49. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.d.ts +22 -0
  50. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.d.ts.map +1 -0
  51. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.js +45 -0
  52. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.js.map +1 -0
  53. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/tsconfig.tsbuildinfo +1 -1
  54. package/dist/@types/core/payload.d.ts +1 -2
  55. package/dist/@types/core/payload.d.ts.map +1 -1
  56. package/dist/@types/domains/hashtag.d.ts +11 -0
  57. package/dist/@types/domains/hashtag.d.ts.map +1 -0
  58. package/dist/@types/domains/post.d.ts +8 -3
  59. package/dist/@types/domains/post.d.ts.map +1 -1
  60. package/dist/@types/index.d.ts +1 -0
  61. package/dist/@types/index.d.ts.map +1 -1
  62. package/dist/channelRepository/events/onChannelSetMuted.d.ts.map +1 -1
  63. package/dist/index.cjs.js +299 -9
  64. package/dist/index.esm.js +299 -9
  65. package/dist/index.umd.js +4 -4
  66. package/dist/postRepository/api/createPost.d.ts +1 -1
  67. package/dist/postRepository/api/editPost.d.ts +1 -1
  68. package/dist/postRepository/api/getPostsByHashtag.d.ts +16 -0
  69. package/dist/postRepository/api/getPostsByHashtag.d.ts.map +1 -0
  70. package/dist/postRepository/api/index.d.ts +1 -0
  71. package/dist/postRepository/api/index.d.ts.map +1 -1
  72. package/dist/postRepository/observers/getPosts/PostPaginationController.d.ts.map +1 -1
  73. package/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts +14 -0
  74. package/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts.map +1 -0
  75. package/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts +5 -0
  76. package/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts.map +1 -0
  77. package/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts +15 -0
  78. package/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts.map +1 -0
  79. package/dist/postRepository/observers/index.d.ts +1 -0
  80. package/dist/postRepository/observers/index.d.ts.map +1 -1
  81. package/dist/postRepository/observers/searchPostsByHashtag.d.ts +22 -0
  82. package/dist/postRepository/observers/searchPostsByHashtag.d.ts.map +1 -0
  83. package/package.json +1 -1
  84. package/src/@types/core/payload.ts +1 -2
  85. package/src/@types/domains/hashtag.ts +11 -0
  86. package/src/@types/domains/post.ts +12 -3
  87. package/src/@types/index.ts +1 -0
  88. package/src/channelRepository/events/onChannelSetMuted.ts +8 -6
  89. package/src/postRepository/api/createPost.ts +1 -1
  90. package/src/postRepository/api/editPost.ts +1 -1
  91. package/src/postRepository/api/getPostsByHashtag.ts +77 -0
  92. package/src/postRepository/api/index.ts +2 -0
  93. package/src/postRepository/observers/getPosts/PostPaginationController.ts +0 -3
  94. package/src/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.ts +186 -0
  95. package/src/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.ts +45 -0
  96. package/src/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.ts +99 -0
  97. package/src/postRepository/observers/index.ts +1 -0
  98. package/src/postRepository/observers/searchPostsByHashtag.ts +56 -0
  99. 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));
@@ -39761,6 +39763,61 @@ const createClipPost = async (bundle) => {
39761
39763
  };
39762
39764
  /* end_public_function */
39763
39765
 
39766
+ /**
39767
+ * ```js
39768
+ * import { searchPostsByHashtag } from '@amityco/ts-sdk'
39769
+ * const { data: posts, prevPage, nextPage } = await 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
+ *
39777
+ * @category Post API
39778
+ * @async
39779
+ */
39780
+ const getPostsByHashtag = async (query) => {
39781
+ const client = getActiveClient();
39782
+ client.log('post/queryByHashtag', query);
39783
+ const { page, limit = 10 } = query, params = __rest(query, ["page", "limit"]);
39784
+ const { dataTypes, matchingOnlyParentPost, hashtags } = params;
39785
+ const options = (() => {
39786
+ if (page)
39787
+ return { token: page };
39788
+ if (limit)
39789
+ return { limit };
39790
+ return undefined;
39791
+ })();
39792
+ // API-FIX: parameters should be querystring. (1)
39793
+ // API-FIX: backend should answer Amity.Response (2)
39794
+ // const { data } = await client.http.get<Amity.Response<Amity.PagedResponse<Amity.PostPayload>>>(
39795
+ const { data } = await client.http.get(`/api/v5/posts`, {
39796
+ params: Object.assign(Object.assign({}, params), { hashtags,
39797
+ /*
39798
+ * when creating post like image, file, video BE will create 2 posts
39799
+ * 1. parent post to store text with dataType=text
39800
+ * 2. child post to store dataTypes post data
39801
+ *
39802
+ * By default, BE queries only parent post
39803
+ */
39804
+ matchingOnlyParentPost: matchingOnlyParentPost !== null && matchingOnlyParentPost !== void 0 ? matchingOnlyParentPost : !(dataTypes === null || dataTypes === void 0 ? void 0 : dataTypes.length), options }),
39805
+ });
39806
+ // API-FIX: backend should answer Amity.Response (2)
39807
+ // const { paging, posts } = unwrapPayload(data)
39808
+ // unpacking
39809
+ const { paging } = data, payload = __rest(data, ["paging"]);
39810
+ const paperedPayload = prepareMembershipPayload(payload, 'communityUsers');
39811
+ const { posts } = payload;
39812
+ const cachedAt = client.cache && Date.now();
39813
+ if (client.cache) {
39814
+ ingestInCache(paperedPayload, { cachedAt });
39815
+ const cacheKey = ['post', 'query', Object.assign(Object.assign({}, params), { options })];
39816
+ pushToCache(cacheKey, { posts: posts.map(getResolver('post')), paging });
39817
+ }
39818
+ return { data: posts.map(LinkedObject.post), cachedAt, paging };
39819
+ };
39820
+
39764
39821
  /* begin_public_function
39765
39822
  id: comment.get_by_ids
39766
39823
  */
@@ -40843,14 +40900,14 @@ const getPost$1 = (postId, callback) => {
40843
40900
 
40844
40901
  class PostPaginationController extends PaginationController {
40845
40902
  async getRequest(queryParams, token) {
40846
- const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, includeDeleted, matchingOnlyParentPost } = queryParams, params = __rest(queryParams, ["limit", "includeDeleted", "matchingOnlyParentPost"]);
40903
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, matchingOnlyParentPost } = queryParams, params = __rest(queryParams, ["limit", "matchingOnlyParentPost"]);
40847
40904
  const { dataTypes } = params;
40848
40905
  const baseOptions = {
40849
40906
  type: params.sortBy || queryParams.limit ? 'pagination' : undefined,
40850
40907
  };
40851
40908
  const options = token ? Object.assign(Object.assign({}, baseOptions), { token }) : Object.assign(Object.assign({}, baseOptions), { limit });
40852
40909
  const { data: queryResponse } = await this.http.get(`/api/v5/posts`, {
40853
- params: Object.assign(Object.assign({}, params), { isDeleted: inferIsDeleted(includeDeleted),
40910
+ params: Object.assign(Object.assign({}, params), {
40854
40911
  /*
40855
40912
  * when creating post like image, file, video BE will create 2 posts
40856
40913
  * 1. parent post to store text with dataType=text
@@ -41648,6 +41705,237 @@ const semanticSearchPosts = (params, callback, config) => {
41648
41705
  };
41649
41706
  };
41650
41707
 
41708
+ class SearchPostPaginationController extends PaginationController {
41709
+ async getRequest(queryParams, token) {
41710
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, matchingOnlyParentPost, hashtags } = queryParams, params = __rest(queryParams, ["limit", "matchingOnlyParentPost", "hashtags"]);
41711
+ const { dataTypes } = params;
41712
+ const baseOptions = {
41713
+ type: params.sortBy || queryParams.limit ? 'pagination' : undefined,
41714
+ };
41715
+ const options = token ? Object.assign(Object.assign({}, baseOptions), { token }) : Object.assign(Object.assign({}, baseOptions), { limit });
41716
+ const { data: queryResponse } = await this.http.get(`/api/v1/search/posts`, {
41717
+ params: Object.assign(Object.assign({}, params), { hashtags,
41718
+ /*
41719
+ * when creating post like image, file, video BE will create 2 posts
41720
+ * 1. parent post to store text with dataType=text
41721
+ * 2. child post to store dataTypes post data
41722
+ *
41723
+ * By default, BE queries only parent post
41724
+ */
41725
+ matchingOnlyParentPost: matchingOnlyParentPost !== null && matchingOnlyParentPost !== void 0 ? matchingOnlyParentPost : !(dataTypes === null || dataTypes === void 0 ? void 0 : dataTypes.length), options }),
41726
+ });
41727
+ return queryResponse;
41728
+ }
41729
+ }
41730
+
41731
+ class SearchPostQueryStreamController extends QueryStreamController {
41732
+ constructor(query, cacheKey, notifyChange, preparePayload) {
41733
+ super(query, cacheKey);
41734
+ this.notifyChange = notifyChange;
41735
+ this.preparePayload = preparePayload;
41736
+ }
41737
+ async saveToMainDB(response) {
41738
+ const processedPayload = await this.preparePayload(response);
41739
+ const client = getActiveClient();
41740
+ const cachedAt = client.cache && Date.now();
41741
+ if (client.cache) {
41742
+ ingestInCache(processedPayload, { cachedAt });
41743
+ }
41744
+ }
41745
+ appendToQueryStream(response, direction, refresh = false) {
41746
+ var _a, _b;
41747
+ if (refresh) {
41748
+ pushToCache(this.cacheKey, {
41749
+ data: response.posts.map(getResolver('post')),
41750
+ });
41751
+ }
41752
+ else {
41753
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
41754
+ const posts = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
41755
+ pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [...new Set([...posts, ...response.posts.map(getResolver('post'))])] }));
41756
+ }
41757
+ }
41758
+ reactor(action) {
41759
+ return (post) => {
41760
+ var _a, _b;
41761
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
41762
+ if (!collection)
41763
+ return;
41764
+ if (post.parentPostId && post.isDeleted) {
41765
+ const parentPost = (_b = pullFromCache([
41766
+ 'post',
41767
+ 'get',
41768
+ post.parentPostId,
41769
+ ])) === null || _b === void 0 ? void 0 : _b.data;
41770
+ if (!parentPost)
41771
+ return;
41772
+ parentPost.children = parentPost.children.filter(childId => childId !== post.postId);
41773
+ pushToCache(['post', 'get', parentPost.postId], parentPost);
41774
+ }
41775
+ if (action === EnumPostActions.OnPostDeclined) {
41776
+ collection.data = collection.data.filter(postId => postId !== post.postId);
41777
+ }
41778
+ if (action === EnumPostActions.OnPostCreated || action === EnumPostActions.OnPostApproved) {
41779
+ collection.data = [...new Set([post.postId, ...collection.data])];
41780
+ }
41781
+ pushToCache(this.cacheKey, collection);
41782
+ this.notifyChange({ origin: "event" /* Amity.LiveDataOrigin.EVENT */, loading: false });
41783
+ };
41784
+ }
41785
+ subscribeRTE(createSubscriber) {
41786
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
41787
+ }
41788
+ }
41789
+
41790
+ class SearchPostLiveCollectionController extends LiveCollectionController {
41791
+ constructor(query, callback) {
41792
+ const queryStreamId = hash(query);
41793
+ const cacheKey = ['posts', 'collection', queryStreamId];
41794
+ const paginationController = new SearchPostPaginationController(query);
41795
+ super(paginationController, queryStreamId, cacheKey, callback);
41796
+ this.query = query;
41797
+ this.queryStreamController = new SearchPostQueryStreamController(this.query, this.cacheKey, this.notifyChange.bind(this), preparePostPayload);
41798
+ this.callback = callback.bind(this);
41799
+ this.loadPage({ initial: true });
41800
+ }
41801
+ setup() {
41802
+ var _a;
41803
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
41804
+ if (!collection) {
41805
+ pushToCache(this.cacheKey, {
41806
+ data: [],
41807
+ params: {},
41808
+ });
41809
+ }
41810
+ }
41811
+ async persistModel(queryPayload) {
41812
+ await this.queryStreamController.saveToMainDB(queryPayload);
41813
+ }
41814
+ persistQueryStream({ response, direction, refresh, }) {
41815
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
41816
+ }
41817
+ startSubscription() {
41818
+ return this.queryStreamController.subscribeRTE([
41819
+ { fn: onPostCreated, action: EnumPostActions.OnPostCreated },
41820
+ { fn: onPostUpdated, action: EnumPostActions.OnPostUpdated },
41821
+ { fn: onPostUpdatedLocal, action: EnumPostActions.OnPostUpdated },
41822
+ { fn: onPostDeleted, action: EnumPostActions.OnPostDeleted },
41823
+ { fn: onPostFlagged, action: EnumPostActions.OnPostFlagged },
41824
+ { fn: onPostUnflagged, action: EnumPostActions.OnPostUnflagged },
41825
+ { fn: onPostApproved, action: EnumPostActions.OnPostApproved },
41826
+ { fn: onPostDeclined, action: EnumPostActions.OnPostDeclined },
41827
+ { fn: onPostReactionAdded, action: EnumPostActions.OnPostReactionAdded },
41828
+ { fn: onPostReactionRemoved, action: EnumPostActions.OnPostReactionRemoved },
41829
+ { fn: onLocalPostReactionAdded, action: EnumPostActions.OnPostReactionAdded },
41830
+ { fn: onLocalPostReactionRemoved, action: EnumPostActions.OnPostReactionRemoved },
41831
+ { fn: onLocalPostDeleted, action: EnumPostActions.OnPostDeleted },
41832
+ {
41833
+ fn: convertEventPayload((callback) => {
41834
+ return onCommentCreated(async (comment) => {
41835
+ var _a;
41836
+ const currentCollection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
41837
+ if (!currentCollection || currentCollection.data.includes(comment.referenceId))
41838
+ return;
41839
+ await getPost(comment.referenceId);
41840
+ callback(comment);
41841
+ });
41842
+ }, 'referenceId', 'post'),
41843
+ action: EnumPostActions.OnPostUpdated,
41844
+ },
41845
+ {
41846
+ fn: convertEventPayload((callback) => {
41847
+ return onCommentDeleted(async (comment) => {
41848
+ var _a;
41849
+ const currentCollection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
41850
+ if (!currentCollection || currentCollection.data.includes(comment.referenceId))
41851
+ return;
41852
+ await getPost(comment.referenceId);
41853
+ callback(comment);
41854
+ });
41855
+ }, 'referenceId', 'post'),
41856
+ action: EnumPostActions.OnPostUpdated,
41857
+ },
41858
+ ]);
41859
+ }
41860
+ notifyChange({ origin, loading, error }) {
41861
+ var _a, _b;
41862
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
41863
+ if (!collection)
41864
+ return;
41865
+ const data = this.applyFilter((_b = collection.data
41866
+ .map(id => pullFromCache(['post', 'get', id]))
41867
+ .filter(isNonNullable)
41868
+ .map(({ data }) => data)) !== null && _b !== void 0 ? _b : []).map(LinkedObject.post);
41869
+ if (!this.shouldNotify(data) && origin === 'event')
41870
+ return;
41871
+ this.callback({
41872
+ onNextPage: () => this.loadPage({ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */ }),
41873
+ data,
41874
+ hasNextPage: !!this.paginationController.getNextToken(),
41875
+ loading,
41876
+ error,
41877
+ });
41878
+ }
41879
+ applyFilter(data) {
41880
+ var _a;
41881
+ let posts = data;
41882
+ if ((_a = this.query.dataTypes) === null || _a === void 0 ? void 0 : _a.length) {
41883
+ posts = filterByPostDataTypes(posts, this.query.dataTypes);
41884
+ }
41885
+ switch (this.query.sortBy) {
41886
+ case 'firstCreated':
41887
+ posts = posts.sort(sortByFirstCreated);
41888
+ break;
41889
+ case 'lastCreated':
41890
+ default:
41891
+ posts = posts.sort(sortByLastCreated);
41892
+ break;
41893
+ }
41894
+ return posts;
41895
+ }
41896
+ }
41897
+
41898
+ /* begin_public_function
41899
+ id: post.query
41900
+ */
41901
+ /**
41902
+ * ```js
41903
+ * import { PostRepository } from '@amityco/ts-sdk'
41904
+ *
41905
+ * let posts = []
41906
+ * const unsub = PostRepository.searchPostsByHashtag({
41907
+ * hashtags: ['amity'],
41908
+ * limit: 10,
41909
+ * }, response => merge(posts, response.data))
41910
+ * ```
41911
+ *
41912
+ * Observe all mutations on a list of {@link Amity.Post} for a given target object
41913
+ *
41914
+ * @param params.hashtags the hashtags to search for
41915
+ * @param callback the function to call when new data are available
41916
+ * @param config
41917
+ * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
41918
+ *
41919
+ * @category Posts Live Collection
41920
+ */
41921
+ const searchPostsByHashtag = (params, callback, config) => {
41922
+ const { log, cache } = getActiveClient();
41923
+ if (!cache) {
41924
+ console.log(ENABLE_CACHE_MESSAGE);
41925
+ }
41926
+ const timestamp = Date.now();
41927
+ log(`searchPostsByHashtag(tmpid: ${timestamp}) > listen`);
41928
+ const postsLiveCollection = new SearchPostLiveCollectionController(params, callback);
41929
+ const disposers = postsLiveCollection.startSubscription();
41930
+ const cacheKey = postsLiveCollection.getCacheKey();
41931
+ disposers.push(() => dropFromCache(cacheKey));
41932
+ return () => {
41933
+ log(`searchPostsByHashtag(tmpid: ${timestamp}) > dispose`);
41934
+ disposers.forEach(fn => fn());
41935
+ };
41936
+ };
41937
+ /* end_public_function */
41938
+
41651
41939
  var index$8 = /*#__PURE__*/Object.freeze({
41652
41940
  __proto__: null,
41653
41941
  getPostByIds: getPostByIds,
@@ -41662,6 +41950,7 @@ var index$8 = /*#__PURE__*/Object.freeze({
41662
41950
  unflagPost: unflagPost,
41663
41951
  isPostFlaggedByMe: isPostFlaggedByMe,
41664
41952
  createClipPost: createClipPost,
41953
+ getPostsByHashtag: getPostsByHashtag,
41665
41954
  onPostCreated: onPostCreated,
41666
41955
  onPostUpdated: onPostUpdated,
41667
41956
  onPostDeleted: onPostDeleted,
@@ -41675,7 +41964,8 @@ var index$8 = /*#__PURE__*/Object.freeze({
41675
41964
  getPosts: getPosts,
41676
41965
  getPinnedPosts: getPinnedPosts,
41677
41966
  getGlobalPinnedPosts: getGlobalPinnedPosts,
41678
- semanticSearchPosts: semanticSearchPosts
41967
+ semanticSearchPosts: semanticSearchPosts,
41968
+ searchPostsByHashtag: searchPostsByHashtag
41679
41969
  });
41680
41970
 
41681
41971
  /* begin_public_function