@amityco/ts-sdk 7.7.1-9bf1d358.0 → 7.7.1-a0291137.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 (69) hide show
  1. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/post.d.ts +2 -1
  2. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/post.d.ts.map +1 -1
  3. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/post.js.map +1 -1
  4. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/getPostsByHashtag.d.ts +15 -0
  5. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/getPostsByHashtag.d.ts.map +1 -0
  6. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/getPostsByHashtag.js +61 -0
  7. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/getPostsByHashtag.js.map +1 -0
  8. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.d.ts +1 -0
  9. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.d.ts.map +1 -1
  10. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.js +1 -0
  11. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/index.js.map +1 -1
  12. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/queryPosts.js +2 -2
  13. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/queryPosts.js.map +1 -1
  14. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPosts/PostPaginationController.d.ts.map +1 -1
  15. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPosts/PostPaginationController.js +3 -3
  16. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPosts/PostPaginationController.js.map +1 -1
  17. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts +14 -0
  18. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts.map +1 -0
  19. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.js +126 -0
  20. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.js.map +1 -0
  21. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts +5 -0
  22. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts.map +1 -0
  23. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.js +26 -0
  24. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.js.map +1 -0
  25. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts +15 -0
  26. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts.map +1 -0
  27. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.js +65 -0
  28. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.js.map +1 -0
  29. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.d.ts +1 -0
  30. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.d.ts.map +1 -1
  31. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.js +1 -0
  32. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.js.map +1 -1
  33. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.d.ts +22 -0
  34. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.d.ts.map +1 -0
  35. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.js +45 -0
  36. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.js.map +1 -0
  37. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/tsconfig.tsbuildinfo +1 -1
  38. package/dist/@types/domains/post.d.ts +2 -1
  39. package/dist/@types/domains/post.d.ts.map +1 -1
  40. package/dist/index.cjs.js +291 -4
  41. package/dist/index.esm.js +291 -4
  42. package/dist/index.umd.js +4 -4
  43. package/dist/postRepository/api/getPostsByHashtag.d.ts +15 -0
  44. package/dist/postRepository/api/getPostsByHashtag.d.ts.map +1 -0
  45. package/dist/postRepository/api/index.d.ts +1 -0
  46. package/dist/postRepository/api/index.d.ts.map +1 -1
  47. package/dist/postRepository/observers/getPosts/PostPaginationController.d.ts.map +1 -1
  48. package/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts +14 -0
  49. package/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts.map +1 -0
  50. package/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts +5 -0
  51. package/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts.map +1 -0
  52. package/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts +15 -0
  53. package/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts.map +1 -0
  54. package/dist/postRepository/observers/index.d.ts +1 -0
  55. package/dist/postRepository/observers/index.d.ts.map +1 -1
  56. package/dist/postRepository/observers/searchPostsByHashtag.d.ts +22 -0
  57. package/dist/postRepository/observers/searchPostsByHashtag.d.ts.map +1 -0
  58. package/package.json +1 -1
  59. package/src/@types/domains/post.ts +6 -1
  60. package/src/postRepository/api/getPostsByHashtag.ts +78 -0
  61. package/src/postRepository/api/index.ts +2 -0
  62. package/src/postRepository/api/queryPosts.ts +2 -2
  63. package/src/postRepository/observers/getPosts/PostPaginationController.ts +0 -4
  64. package/src/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.ts +180 -0
  65. package/src/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.ts +45 -0
  66. package/src/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.ts +99 -0
  67. package/src/postRepository/observers/index.ts +1 -0
  68. package/src/postRepository/observers/searchPostsByHashtag.ts +56 -0
  69. package/tsconfig.tsbuildinfo +1 -1
package/dist/index.esm.js CHANGED
@@ -39763,6 +39763,60 @@ const createClipPost = async (bundle) => {
39763
39763
  };
39764
39764
  /* end_public_function */
