@amityco/ts-sdk 7.8.1-1b0200c.0 → 7.8.1-2915b77.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 (164) hide show
  1. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/client.d.ts +4 -0
  2. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/client.d.ts.map +1 -1
  3. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/client.js.map +1 -1
  4. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/content.d.ts +1 -0
  5. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/content.d.ts.map +1 -1
  6. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/content.js.map +1 -1
  7. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/feed.d.ts +32 -0
  8. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/feed.d.ts.map +1 -1
  9. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/feed.js +22 -1
  10. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/feed.js.map +1 -1
  11. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/hashtag.d.ts +11 -0
  12. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/hashtag.d.ts.map +1 -0
  13. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/hashtag.js +2 -0
  14. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/hashtag.js.map +1 -0
  15. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/poll.d.ts +3 -1
  16. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/poll.d.ts.map +1 -1
  17. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/poll.js.map +1 -1
  18. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/post.d.ts +14 -1
  19. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/post.d.ts.map +1 -1
  20. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/domains/post.js.map +1 -1
  21. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/index.d.ts +2 -0
  22. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/index.d.ts.map +1 -1
  23. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/index.js +2 -0
  24. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/@types/index.js.map +1 -1
  25. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/getShareableLinkConfiguration.d.ts +16 -0
  26. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/getShareableLinkConfiguration.d.ts.map +1 -0
  27. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/getShareableLinkConfiguration.js +21 -0
  28. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/getShareableLinkConfiguration.js.map +1 -0
  29. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/index.d.ts +2 -0
  30. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/index.d.ts.map +1 -1
  31. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/index.js +2 -0
  32. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/client/api/index.js.map +1 -1
  33. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/index.d.ts +1 -1
  34. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/index.d.ts.map +1 -1
  35. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/index.js +1 -1
  36. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/index.js.map +1 -1
  37. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed/LiveCollectionController.d.ts +13 -0
  38. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed/LiveCollectionController.d.ts.map +1 -0
  39. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed/LiveCollectionController.js +108 -0
  40. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed/LiveCollectionController.js.map +1 -0
  41. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed/PaginationController.d.ts +5 -0
  42. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed/PaginationController.d.ts.map +1 -0
  43. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed/PaginationController.js +15 -0
  44. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed/PaginationController.js.map +1 -0
  45. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed/QueryStreamController.d.ts +15 -0
  46. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed/QueryStreamController.d.ts.map +1 -0
  47. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed/QueryStreamController.js +78 -0
  48. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed/QueryStreamController.js.map +1 -0
  49. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed.d.ts +23 -0
  50. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed.d.ts.map +1 -0
  51. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed.js +46 -0
  52. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/getUserFeed.js.map +1 -0
  53. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/index.d.ts +1 -0
  54. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/index.d.ts.map +1 -1
  55. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/index.js +1 -0
  56. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/feedRepository/observers/index.js.map +1 -1
  57. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/liveReactionRepository/api/createReaction.d.ts.map +1 -1
  58. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/liveReactionRepository/api/createReaction.js.map +1 -1
  59. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/pollRepository/api/createPoll.d.ts +3 -3
  60. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/pollRepository/api/createPoll.d.ts.map +1 -1
  61. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/pollRepository/api/createPoll.js +2 -2
  62. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/pollRepository/api/createPoll.js.map +1 -1
  63. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/createPost.d.ts +1 -1
  64. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/createPost.js.map +1 -1
  65. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/editPost.d.ts +1 -1
  66. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/editPost.js.map +1 -1
  67. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/queryPosts.js +2 -2
  68. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/api/queryPosts.js.map +1 -1
  69. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts +14 -0
  70. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts.map +1 -0
  71. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.js +126 -0
  72. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.js.map +1 -0
  73. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts +5 -0
  74. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts.map +1 -0
  75. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.js +27 -0
  76. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.js.map +1 -0
  77. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts +15 -0
  78. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts.map +1 -0
  79. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.js +65 -0
  80. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.js.map +1 -0
  81. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.d.ts +1 -0
  82. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.d.ts.map +1 -1
  83. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.js +1 -0
  84. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/index.js.map +1 -1
  85. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.d.ts +22 -0
  86. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.d.ts.map +1 -0
  87. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.js +45 -0
  88. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/dist/postRepository/observers/searchPostsByHashtag.js.map +1 -0
  89. package/.rollup.cache/home/runner/work/AmityTypescriptSDK/AmityTypescriptSDK/packages/sdk/tsconfig.tsbuildinfo +1 -1
  90. package/dist/@types/domains/client.d.ts +4 -0
  91. package/dist/@types/domains/client.d.ts.map +1 -1
  92. package/dist/@types/domains/content.d.ts +1 -0
  93. package/dist/@types/domains/content.d.ts.map +1 -1
  94. package/dist/@types/domains/feed.d.ts +32 -0
  95. package/dist/@types/domains/feed.d.ts.map +1 -1
  96. package/dist/@types/domains/hashtag.d.ts +11 -0
  97. package/dist/@types/domains/hashtag.d.ts.map +1 -0
  98. package/dist/@types/domains/poll.d.ts +3 -1
  99. package/dist/@types/domains/poll.d.ts.map +1 -1
  100. package/dist/@types/domains/post.d.ts +14 -1
  101. package/dist/@types/domains/post.d.ts.map +1 -1
  102. package/dist/@types/index.d.ts +2 -0
  103. package/dist/@types/index.d.ts.map +1 -1
  104. package/dist/client/api/getShareableLinkConfiguration.d.ts +16 -0
  105. package/dist/client/api/getShareableLinkConfiguration.d.ts.map +1 -0
  106. package/dist/client/api/index.d.ts +2 -0
  107. package/dist/client/api/index.d.ts.map +1 -1
  108. package/dist/feedRepository/index.d.ts +1 -1
  109. package/dist/feedRepository/index.d.ts.map +1 -1
  110. package/dist/feedRepository/observers/getUserFeed/LiveCollectionController.d.ts +13 -0
  111. package/dist/feedRepository/observers/getUserFeed/LiveCollectionController.d.ts.map +1 -0
  112. package/dist/feedRepository/observers/getUserFeed/PaginationController.d.ts +5 -0
  113. package/dist/feedRepository/observers/getUserFeed/PaginationController.d.ts.map +1 -0
  114. package/dist/feedRepository/observers/getUserFeed/QueryStreamController.d.ts +15 -0
  115. package/dist/feedRepository/observers/getUserFeed/QueryStreamController.d.ts.map +1 -0
  116. package/dist/feedRepository/observers/getUserFeed.d.ts +23 -0
  117. package/dist/feedRepository/observers/getUserFeed.d.ts.map +1 -0
  118. package/dist/feedRepository/observers/index.d.ts +1 -0
  119. package/dist/feedRepository/observers/index.d.ts.map +1 -1
  120. package/dist/index.cjs.js +499 -4
  121. package/dist/index.esm.js +500 -5
  122. package/dist/index.umd.js +4 -4
  123. package/dist/liveReactionRepository/api/createReaction.d.ts.map +1 -1
  124. package/dist/pollRepository/api/createPoll.d.ts +3 -3
  125. package/dist/pollRepository/api/createPoll.d.ts.map +1 -1
  126. package/dist/postRepository/api/createPost.d.ts +1 -1
  127. package/dist/postRepository/api/editPost.d.ts +1 -1
  128. package/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts +14 -0
  129. package/dist/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.d.ts.map +1 -0
  130. package/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts +5 -0
  131. package/dist/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.d.ts.map +1 -0
  132. package/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts +15 -0
  133. package/dist/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.d.ts.map +1 -0
  134. package/dist/postRepository/observers/index.d.ts +1 -0
  135. package/dist/postRepository/observers/index.d.ts.map +1 -1
  136. package/dist/postRepository/observers/searchPostsByHashtag.d.ts +22 -0
  137. package/dist/postRepository/observers/searchPostsByHashtag.d.ts.map +1 -0
  138. package/package.json +1 -1
  139. package/src/@types/domains/client.ts +5 -0
  140. package/src/@types/domains/content.ts +1 -0
  141. package/src/@types/domains/feed.ts +44 -0
  142. package/src/@types/domains/hashtag.ts +11 -0
  143. package/src/@types/domains/poll.ts +3 -1
  144. package/src/@types/domains/post.ts +18 -1
  145. package/src/@types/index.ts +2 -0
  146. package/src/client/api/getShareableLinkConfiguration.ts +26 -0
  147. package/src/client/api/index.ts +4 -0
  148. package/src/feedRepository/index.ts +1 -1
  149. package/src/feedRepository/observers/getUserFeed/LiveCollectionController.ts +162 -0
  150. package/src/feedRepository/observers/getUserFeed/PaginationController.ts +37 -0
  151. package/src/feedRepository/observers/getUserFeed/QueryStreamController.ts +119 -0
  152. package/src/feedRepository/observers/getUserFeed.ts +56 -0
  153. package/src/feedRepository/observers/index.ts +1 -0
  154. package/src/liveReactionRepository/api/createReaction.ts +0 -1
  155. package/src/pollRepository/api/createPoll.ts +3 -3
  156. package/src/postRepository/api/createPost.ts +1 -1
  157. package/src/postRepository/api/editPost.ts +1 -1
  158. package/src/postRepository/api/queryPosts.ts +2 -2
  159. package/src/postRepository/observers/getPostsByHashtag/SearchPostLiveCollectionController.ts +183 -0
  160. package/src/postRepository/observers/getPostsByHashtag/SearchPostPaginationController.ts +49 -0
  161. package/src/postRepository/observers/getPostsByHashtag/SearchPostQueryStreamController.ts +99 -0
  162. package/src/postRepository/observers/index.ts +1 -0
  163. package/src/postRepository/observers/searchPostsByHashtag.ts +56 -0
  164. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,119 @@
