@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
@@ -16,7 +16,7 @@
16
16
  * @category Post API
17
17
  * @async
18
18
  */
19
- export declare const createPost: <T extends string>(bundle: Pick<Amity.Post<T>, "targetId" | "targetType"> & Partial<Pick<Amity.Post<T>, "tags" | "metadata" | "mentionees">> & {
19
+ export declare const createPost: <T extends string>(bundle: Pick<Amity.Post<T>, "targetId" | "targetType"> & Partial<Pick<Amity.Post<T>, "tags" | "metadata" | "mentionees" | "hashtags">> & {
20
20
  dataType?: T | undefined;
21
21
  data?: {
22
22
  [k: string]: any;
@@ -15,7 +15,7 @@
15
15
  * @category Post API
16
16
  * @async
17
17
  */
18
- export declare const editPost: <T extends string>(postId: Amity.Post['postId'], patch: Partial<Pick<Amity.Post<any>, "tags" | "metadata" | "data" | "mentionees">> & {
18
+ export declare const editPost: <T extends string>(postId: Amity.Post['postId'], patch: Partial<Pick<Amity.Post<any>, "tags" | "metadata" | "data" | "mentionees" | "hashtags">> & {
19
19
  attachments?: {
20
20
  type: T;
21
21
  fileId: Amity.File['fileId'];
@@ -0,0 +1,15 @@
1
+ /**
2
+ * ```js
3
+ * import { PostRepository } from '@amityco/ts-sdk';
4
+ * const { data: posts, prevPage, nextPage } = await PostRepository.searchPostsByHashtag({ hashtags: ['amity'], limit: 10 });
5
+ * ```
6
+ *
7
+ * Queries a paginable list of {@link Amity.Post} objects
8
+ *
9
+ * @param query The query parameters
10
+ * @returns posts
11
+ * @category Post API
12
+ * @async
13
+ */
14
+ export declare const getPostsByHashtag: (query: Amity.QueryPostsWithHashtags) => Promise<Amity.Cached<Amity.PageToken<Amity.Post>>>;
15
+ //# sourceMappingURL=getPostsByHashtag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPostsByHashtag.d.ts","sourceRoot":"","sources":["../../../src/postRepository/api/getPostsByHashtag.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,UACrB,MAAM,sBAAsB,KAClC,QAAQ,MAAM,MAAM,CAAC,MAAM,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAqDnD,CAAC"}
@@ -10,4 +10,5 @@ export * from './flagPost';
10
10
  export * from './unflagPost';
11
11
  export * from './isPostFlaggedByMe';
12
12
  export * from './createClipPost';
13
+ export * from './getPostsByHashtag';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postRepository/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAE/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAE3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAE9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AAEpC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postRepository/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAE/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAE3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAE9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AAEpC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { SearchPostPaginationController } from './SearchPostPaginationController';
2
+ import { LiveCollectionController } from '~/core/liveCollection/LiveCollectionController';
3
+ export declare class SearchPostLiveCollectionController extends LiveCollectionController<'post', Amity.PostLiveCollection, Amity.Post, SearchPostPaginationController> {
4
+ private queryStreamController;
5
+ private query;
6
+ constructor(query: Amity.PostLiveCollection, callback: Amity.LiveCollectionCallback<Amity.Post>);
7
+ protected setup(): void;
8
+ protected persistModel(queryPayload: Amity.PostPayload & Amity.Pagination): Promise<void>;
9
+ protected persistQueryStream({ response, direction, refresh, }: Amity.LiveCollectionPersistQueryStreamParams<'post'>): void;
10
+ startSubscription(): Amity.Unsubscriber[];
11
+ notifyChange({ origin, loading, error }: Amity.LiveCollectionNotifyParams): void;
12
+ applyFilter(data: Amity.InternalPost[]): Amity.InternalPost<any>[];
13
+ }
14
+ //# sourceMappingURL=SearchPostLiveCollectionController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchPostLiveCollectionController.d.ts","sourceRoot":"","sources":["../../../../src/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAElF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAyB1F,qBAAa,kCAAmC,SAAQ,wBAAwB,CAC9E,MAAM,EACN,KAAK,CAAC,kBAAkB,EACxB,KAAK,CAAC,IAAI,EACV,8BAA8B,CAC/B;IACC,OAAO,CAAC,qBAAqB,CAAkC;IAE/D,OAAO,CAAC,KAAK,CAA2B;gBAE5B,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAE,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC;IAmB/F,SAAS,CAAC,KAAK;cAUC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU;IAI/E,SAAS,CAAC,kBAAkB,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,OAAO,GACR,EAAE,KAAK,CAAC,sCAAsC,CAAC,MAAM,CAAC;IAIvD,iBAAiB;IA0DjB,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,0BAA0B;IAsBzE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE;CAmBvC"}
@@ -0,0 +1,5 @@
1
+ import { PaginationController } from '~/core/liveCollection/PaginationController';
2
+ export declare class SearchPostPaginationController extends PaginationController<'post', Amity.PostLiveCollection> {
3
+ getRequest(queryParams: Amity.PostLiveCollection, token: string | undefined): Promise<Amity.PostPayload<any> & Amity.Pagination>;
4
+ }
5
+ //# sourceMappingURL=SearchPostPaginationController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchPostPaginationController.d.ts","sourceRoot":"","sources":["../../../../src/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAIlF,qBAAa,8BAA+B,SAAQ,oBAAoB,CACtE,MAAM,EACN,KAAK,CAAC,kBAAkB,CACzB;IACO,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS;CAoClF"}
@@ -0,0 +1,15 @@
1
+ import { QueryStreamController } from '~/core/liveCollection/QueryStreamController';
2
+ import { EnumPostActions } from '../enums';
3
+ export declare class SearchPostQueryStreamController extends QueryStreamController<Amity.PostPayload, Amity.PostLiveCollection> {
4
+ private notifyChange;
5
+ private preparePayload;
6
+ constructor(query: Amity.PostLiveCollection, cacheKey: string[], notifyChange: (params: Amity.LiveCollectionNotifyParams) => void, preparePayload: (response: Amity.PostPayload) => Amity.ProcessedPostPayload);
7
+ saveToMainDB(response: Amity.PostPayload): Promise<void>;
8
+ appendToQueryStream(response: Amity.PostPayload & Partial<Amity.Pagination>, direction: Amity.LiveCollectionPageDirection, refresh?: boolean): void;
9
+ reactor(action: EnumPostActions): (post: Amity.InternalPost) => void;
10
+ subscribeRTE(createSubscriber: {
11
+ fn: (reactor: (post: Amity.InternalPost) => void) => Amity.Unsubscriber;
12
+ action: EnumPostActions;
13
+ }[]): Amity.Unsubscriber[];
14
+ }
15
+ //# sourceMappingURL=SearchPostQueryStreamController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchPostQueryStreamController.d.ts","sourceRoot":"","sources":["../../../../src/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAKpF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,qBAAa,+BAAgC,SAAQ,qBAAqB,CACxE,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,kBAAkB,CACzB;IACC,OAAO,CAAC,YAAY,CAAqD;IAEzE,OAAO,CAAC,cAAc,CAA8D;gBAGlF,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAC/B,QAAQ,EAAE,MAAM,EAAE,EAClB,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,0BAA0B,KAAK,IAAI,EAChE,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,oBAAoB;IAOvE,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW;IAW9C,mBAAmB,CACjB,QAAQ,EAAE,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EACvD,SAAS,EAAE,KAAK,CAAC,2BAA2B,EAC5C,OAAO,UAAQ;IAkBjB,OAAO,CAAC,MAAM,EAAE,eAAe,UACf,MAAM,YAAY;IA+BlC,YAAY,CACV,gBAAgB,EAAE;QAChB,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,KAAK,IAAI,KAAK,KAAK,CAAC,YAAY,CAAC;QACxE,MAAM,EAAE,eAAe,CAAC;KACzB,EAAE;CAIN"}
@@ -3,4 +3,5 @@ export * from './getPosts';
3
3
  export * from './getPinnedPosts';
4
4
  export * from './getGlobalPinnedPosts';
5
5
  export * from './semanticSearchPosts';
6
+ export * from './searchPostsByHashtag';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postRepository/observers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postRepository/observers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * ```js
3
+ * import { PostRepository } from '@amityco/ts-sdk'
4
+ *
5
+ * let posts = []
6
+ * const unsub = PostRepository.searchPostsByHashtag({
7
+ * hashtags: ['amity'],
8
+ * limit: 10,
9
+ * }, response => merge(posts, response.data))
10
+ * ```
11
+ *
12
+ * Observe all mutations on a list of {@link Amity.Post} for a given target object
13
+ *
14
+ * @param params.hashtags the hashtags to search for
15
+ * @param callback the function to call when new data are available
16
+ * @param config
17
+ * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
18
+ *
19
+ * @category Posts Live Collection
20
+ */
21
+ export declare const searchPostsByHashtag: (params: Amity.PostLiveCollection, callback: Amity.LiveCollectionCallback<Amity.Post>, config?: Amity.LiveCollectionConfig) => Amity.Unsubscriber;
22
+ //# sourceMappingURL=searchPostsByHashtag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchPostsByHashtag.d.ts","sourceRoot":"","sources":["../../../src/postRepository/observers/searchPostsByHashtag.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,oBAAoB,WACvB,MAAM,kBAAkB,YACtB,MAAM,sBAAsB,CAAC,MAAM,IAAI,CAAC,WACzC,MAAM,oBAAoB,KAClC,MAAM,YAqBR,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"onStreamViewerBanned.d.ts","sourceRoot":"","sources":["../../../src/streamRepository/events/onStreamViewerBanned.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,aACrB,MAAM,QAAQ,CAAC,MAAM,cAAc,CAAC,KAC7C,MAAM,YAiCR,CAAC"}
1
+ {"version":3,"file":"onStreamViewerBanned.d.ts","sourceRoot":"","sources":["../../../src/streamRepository/events/onStreamViewerBanned.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,aACrB,MAAM,QAAQ,CAAC,MAAM,cAAc,CAAC,KAC7C,MAAM,YAoCR,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"onStreamViewerUnbanned.d.ts","sourceRoot":"","sources":["../../../src/streamRepository/events/onStreamViewerUnbanned.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,sBAAsB,aACvB,MAAM,QAAQ,CAAC,MAAM,cAAc,CAAC,KAC7C,MAAM,YAsBR,CAAC"}
1
+ {"version":3,"file":"onStreamViewerUnbanned.d.ts","sourceRoot":"","sources":["../../../src/streamRepository/events/onStreamViewerUnbanned.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,sBAAsB,aACvB,MAAM,QAAQ,CAAC,MAAM,cAAc,CAAC,KAC7C,MAAM,YAwBR,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amityco/ts-sdk",
3
- "version": "7.7.1-c6a1e2a.0",
3
+ "version": "7.7.1-cfb204b8.0",
4
4
  "license": "CC-BY-ND-4.0",
5
5
  "author": "amity.co <developers@amity.co> (https://amity.co)",
6
6
  "description": "Amity Social Cloud Typescript SDK",
@@ -597,10 +597,9 @@ declare global {
597
597
  channelId: string;
598
598
  muteTimeout: Amity.timestamp;
599
599
  actor: string;
600
- networkId: string;
601
600
  };
602
601
 
603
- type ChannelSetMutedPayload = RawChannelSetMuted;
602
+ type ChannelSetMutedPayload = RawChannelSetMuted[];
604
603
 
605
604
  type RawChannelSetUserMuted = {
606
605
  channelId: string;
@@ -617,8 +616,8 @@ declare global {
617
616
  createdAt: Amity.timestamp;
618
617
  };
619
618
 
620
- type StreamViewerBanPayload = { list: RawStreamViewerBan[] };
621
- type StreamViewerUnbanPayload = { list: RawStreamViewerBan[] };
619
+ type StreamViewerBanPayload = RawStreamViewerBan[];
620
+ type StreamViewerUnbanPayload = RawStreamViewerBan[];
622
621
 
623
622
  type ChannelSetUserMutedPayload = RawChannelSetUserMuted;
624
623
  }
@@ -0,0 +1,11 @@
1
+ export {};
2
+
3
+ declare global {
4
+ namespace Amity {
5
+ type Hashtag = {
6
+ text: string;
7
+ index: number;
8
+ length: number;
9
+ };
10
+ }
11
+ }
@@ -11,7 +11,7 @@ export const PostContentType = Object.freeze({
11
11
  declare global {
12
12
  namespace Amity {
13
13
  // bad hack until we get proper feed objects in backend
14
- type PostTargetType = Amity.Feed['targetType'] | 'content';
14
+ type PostTargetType = Amity.Feed['targetType'] | 'content' | 'all';
15
15
 
16
16
  type PostContentType = ValueOf<typeof PostContentType> | string;
17
17
 
@@ -66,6 +66,7 @@ declare global {
66
66
  reactionsCount: number;
67
67
  reactions: Record<string, number>;
68
68
  myReactions?: string[];
69
+ hashtags?: string[];
69
70
  } & Amity.Content<T> &
70
71
  Amity.Mentionable<'user'>;
71
72
 
@@ -105,8 +106,14 @@ declare global {
105
106
  matchingOnlyParentPost?: boolean;
106
107
  page?: string;
107
108
  limit?: number;
109
+ hashtags?: string[];
108
110
  };
109
111
 
112
+ type QueryPostsWithHashtags = Pick<
113
+ Amity.QueryPosts,
114
+ 'dataTypes' | 'matchingOnlyParentPost' | 'sortBy' | 'page' | 'limit' | 'hashtags'
115
+ >;
116
+
110
117
  // Omit sortBy explained in asc-3398
111
118
  type PostLiveCollection = Amity.LiveCollectionParams<
112
119
  Omit<QueryPosts, 'sortBy' | 'page'> & {
@@ -44,3 +44,4 @@ export * from './domains/joinRequest';
44
44
  export * from './domains/pin';
45
45
  export * from './domains/pinnedPost';
46
46
  export * from './domains/liveReaction';
47
+ export * from './domains/hashtag';
@@ -20,17 +20,19 @@ export const onChannelSetMuted = (callback: Amity.Listener<Amity.StaticInternalC
20
20
  if (callbacks.length === 0) {
21
21
  const client = getActiveClient();
22
22
 
23
- const filter = async (payload: Amity.ChannelSetMutedPayload) => {
24
- upsertInCache(['channel', 'get', payload.channelId], {
25
- // If muteTimeout > now => user is muted
26
- // Otherwise => user is unmuted
27
- isMuted: Date.parse(payload.muteTimeout) > Date.now(),
23
+ const filter = async (payloads: Amity.ChannelSetMutedPayload) => {
24
+ payloads.forEach(payload => {
25
+ upsertInCache(['channel', 'get', payload.channelId], {
26
+ // If muteTimeout > now => user is muted
27
+ // Otherwise => user is unmuted
28
+ isMuted: Date.parse(payload.muteTimeout) > Date.now(),
29
+ });
28
30
  });
29
31
 
30
32
  const channel = pullFromCache<Amity.StaticInternalChannel>([
31
33
  'channel',
32
34
  'get',
33
- payload.channelId,
35
+ payloads[0].channelId,
34
36
  ])?.data;
35
37
 
36
38
  if (channel) {
@@ -28,7 +28,7 @@ import { preparePostPayload } from '../utils/payload';
28
28
  */
29
29
  export const createPost = async <T extends Amity.PostContentType | string>(
30
30
  bundle: Pick<Amity.Post<T>, 'targetType' | 'targetId'> &
31
- Partial<Pick<Amity.Post<T>, 'metadata' | 'mentionees' | 'tags'>> & {
31
+ Partial<Pick<Amity.Post<T>, 'metadata' | 'mentionees' | 'tags' | 'hashtags'>> & {
32
32
  dataType?: T;
33
33
  data?: { [k: string]: any };
34
34
  attachments?: { type: T; fileId: Amity.File['fileId'] }[];
@@ -27,7 +27,7 @@ import { LinkedObject } from '~/utils/linkedObject';
27
27
  */
28
28
  export const editPost = async <T extends Amity.PostContentType>(
29
29
  postId: Amity.Post['postId'],
30
- patch: Patch<Amity.Post, 'data' | 'metadata' | 'mentionees' | 'tags'> & {
30
+ patch: Patch<Amity.Post, 'data' | 'metadata' | 'mentionees' | 'tags' | 'hashtags'> & {
31
31
  attachments?: {
32
32
  type: T;
33
33
  fileId: Amity.File['fileId'];
@@ -0,0 +1,78 @@
1
+ import { getActiveClient } from '~/client/api';
2
+
3
+ import { pushToCache } from '~/cache/api';
4
+ import { ingestInCache } from '~/cache/api/ingestInCache';
5
+ import { getResolver } from '~/core/model';
6
+
7
+ import { prepareMembershipPayload } from '~/group/utils';
8
+ import { LinkedObject } from '~/utils/linkedObject';
9
+
10
+ /**
11
+ * ```js
12
+ * import { PostRepository } from '@amityco/ts-sdk';
13
+ * const { data: posts, prevPage, nextPage } = await PostRepository.searchPostsByHashtag({ hashtags: ['amity'], limit: 10 });
14
+ * ```
15
+ *
16
+ * Queries a paginable list of {@link Amity.Post} objects
17
+ *
18
+ * @param query The query parameters
19
+ * @returns posts
20
+ * @category Post API
21
+ * @async
22
+ */
23
+ export const getPostsByHashtag = async (
24
+ query: Amity.QueryPostsWithHashtags,
25
+ ): Promise<Amity.Cached<Amity.PageToken<Amity.Post>>> => {
26
+ const client = getActiveClient();
27
+ client.log('post/queryByHashtag', query);
28
+
29
+ const { page, limit = 10, ...params } = query;
30
+ const { dataTypes, matchingOnlyParentPost, hashtags } = params;
31
+
32
+ const options = (() => {
33
+ if (page) return { token: page };
34
+ if (limit) return { limit };
35
+
36
+ return undefined;
37
+ })();
38
+
39
+ // API-FIX: parameters should be querystring. (1)
40
+ // API-FIX: backend should answer Amity.Response (2)
41
+ // const { data } = await client.http.get<Amity.Response<Amity.PagedResponse<Amity.PostPayload>>>(
42
+ const { data } = await client.http.get<Amity.PostPayload & Amity.Pagination>(
43
+ `/api/v1/search/posts`,
44
+ {
45
+ params: {
46
+ ...params,
47
+ hashtags,
48
+ /*
49
+ * when creating post like image, file, video BE will create 2 posts
50
+ * 1. parent post to store text with dataType=text
51
+ * 2. child post to store dataTypes post data
52
+ *
53
+ * By default, BE queries only parent post
54
+ */
55
+ matchingOnlyParentPost: matchingOnlyParentPost ?? !dataTypes?.length,
56
+ options,
57
+ },
58
+ },
59
+ );
60
+
61
+ // API-FIX: backend should answer Amity.Response (2)
62
+ // const { paging, posts } = unwrapPayload(data)
63
+ // unpacking
64
+ const { paging, ...payload } = data;
65
+ const preparedPayload = prepareMembershipPayload(payload, 'communityUsers');
66
+ const { posts } = payload;
67
+
68
+ const cachedAt = client.cache && Date.now();
69
+
70
+ if (client.cache) {
71
+ ingestInCache(preparedPayload, { cachedAt });
72
+
73
+ const cacheKey = ['post', 'query', { ...params, options } as Amity.Serializable];
74
+ pushToCache(cacheKey, { posts: posts.map(getResolver('post')), paging });
75
+ }
76
+
77
+ return { data: posts.map(LinkedObject.post), cachedAt, paging };
78
+ };
@@ -15,3 +15,5 @@ export * from './unflagPost';
15
15
  export * from './isPostFlaggedByMe';
16
16
 
17
17
  export * from './createClipPost';
18
+
19
+ export * from './getPostsByHashtag';
@@ -63,13 +63,13 @@ export const queryPosts = async (
63
63
  // const { paging, posts } = unwrapPayload(data)
64
64
  // unpacking
65
65
  const { paging, ...payload } = data;
66
- const paperedPayload = prepareMembershipPayload(payload, 'communityUsers');
66
+ const preparedPayload = prepareMembershipPayload(payload, 'communityUsers');
67
67
  const { posts } = payload;
68
68
 
69
69
  const cachedAt = client.cache && Date.now();
70
70
 
71
71
  if (client.cache) {
72
- ingestInCache(paperedPayload, { cachedAt });
72
+ ingestInCache(preparedPayload, { cachedAt });
73
73
 
74
74
  const cacheKey = ['post', 'query', { ...params, options } as Amity.Serializable];
75
75
  pushToCache(cacheKey, { posts: posts.map(getResolver('post')), paging });
@@ -0,0 +1,180 @@
1
+ import hash from 'object-hash';
2
+ import { pullFromCache, pushToCache } from '~/cache/api';
3
+ import { SearchPostPaginationController } from './SearchPostPaginationController';
4
+ import { SearchPostQueryStreamController } from './SearchPostQueryStreamController';
5
+ import { LiveCollectionController } from '~/core/liveCollection/LiveCollectionController';
6
+ import {
7
+ onPostCreated,
8
+ onPostUpdated,
9
+ onPostDeleted,
10
+ onPostFlagged,
11
+ onPostUnflagged,
12
+ onPostReactionAdded,
13
+ onPostReactionRemoved,
14
+ onPostApproved,
15
+ onPostDeclined,
16
+ } from '~/postRepository/events';
17
+ import { filterByPostDataTypes, sortByFirstCreated, sortByLastCreated } from '~/core/query';
18
+ import { isNonNullable } from '~/utils';
19
+ import { EnumPostActions } from '../enums';
20
+ import { LinkedObject } from '~/utils/linkedObject';
21
+ import { preparePostPayload } from '~/postRepository/utils/payload';
22
+ import { convertEventPayload } from '~/utils/event';
23
+ import { onCommentCreated, onCommentDeleted } from '~/commentRepository';
24
+ import { getPost } from '~/postRepository/internalApi/getPost';
25
+ import { onPostUpdatedLocal } from '~/postRepository/events/onPostUpdatedLocal';
26
+ import { onLocalPostReactionAdded } from '~/postRepository/events/onLocalPostReactionAdded';
27
+ import { onLocalPostReactionRemoved } from '~/postRepository/events/onLocalPostReactionRemoved';
28
+ import { onLocalPostDeleted } from '~/postRepository/events/onLocalPostDeleted';
29
+
30
+ export class SearchPostLiveCollectionController extends LiveCollectionController<
31
+ 'post',
32
+ Amity.PostLiveCollection,
33
+ Amity.Post,
34
+ SearchPostPaginationController
35
+ > {
36
+ private queryStreamController: SearchPostQueryStreamController;
37
+
38
+ private query: Amity.PostLiveCollection;
39
+
40
+ constructor(query: Amity.PostLiveCollection, callback: Amity.LiveCollectionCallback<Amity.Post>) {
41
+ const queryStreamId = hash(query);
42
+ const cacheKey = ['posts', 'collection', queryStreamId];
43
+ const paginationController = new SearchPostPaginationController(query);
44
+
45
+ super(paginationController, queryStreamId, cacheKey, callback);
46
+
47
+ this.query = query;
48
+ this.queryStreamController = new SearchPostQueryStreamController(
49
+ this.query,
50
+ this.cacheKey,
51
+ this.notifyChange.bind(this),
52
+ preparePostPayload,
53
+ );
54
+
55
+ this.callback = callback.bind(this);
56
+ this.loadPage({ initial: true });
57
+ }
58
+
59
+ protected setup() {
60
+ const collection = pullFromCache<Amity.PostLiveCollectionCache>(this.cacheKey)?.data;
61
+ if (!collection) {
62
+ pushToCache(this.cacheKey, {
63
+ data: [],
64
+ params: {},
65
+ });
66
+ }
67
+ }
68
+
69
+ protected async persistModel(queryPayload: Amity.PostPayload & Amity.Pagination) {
70
+ await this.queryStreamController.saveToMainDB(queryPayload);
71
+ }
72
+
73
+ protected persistQueryStream({
74
+ response,
75
+ direction,
76
+ refresh,
77
+ }: Amity.LiveCollectionPersistQueryStreamParams<'post'>) {
78
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
79
+ }
80
+
81
+ startSubscription() {
82
+ return this.queryStreamController.subscribeRTE([
83
+ { fn: onPostCreated, action: EnumPostActions.OnPostCreated },
84
+ { fn: onPostUpdated, action: EnumPostActions.OnPostUpdated },
85
+ { fn: onPostUpdatedLocal, action: EnumPostActions.OnPostUpdated },
86
+ { fn: onPostDeleted, action: EnumPostActions.OnPostDeleted },
87
+ { fn: onPostFlagged, action: EnumPostActions.OnPostFlagged },
88
+ { fn: onPostUnflagged, action: EnumPostActions.OnPostUnflagged },
89
+ { fn: onPostApproved, action: EnumPostActions.OnPostApproved },
90
+ { fn: onPostDeclined, action: EnumPostActions.OnPostDeclined },
91
+ { fn: onPostReactionAdded, action: EnumPostActions.OnPostReactionAdded },
92
+ { fn: onPostReactionRemoved, action: EnumPostActions.OnPostReactionRemoved },
93
+ { fn: onLocalPostReactionAdded, action: EnumPostActions.OnPostReactionAdded },
94
+ { fn: onLocalPostReactionRemoved, action: EnumPostActions.OnPostReactionRemoved },
95
+ { fn: onLocalPostDeleted, action: EnumPostActions.OnPostDeleted },
96
+ {
97
+ fn: convertEventPayload(
98
+ (callback: Amity.Listener<Amity.InternalComment>) => {
99
+ return onCommentCreated(async (comment: Amity.InternalComment) => {
100
+ const currentCollection = pullFromCache<Amity.PostLiveCollectionCache>(
101
+ this.cacheKey,
102
+ )?.data;
103
+
104
+ if (!currentCollection || currentCollection.data.includes(comment.referenceId))
105
+ return;
106
+
107
+ await getPost(comment.referenceId);
108
+ callback(comment);
109
+ });
110
+ },
111
+ 'referenceId',
112
+ 'post',
113
+ ),
114
+ action: EnumPostActions.OnPostUpdated,
115
+ },
116
+ {
117
+ fn: convertEventPayload(
118
+ (callback: Amity.Listener<Amity.InternalComment>) => {
119
+ return onCommentDeleted(async (comment: Amity.InternalComment) => {
120
+ const currentCollection = pullFromCache<Amity.PostLiveCollectionCache>(
121
+ this.cacheKey,
122
+ )?.data;
123
+
124
+ if (!currentCollection || currentCollection.data.includes(comment.referenceId))
125
+ return;
126
+
127
+ await getPost(comment.referenceId);
128
+ callback(comment);
129
+ });
130
+ },
131
+ 'referenceId',
132
+ 'post',
133
+ ),
134
+ action: EnumPostActions.OnPostUpdated,
135
+ },
136
+ ]);
137
+ }
138
+
139
+ notifyChange({ origin, loading, error }: Amity.LiveCollectionNotifyParams) {
140
+ const collection = pullFromCache<Amity.PostLiveCollectionCache>(this.cacheKey)?.data;
141
+ if (!collection) return;
142
+
143
+ const data = this.applyFilter(
144
+ collection.data
145
+ .map(id => pullFromCache<Amity.InternalPost>(['post', 'get', id])!)
146
+ .filter(isNonNullable)
147
+ .map(({ data }) => data) ?? [],
148
+ ).map(LinkedObject.post);
149
+
150
+ if (!this.shouldNotify(data) && origin === 'event') return;
151
+
152
+ this.callback({
153
+ onNextPage: () => this.loadPage({ direction: Amity.LiveCollectionPageDirection.NEXT }),
154
+ data,
155
+ hasNextPage: !!this.paginationController.getNextToken(),
156
+ loading,
157
+ error,
158
+ });
159
+ }
160
+
161
+ applyFilter(data: Amity.InternalPost[]) {
162
+ let posts = data;
163
+
164
+ if (this.query.dataTypes?.length) {
165
+ posts = filterByPostDataTypes(posts, this.query.dataTypes);
166
+ }
167
+
168
+ switch (this.query.sortBy) {
169
+ case 'firstCreated':
170
+ posts = posts.sort(sortByFirstCreated);
171
+ break;
172
+ case 'lastCreated':
173
+ default:
174
+ posts = posts.sort(sortByLastCreated);
175
+ break;
176
+ }
177
+
178
+ return posts;
179
+ }
180
+ }
@@ -0,0 +1,45 @@
1
+ import { PaginationController } from '~/core/liveCollection/PaginationController';
2
+ import { COLLECTION_DEFAULT_PAGINATION_LIMIT } from '~/utils/constants';
3
+ import { inferIsDeleted } from '~/utils/inferIsDeleted';
4
+
5
+ export class SearchPostPaginationController extends PaginationController<
6
+ 'post',
7
+ Amity.PostLiveCollection
8
+ > {
9
+ async getRequest(queryParams: Amity.PostLiveCollection, token: string | undefined) {
10
+ const {
11
+ limit = COLLECTION_DEFAULT_PAGINATION_LIMIT,
12
+ matchingOnlyParentPost,
13
+ hashtags,
14
+ ...params
15
+ } = queryParams;
16
+
17
+ const { dataTypes } = params;
18
+
19
+ const baseOptions = {
20
+ type: params.sortBy || queryParams.limit ? 'pagination' : undefined,
21
+ };
22
+
23
+ const options = token ? { ...baseOptions, token } : { ...baseOptions, limit };
24
+
25
+ const { data: queryResponse } = await this.http.get<Amity.PostPayload & Amity.Pagination>(
26
+ `/api/v1/search/posts`,
27
+ {
28
+ params: {
29
+ ...params,
30
+ hashtags,
31
+ /*
32
+ * when creating post like image, file, video BE will create 2 posts
33
+ * 1. parent post to store text with dataType=text
34
+ * 2. child post to store dataTypes post data
35
+ *
36
+ * By default, BE queries only parent post
37
+ */
38
+ matchingOnlyParentPost: matchingOnlyParentPost ?? !dataTypes?.length,
39
+ options,
40
+ },
41
+ },
42
+ );
43
+ return queryResponse;
44
+ }
45
+ }