39765
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
+
39766
39820
  /* begin_public_function
39767
39821
  id: comment.get_by_ids
39768
39822
  */
@@ -40845,14 +40899,14 @@ const getPost$1 = (postId, callback) => {
40845
40899
 
40846
40900
  class PostPaginationController extends PaginationController {
40847
40901
  async getRequest(queryParams, token) {
40848
- const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, includeDeleted, matchingOnlyParentPost, targetType, hashtags } = queryParams, params = __rest(queryParams, ["limit", "includeDeleted", "matchingOnlyParentPost", "targetType", "hashtags"]);
40902
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, includeDeleted, matchingOnlyParentPost } = queryParams, params = __rest(queryParams, ["limit", "includeDeleted", "matchingOnlyParentPost"]);
40849
40903
  const { dataTypes } = params;
40850
40904
  const baseOptions = {
40851
40905
  type: params.sortBy || queryParams.limit ? 'pagination' : undefined,
40852
40906
  };
40853
40907
  const options = token ? Object.assign(Object.assign({}, baseOptions), { token }) : Object.assign(Object.assign({}, baseOptions), { limit });
40854
40908
  const { data: queryResponse } = await this.http.get(`/api/v5/posts`, {
40855
- params: Object.assign(Object.assign(Object.assign(Object.assign({}, params), { isDeleted: inferIsDeleted(includeDeleted),
40909
+ params: Object.assign(Object.assign({}, params), { isDeleted: inferIsDeleted(includeDeleted),
40856
40910
  /*
40857
40911
  * when creating post like image, file, video BE will create 2 posts
40858
40912
  * 1. parent post to store text with dataType=text
@@ -40860,7 +40914,7 @@ class PostPaginationController extends PaginationController {
40860
40914
  *
40861
40915
  * By default, BE queries only parent post
40862
40916
  */
40863
- matchingOnlyParentPost: matchingOnlyParentPost !== null && matchingOnlyParentPost !== void 0 ? matchingOnlyParentPost : !(dataTypes === null || dataTypes === void 0 ? void 0 : dataTypes.length), targetType }), (targetType === 'all' && hashtags && { hashtags })), { options }),
40917
+ matchingOnlyParentPost: matchingOnlyParentPost !== null && matchingOnlyParentPost !== void 0 ? matchingOnlyParentPost : !(dataTypes === null || dataTypes === void 0 ? void 0 : dataTypes.length), options }),
40864
40918
  });
40865
40919
  return queryResponse;
40866
40920
  }
@@ -41650,6 +41704,237 @@ const semanticSearchPosts = (params, callback, config) => {
41650
41704
  };
41651
41705
  };
41652
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
+
41653
41938
  var index$8 = /*#__PURE__*/Object.freeze({
41654
41939
  __proto__: null,
41655
41940
  getPostByIds: getPostByIds,
@@ -41664,6 +41949,7 @@ var index$8 = /*#__PURE__*/Object.freeze({
41664
41949
  unflagPost: unflagPost,
41665
41950
  isPostFlaggedByMe: isPostFlaggedByMe,
41666
41951
  createClipPost: createClipPost,
41952
+ getPostsByHashtag: getPostsByHashtag,
41667
41953
  onPostCreated: onPostCreated,
41668
41954
  onPostUpdated: onPostUpdated,
41669
41955
  onPostDeleted: onPostDeleted,
@@ -41677,7 +41963,8 @@ var index$8 = /*#__PURE__*/Object.freeze({
41677
41963
  getPosts: getPosts,
41678
41964
  getPinnedPosts: getPinnedPosts,
41679
41965
  getGlobalPinnedPosts: getGlobalPinnedPosts,
41680
- semanticSearchPosts: semanticSearchPosts
41966
+ semanticSearchPosts: semanticSearchPosts,
41967
+ searchPostsByHashtag: searchPostsByHashtag
41681
41968
  });
41682
41969
 
41683
41970
  /* begin_public_function