1
+ import { getResolver } from '~/core/model';
2
+ import { getActiveClient } from '~/client';
3
+ import { pullFromCache, pushToCache } from '~/cache/api';
4
+ import { ingestInCache } from '~/cache/api/ingestInCache';
5
+ import { EnumPostActions } from '~/postRepository/observers/enums';
6
+ import { QueryStreamController } from '~/core/liveCollection/QueryStreamController';
7
+
8
+ export class UserFeedQueryStreamController extends QueryStreamController<
9
+ Amity.PostPayload,
10
+ Amity.UserFeedLiveCollection
11
+ > {
12
+ private notifyChange: (params: Amity.LiveCollectionNotifyParams) => void;
13
+
14
+ private preparePayload: (response: Amity.PostPayload) => Amity.ProcessedPostPayload;
15
+
16
+ constructor(
17
+ query: Amity.UserFeedLiveCollection,
18
+ cacheKey: string[],
19
+ notifyChange: (params: Amity.LiveCollectionNotifyParams) => void,
20
+ preparePayload: (response: Amity.PostPayload) => Amity.ProcessedPostPayload,
21
+ ) {
22
+ super(query, cacheKey);
23
+ this.notifyChange = notifyChange;
24
+ this.preparePayload = preparePayload;
25
+ }
26
+
27
+ async saveToMainDB(response: Amity.PostPayload) {
28
+ const processedPayload = await this.preparePayload(response);
29
+
30
+ const client = getActiveClient();
31
+ const cachedAt = client.cache && Date.now();
32
+
33
+ if (client.cache) {
34
+ ingestInCache(processedPayload, { cachedAt });
35
+ }
36
+ }
37
+
38
+ appendToQueryStream(
39
+ response: Amity.PostPayload & Partial<Amity.Pagination>,
40
+ direction: Amity.LiveCollectionPageDirection,
41
+ refresh = false,
42
+ ) {
43
+ if (refresh) {
44
+ pushToCache(this.cacheKey, {
45
+ data: response.posts.map(getResolver('post')),
46
+ });
47
+ } else {
48
+ const collection = pullFromCache<Amity.UserFeedLiveCollectionCache>(this.cacheKey)?.data;
49
+
50
+ const posts = collection?.data ?? [];
51
+
52
+ pushToCache(this.cacheKey, {
53
+ ...collection,
54
+ data: [...new Set([...posts, ...response.posts.map(getResolver('post'))])],
55
+ });
56
+ }
57
+ }
58
+
59
+ reactor(action: EnumPostActions) {
60
+ return (post: Amity.InternalPost) => {
61
+ const collection = pullFromCache<Amity.UserFeedLiveCollectionCache>(this.cacheKey)?.data;
62
+
63
+ if (!collection) return;
64
+
65
+ // if the collection is parent post collection and
66
+ // post is not included in the collection or post is child post
67
+ if (
68
+ (!this.query.dataTypes || this.query.dataTypes.length === 0) &&
69
+ !collection.data.includes(post.parentPostId ? post.parentPostId : post.postId)
70
+ )
71
+ return;
72
+
73
+ if (action === EnumPostActions.OnPostDeleted) {
74
+ collection.data = collection.data.filter(postId => postId !== post.postId);
75
+ }
76
+
77
+ if (post.parentPostId && post.isDeleted) {
78
+ const parentPost = pullFromCache<Amity.InternalPost>([
79
+ 'post',
80
+ 'get',
81
+ post.parentPostId,
82
+ ])?.data;
83
+
84
+ if (!parentPost) return;
85
+
86
+ parentPost.children = parentPost.children.filter(childId => childId !== post.postId);
87
+ pushToCache(['post', 'get', parentPost.postId], parentPost);
88
+ }
89
+
90
+ if (action === EnumPostActions.OnPostDeclined) {
91
+ collection.data = collection.data.filter(postId => postId !== post.postId);
92
+ }
93
+
94
+ if (action === EnumPostActions.OnPostCreated || action === EnumPostActions.OnPostApproved) {
95
+ if (
96
+ this.query.dataTypes &&
97
+ this.query.dataTypes.length > 0 &&
98
+ !this.query.dataTypes.includes(post.dataType)
99
+ ) {
100
+ return;
101
+ }
102
+
103
+ collection.data = [...new Set([post.postId, ...collection.data])];
104
+ }
105
+
106
+ pushToCache(this.cacheKey, collection);
107
+ this.notifyChange({ origin: Amity.LiveDataOrigin.EVENT, loading: false });
108
+ };
109
+ }
110
+
111
+ subscribeRTE(
112
+ createSubscriber: {
113
+ fn: (reactor: (post: Amity.InternalPost) => void) => Amity.Unsubscriber;
114
+ action: EnumPostActions;
115
+ }[],
116
+ ) {
117
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
118
+ }
119
+ }
@@ -0,0 +1,56 @@
1
+ import { getActiveClient } from '~/client/api/activeClient';
2
+ import { dropFromCache } from '~/cache/api/dropFromCache';
3
+ import { ENABLE_CACHE_MESSAGE } from '~/utils/constants';
4
+ import { UserFeedLiveCollectionController } from './getUserFeed/LiveCollectionController';
5
+
6
+ /* begin_public_function
7
+ id: feed.query.user_feed
8
+ */
9
+ /**
10
+ * ```js
11
+ * import { FeedRepository } from '@amityco/ts-sdk'
12
+ *
13
+ * let posts = []
14
+ * const unsubscribe = FeedRepository.getUserFeed({
15
+ * userId: string,
16
+ * feedSources: ['user', 'community'],
17
+ * }, response => response => processResponse(response))
18
+ * ```
19
+ *
20
+ * Observe all mutations on a list of {@link Amity.Post} for a given user and feedSources
21
+ *
22
+ * @param params.userId the ID of the user
23
+ * @param params.feedSources the sources of the feed
24
+ * @param callback the function to call when new data are available
25
+ * @param config
26
+ * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
27
+ *
28
+ * @category Posts Live Collection
29
+ */
30
+ export const getUserFeed = (
31
+ params: Amity.UserFeedLiveCollection,
32
+ callback: Amity.LiveCollectionCallback<Amity.Post>,
33
+ config?: Amity.LiveCollectionConfig,
34
+ ): Amity.Unsubscriber => {
35
+ const { log, cache } = getActiveClient();
36
+
37
+ if (!cache) {
38
+ console.log(ENABLE_CACHE_MESSAGE);
39
+ }
40
+
41
+ const timestamp = Date.now();
42
+ log(`getUserFeed(tmpid: ${timestamp}) > listen`);
43
+
44
+ const userFeedLiveCollection = new UserFeedLiveCollectionController(params, callback);
45
+ const disposers = userFeedLiveCollection.startSubscription();
46
+
47
+ const cacheKey = userFeedLiveCollection.getCacheKey();
48
+
49
+ disposers.push(() => dropFromCache(cacheKey));
50
+
51
+ return () => {
52
+ log(`getUserFeed(tmpid: ${timestamp}) > dispose`);
53
+ disposers.forEach(fn => fn());
54
+ };
55
+ };
56
+ /* end_public_function */
@@ -1,2 +1,3 @@
1
1
  export { getCustomRankingGlobalFeed } from './getCustomRankingGlobalFeed';
2
2
  export { getGlobalFeed } from './getGlobalFeed';
3
+ export { getUserFeed } from './getUserFeed';
@@ -48,7 +48,6 @@ export const createReaction = async ({
48
48
  occurredAt: new Date().toISOString(),
49
49
  };
50
50
 
51
-
52
51
  reactionSynceEngine.createLiveReaction(reaction);
53
52
 
54
53
  fireEvent('local.liveReaction.created', [{ ...reaction, userId: client.userId!, referenceId }]);
@@ -11,8 +11,8 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
11
11
  * const created = await createPoll({
12
12
  * question: 'question',
13
13
  * answers: [
14
- * { dataType: 'text', data: 'answer1' },
15
- * { dataType: 'text', data: 'answer2' },
14
+ * { dataType: 'text', data: 'answer1', fileId: 'fileId1' },
15
+ * { dataType: 'text', data: 'answer2', fileId: 'fileId2' },
16
16
  * ],
17
17
  * closedIn: 1649136484
18
18
  * }))
@@ -27,7 +27,7 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
27
27
  * @async
28
28
  */
29
29
  export const createPoll = async (
30
- bundle: Pick<Amity.Poll, 'question' | 'answerType' | 'closedIn'> & {
30
+ bundle: Pick<Amity.Poll, 'title' | 'question' | 'answerType' | 'closedIn'> & {
31
31
  answers: Pick<Amity.PollAnswer, 'dataType' | 'data'>[];
32
32
  },
33
33
  ): Promise<Amity.Cached<Amity.Poll>> => {
@@ -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'];
@@ -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,183 @@
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.SearchPostWithHashtagLiveCollection,
33
+ Amity.Post,
34
+ SearchPostPaginationController
35
+ > {
36
+ private queryStreamController: SearchPostQueryStreamController;
37
+
38
+ private query: Amity.SearchPostWithHashtagLiveCollection;
39
+
40
+ constructor(
41
+ query: Amity.SearchPostWithHashtagLiveCollection,
42
+ callback: Amity.LiveCollectionCallback<Amity.Post>,
43
+ ) {
44
+ const queryStreamId = hash(query);
45
+ const cacheKey = ['posts', 'collection', queryStreamId];
46
+ const paginationController = new SearchPostPaginationController(query);
47
+
48
+ super(paginationController, queryStreamId, cacheKey, callback);
49
+
50
+ this.query = query;
51
+ this.queryStreamController = new SearchPostQueryStreamController(
52
+ this.query,
53
+ this.cacheKey,
54
+ this.notifyChange.bind(this),
55
+ preparePostPayload,
56
+ );
57
+
58
+ this.callback = callback.bind(this);
59
+ this.loadPage({ initial: true });
60
+ }
61
+
62
+ protected setup() {
63
+ const collection = pullFromCache<Amity.PostLiveCollectionCache>(this.cacheKey)?.data;
64
+ if (!collection) {
65
+ pushToCache(this.cacheKey, {
66
+ data: [],
67
+ params: {},
68
+ });
69
+ }
70
+ }
71
+
72
+ protected async persistModel(queryPayload: Amity.PostPayload & Amity.Pagination) {
73
+ await this.queryStreamController.saveToMainDB(queryPayload);
74
+ }
75
+
76
+ protected persistQueryStream({
77
+ response,
78
+ direction,
79
+ refresh,
80
+ }: Amity.LiveCollectionPersistQueryStreamParams<'post'>) {
81
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
82
+ }
83
+
84
+ startSubscription() {
85
+ return this.queryStreamController.subscribeRTE([
86
+ { fn: onPostCreated, action: EnumPostActions.OnPostCreated },
87
+ { fn: onPostUpdated, action: EnumPostActions.OnPostUpdated },
88
+ { fn: onPostUpdatedLocal, action: EnumPostActions.OnPostUpdated },
89
+ { fn: onPostDeleted, action: EnumPostActions.OnPostDeleted },
90
+ { fn: onPostFlagged, action: EnumPostActions.OnPostFlagged },
91
+ { fn: onPostUnflagged, action: EnumPostActions.OnPostUnflagged },
92
+ { fn: onPostApproved, action: EnumPostActions.OnPostApproved },
93
+ { fn: onPostDeclined, action: EnumPostActions.OnPostDeclined },
94
+ { fn: onPostReactionAdded, action: EnumPostActions.OnPostReactionAdded },
95
+ { fn: onPostReactionRemoved, action: EnumPostActions.OnPostReactionRemoved },
96
+ { fn: onLocalPostReactionAdded, action: EnumPostActions.OnPostReactionAdded },
97
+ { fn: onLocalPostReactionRemoved, action: EnumPostActions.OnPostReactionRemoved },
98
+ { fn: onLocalPostDeleted, action: EnumPostActions.OnPostDeleted },
99
+ {
100
+ fn: convertEventPayload(
101
+ (callback: Amity.Listener<Amity.InternalComment>) => {
102
+ return onCommentCreated(async (comment: Amity.InternalComment) => {
103
+ const currentCollection = pullFromCache<Amity.PostLiveCollectionCache>(
104
+ this.cacheKey,
105
+ )?.data;
106
+
107
+ if (!currentCollection || currentCollection.data.includes(comment.referenceId))
108
+ return;
109
+
110
+ await getPost(comment.referenceId);
111
+ callback(comment);
112
+ });
113
+ },
114
+ 'referenceId',
115
+ 'post',
116
+ ),
117
+ action: EnumPostActions.OnPostUpdated,
118
+ },
119
+ {
120
+ fn: convertEventPayload(
121
+ (callback: Amity.Listener<Amity.InternalComment>) => {
122
+ return onCommentDeleted(async (comment: Amity.InternalComment) => {
123
+ const currentCollection = pullFromCache<Amity.PostLiveCollectionCache>(
124
+ this.cacheKey,
125
+ )?.data;
126
+
127
+ if (!currentCollection || currentCollection.data.includes(comment.referenceId))
128
+ return;
129
+
130
+ await getPost(comment.referenceId);
131
+ callback(comment);
132
+ });
133
+ },
134
+ 'referenceId',
135
+ 'post',
136
+ ),
137
+ action: EnumPostActions.OnPostUpdated,
138
+ },
139
+ ]);
140
+ }
141
+
142
+ notifyChange({ origin, loading, error }: Amity.LiveCollectionNotifyParams) {
143
+ const collection = pullFromCache<Amity.PostLiveCollectionCache>(this.cacheKey)?.data;
144
+ if (!collection) return;
145
+
146
+ const data = this.applyFilter(
147
+ collection.data
148
+ .map(id => pullFromCache<Amity.InternalPost>(['post', 'get', id])!)
149
+ .filter(isNonNullable)
150
+ .map(({ data }) => data) ?? [],
151
+ ).map(LinkedObject.post);
152
+
153
+ if (!this.shouldNotify(data) && origin === 'event') return;
154
+
155
+ this.callback({
156
+ onNextPage: () => this.loadPage({ direction: Amity.LiveCollectionPageDirection.NEXT }),
157
+ data,
158
+ hasNextPage: !!this.paginationController.getNextToken(),
159
+ loading,
160
+ error,
161
+ });
162
+ }
163
+
164
+ applyFilter(data: Amity.InternalPost[]) {
165
+ let posts = data;
166
+
167
+ if (this.query.dataTypes?.length) {
168
+ posts = filterByPostDataTypes(posts, this.query.dataTypes);
169
+ }
170
+
171
+ switch (this.query.sortBy) {
172
+ case 'firstCreated':
173
+ posts = posts.sort(sortByFirstCreated);
174
+ break;
175
+ case 'lastCreated':
176
+ default:
177
+ posts = posts.sort(sortByLastCreated);
178
+ break;
179
+ }
180
+
181
+ return posts;
182
+ }
183
+ }
@@ -0,0 +1,49 @@
1
+ import { PaginationController } from '~/core/liveCollection/PaginationController';
2
+ import { COLLECTION_DEFAULT_PAGINATION_LIMIT } from '~/utils/constants';
3
+
4
+ export class SearchPostPaginationController extends PaginationController<
5
+ 'post',
6
+ Amity.SearchPostWithHashtagLiveCollection
7
+ > {
8
+ async getRequest(
9
+ queryParams: Amity.SearchPostWithHashtagLiveCollection,
10
+ token: string | undefined,
11
+ ) {
12
+ const {
13
+ limit = COLLECTION_DEFAULT_PAGINATION_LIMIT,
14
+ matchingOnlyParentPost,
15
+ hashtags,
16
+ dataTypes,
17
+ targetType = 'all',
18
+ ...params
19
+ } = queryParams;
20
+
21
+ const baseOptions = {
22
+ type: params.sortBy || queryParams.limit ? 'pagination' : undefined,
23
+ };
24
+
25
+ const options = token ? { ...baseOptions, token } : { ...baseOptions, limit };
26
+
27
+ const { data: queryResponse } = await this.http.get<Amity.PostPayload & Amity.Pagination>(
28
+ `/api/v1/search/posts`,
29
+ {
30
+ params: {
31
+ ...params,
32
+ hashtags,
33
+ dataTypes,
34
+ targetType,
35
+ /*
36
+ * when creating post like image, file, video BE will create 2 posts
37
+ * 1. parent post to store text with dataType=text
38
+ * 2. child post to store dataTypes post data
39
+ *
40
+ * By default, BE queries only parent post
41
+ */
42
+ matchingOnlyParentPost: matchingOnlyParentPost ?? !dataTypes?.length,
43
+ options,
44
+ },
45
+ },
46
+ );
47
+ return queryResponse;
48
+ }
49
+ }
@@ -0,0 +1,99 @@
1
+ import { QueryStreamController } from '~/core/liveCollection/QueryStreamController';
2
+ import { pullFromCache, pushToCache } from '~/cache/api';
3
+ import { ingestInCache } from '~/cache/api/ingestInCache';
4
+ import { getResolver } from '~/core/model';
5
+ import { getActiveClient } from '~/client';
6
+ import { EnumPostActions } from '../enums';
7
+
8
+ export class SearchPostQueryStreamController extends QueryStreamController<
9
+ Amity.PostPayload,
10
+ Amity.SearchPostWithHashtagLiveCollection
11
+ > {
12
+ private notifyChange: (params: Amity.LiveCollectionNotifyParams) => void;
13
+
14
+ private preparePayload: (response: Amity.PostPayload) => Amity.ProcessedPostPayload;
15
+
16
+ constructor(
17
+ query: Amity.SearchPostWithHashtagLiveCollection,
18
+ cacheKey: string[],
19
+ notifyChange: (params: Amity.LiveCollectionNotifyParams) => void,
20
+ preparePayload: (response: Amity.PostPayload) => Amity.ProcessedPostPayload,
21
+ ) {
22
+ super(query, cacheKey);
23
+ this.notifyChange = notifyChange;
24
+ this.preparePayload = preparePayload;
25
+ }
26
+
27
+ async saveToMainDB(response: Amity.PostPayload) {
28
+ const processedPayload = await this.preparePayload(response);
29
+
30
+ const client = getActiveClient();
31
+ const cachedAt = client.cache && Date.now();
32
+
33
+ if (client.cache) {
34
+ ingestInCache(processedPayload, { cachedAt });
35
+ }
36
+ }
37
+
38
+ appendToQueryStream(
39
+ response: Amity.PostPayload & Partial<Amity.Pagination>,
40
+ direction: Amity.LiveCollectionPageDirection,
41
+ refresh = false,
42
+ ) {
43
+ if (refresh) {
44
+ pushToCache(this.cacheKey, {
45
+ data: response.posts.map(getResolver('post')),
46
+ });
47
+ } else {
48
+ const collection = pullFromCache<Amity.PostLiveCollectionCache>(this.cacheKey)?.data;
49
+
50
+ const posts = collection?.data ?? [];
51
+
52
+ pushToCache(this.cacheKey, {
53
+ ...collection,
54
+ data: [...new Set([...posts, ...response.posts.map(getResolver('post'))])],
55
+ });
56
+ }
57
+ }
58
+
59
+ reactor(action: EnumPostActions) {
60
+ return (post: Amity.InternalPost) => {
61
+ const collection = pullFromCache<Amity.PostLiveCollectionCache>(this.cacheKey)?.data;
62
+
63
+ if (!collection) return;
64
+
65
+ if (post.parentPostId && post.isDeleted) {
66
+ const parentPost = pullFromCache<Amity.InternalPost>([
67
+ 'post',
68
+ 'get',
69
+ post.parentPostId,
70
+ ])?.data;
71
+
72
+ if (!parentPost) return;
73
+
74
+ parentPost.children = parentPost.children.filter(childId => childId !== post.postId);
75
+ pushToCache(['post', 'get', parentPost.postId], parentPost);
76
+ }
77
+
78
+ if (action === EnumPostActions.OnPostDeclined) {
79
+ collection.data = collection.data.filter(postId => postId !== post.postId);
80
+ }
81
+
82
+ if (action === EnumPostActions.OnPostCreated || action === EnumPostActions.OnPostApproved) {
83
+ collection.data = [...new Set([post.postId, ...collection.data])];
84
+ }
85
+
86
+ pushToCache(this.cacheKey, collection);
87
+ this.notifyChange({ origin: Amity.LiveDataOrigin.EVENT, loading: false });
88
+ };
89
+ }
90
+
91
+ subscribeRTE(
92
+ createSubscriber: {
93
+ fn: (reactor: (post: Amity.InternalPost) => void) => Amity.Unsubscriber;
94
+ action: EnumPostActions;
95
+ }[],
96
+ ) {
97
+ return createSubscriber.map(subscriber => subscriber.fn(this.reactor(subscriber.action)));
98
+ }
99
+ }
@@ -3,3 +3,4 @@ export * from './getPosts';
3
3
  export * from './getPinnedPosts';
4
4
  export * from './getGlobalPinnedPosts';
5
5
  export * from './semanticSearchPosts';
6
+ export * from './searchPostsByHashtag';
@@ -0,0 +1,56 @@
1
+ import { getActiveClient } from '~/client/api';
2
+ import { dropFromCache } from '~/cache/api';
3
+
4
+ import { ENABLE_CACHE_MESSAGE } from '~/utils/constants';
5
+ import { SearchPostLiveCollectionController } from './getPostsByHashtag/SearchPostLiveCollectionController';
6
+
7
+ /* begin_public_function
8
+ id: post.query
9
+ */
10
+ /**
11
+ * ```js
12
+ * import { PostRepository } from '@amityco/ts-sdk'
13
+ *
14
+ * let posts = []
15
+ * const unsub = PostRepository.searchPostsByHashtag({
16
+ * hashtags: ['amity'],
17
+ * limit: 10,
18
+ * }, response => merge(posts, response.data))
19
+ * ```
20
+ *
21
+ * Observe all mutations on a list of {@link Amity.Post} for a given target object
22
+ *
23
+ * @param params.hashtags the hashtags to search for
24
+ * @param callback the function to call when new data are available
25
+ * @param config
26
+ * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
27
+ *
28
+ * @category Posts Live Collection
29
+ */
30
+ export const searchPostsByHashtag = (
31
+ params: Amity.SearchPostWithHashtagLiveCollection,
32
+ callback: Amity.LiveCollectionCallback<Amity.Post>,
33
+ config?: Amity.LiveCollectionConfig,
34
+ ): Amity.Unsubscriber => {
35
+ const { log, cache } = getActiveClient();
36
+
37
+ if (!cache) {
38
+ console.log(ENABLE_CACHE_MESSAGE);
39
+ }
40
+
41
+ const timestamp = Date.now();
42
+ log(`searchPostsByHashtag(tmpid: ${timestamp}) > listen`);
43
+
44
+ const postsLiveCollection = new SearchPostLiveCollectionController(params, callback);
45
+ const disposers = postsLiveCollection.startSubscription();
46
+
47
+ const cacheKey = postsLiveCollection.getCacheKey();
48
+
49
+ disposers.push(() => dropFromCache(cacheKey));
50
+
51
+ return () => {
52
+ log(`searchPostsByHashtag(tmpid: ${timestamp}) > dispose`);
53
+ disposers.forEach(fn => fn());
54
+ };
55
+ };
56
+ /* end_public_function */