@amityco/ts-sdk 7.6.1-2841ad2c.0 → 7.6.1-63bd9d56.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 (247) hide show
  1. package/dist/@types/core/events.d.ts +1 -6
  2. package/dist/@types/core/events.d.ts.map +1 -1
  3. package/dist/@types/core/payload.d.ts +1 -26
  4. package/dist/@types/core/payload.d.ts.map +1 -1
  5. package/dist/@types/domains/channel.d.ts +0 -6
  6. package/dist/@types/domains/channel.d.ts.map +1 -1
  7. package/dist/@types/domains/content.d.ts +8 -2
  8. package/dist/@types/domains/content.d.ts.map +1 -1
  9. package/dist/@types/domains/feed.d.ts +6 -1
  10. package/dist/@types/domains/feed.d.ts.map +1 -1
  11. package/dist/@types/domains/file.d.ts +3 -1
  12. package/dist/@types/domains/file.d.ts.map +1 -1
  13. package/dist/@types/domains/post.d.ts +3 -3
  14. package/dist/@types/domains/post.d.ts.map +1 -1
  15. package/dist/@types/domains/stream.d.ts +1 -9
  16. package/dist/@types/domains/stream.d.ts.map +1 -1
  17. package/dist/@types/index.d.ts +0 -1
  18. package/dist/@types/index.d.ts.map +1 -1
  19. package/dist/channelRepository/api/createChannel.d.ts +1 -3
  20. package/dist/channelRepository/api/createChannel.d.ts.map +1 -1
  21. package/dist/channelRepository/channelMembership/observers/getMembers/ChannelMemberLiveCollectionController.d.ts.map +1 -1
  22. package/dist/channelRepository/events/index.d.ts +1 -1
  23. package/dist/channelRepository/events/index.d.ts.map +1 -1
  24. package/dist/channelRepository/events/onChannelMuted.d.ts +2 -0
  25. package/dist/channelRepository/events/onChannelMuted.d.ts.map +1 -0
  26. package/dist/channelRepository/internalApi/getChannel.d.ts.map +1 -1
  27. package/dist/channelRepository/observers/getChannels/ChannelLiveCollectionController.d.ts.map +1 -1
  28. package/dist/client/api/login.d.ts.map +1 -1
  29. package/dist/communityRepository/api/getCommunity.d.ts +1 -1
  30. package/dist/communityRepository/api/getCommunity.d.ts.map +1 -1
  31. package/dist/core/events.d.ts +3 -3
  32. package/dist/core/events.d.ts.map +1 -1
  33. package/dist/core/model/index.d.ts.map +1 -1
  34. package/dist/core/subscription.d.ts +1 -2
  35. package/dist/core/subscription.d.ts.map +1 -1
  36. package/dist/feedRepository/api/index.d.ts +0 -1
  37. package/dist/feedRepository/api/index.d.ts.map +1 -1
  38. package/dist/feedRepository/api/queryGlobalFeed.d.ts +3 -0
  39. package/dist/feedRepository/api/queryGlobalFeed.d.ts.map +1 -1
  40. package/dist/feedRepository/index.d.ts +2 -1
  41. package/dist/feedRepository/index.d.ts.map +1 -1
  42. package/dist/feedRepository/observers/getCustomRankingGlobalFeed/LiveCollectionController.d.ts +13 -0
  43. package/dist/feedRepository/observers/getCustomRankingGlobalFeed/LiveCollectionController.d.ts.map +1 -0
  44. package/dist/feedRepository/observers/getCustomRankingGlobalFeed/PaginationController.d.ts +5 -0
  45. package/dist/feedRepository/observers/getCustomRankingGlobalFeed/PaginationController.d.ts.map +1 -0
  46. package/dist/feedRepository/observers/getCustomRankingGlobalFeed/QueryStreamController.d.ts +15 -0
  47. package/dist/feedRepository/observers/getCustomRankingGlobalFeed/QueryStreamController.d.ts.map +1 -0
  48. package/dist/feedRepository/observers/getCustomRankingGlobalFeed.d.ts +22 -0
  49. package/dist/feedRepository/observers/getCustomRankingGlobalFeed.d.ts.map +1 -0
  50. package/dist/feedRepository/observers/getGlobalFeed/LiveCollectionController.d.ts +13 -0
  51. package/dist/feedRepository/observers/getGlobalFeed/LiveCollectionController.d.ts.map +1 -0
  52. package/dist/feedRepository/observers/getGlobalFeed/PaginationController.d.ts +5 -0
  53. package/dist/feedRepository/observers/getGlobalFeed/PaginationController.d.ts.map +1 -0
  54. package/dist/feedRepository/observers/getGlobalFeed/QueryStreamController.d.ts +15 -0
  55. package/dist/feedRepository/observers/getGlobalFeed/QueryStreamController.d.ts.map +1 -0
  56. package/dist/feedRepository/observers/getGlobalFeed.d.ts +22 -0
  57. package/dist/feedRepository/observers/getGlobalFeed.d.ts.map +1 -0
  58. package/dist/feedRepository/observers/index.d.ts +3 -0
  59. package/dist/feedRepository/observers/index.d.ts.map +1 -0
  60. package/dist/feedRepository/observers/utils.d.ts +6 -0
  61. package/dist/feedRepository/observers/utils.d.ts.map +1 -0
  62. package/dist/fileRepository/api/index.d.ts +1 -0
  63. package/dist/fileRepository/api/index.d.ts.map +1 -1
  64. package/dist/fileRepository/api/uploadClip.d.ts +17 -0
  65. package/dist/fileRepository/api/uploadClip.d.ts.map +1 -0
  66. package/dist/index.cjs.js +7215 -7438
  67. package/dist/index.d.ts +0 -1
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.esm.js +7289 -7510
  70. package/dist/index.umd.js +3 -3
  71. package/dist/liveStreamPlayer/utils/eventRegister.d.ts +1 -2
  72. package/dist/liveStreamPlayer/utils/eventRegister.d.ts.map +1 -1
  73. package/dist/messagePreview/utils/getChannelMessagePreviewWithUser.d.ts +0 -4
  74. package/dist/messagePreview/utils/getChannelMessagePreviewWithUser.d.ts.map +1 -1
  75. package/dist/messagePreview/utils/getSubChannelMessagePreviewWithUser.d.ts +1 -1
  76. package/dist/messageRepository/api/deleteMessage.d.ts.map +1 -1
  77. package/dist/messageRepository/observers/getMessage.d.ts.map +1 -1
  78. package/dist/messageRepository/observers/getMessages/MessageLiveCollectionController.d.ts.map +1 -1
  79. package/dist/messageRepository/observers/getMessages/MessageQueryStreamController.d.ts.map +1 -1
  80. package/dist/postRepository/api/createClipPost.d.ts +32 -0
  81. package/dist/postRepository/api/createClipPost.d.ts.map +1 -0
  82. package/dist/postRepository/api/createPost.d.ts.map +1 -1
  83. package/dist/postRepository/api/index.d.ts +1 -0
  84. package/dist/postRepository/api/index.d.ts.map +1 -1
  85. package/dist/postRepository/events/utils.d.ts.map +1 -1
  86. package/dist/postRepository/observers/getGlobalPinnedPosts/GlobalPinnedPostLiveCollectionController.d.ts.map +1 -1
  87. package/dist/postRepository/observers/getPinnedPosts/PinnedPostLiveCollectionController.d.ts.map +1 -1
  88. package/dist/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.d.ts +6 -0
  89. package/dist/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.d.ts.map +1 -1
  90. package/dist/postRepository/observers/getPosts/PostLiveCollectionController.d.ts.map +1 -1
  91. package/dist/postRepository/observers/utils.d.ts +13 -0
  92. package/dist/postRepository/observers/utils.d.ts.map +1 -0
  93. package/dist/postRepository/utils/payload.d.ts.map +1 -1
  94. package/dist/reactionRepository/api/addReaction.d.ts.map +1 -1
  95. package/dist/reactionRepository/api/removeReaction.d.ts.map +1 -1
  96. package/dist/streamRepository/api/createStream.d.ts +1 -1
  97. package/dist/streamRepository/api/createStream.d.ts.map +1 -1
  98. package/dist/streamRepository/api/index.d.ts +0 -1
  99. package/dist/streamRepository/api/index.d.ts.map +1 -1
  100. package/dist/streamRepository/api/updateStream.d.ts +1 -4
  101. package/dist/streamRepository/api/updateStream.d.ts.map +1 -1
  102. package/dist/streamRepository/events/index.d.ts +0 -2
  103. package/dist/streamRepository/events/index.d.ts.map +1 -1
  104. package/dist/streamRepository/internalApi/getStream.d.ts +2 -2
  105. package/dist/streamRepository/internalApi/getStream.d.ts.map +1 -1
  106. package/dist/streamRepository/observers/getStreamById.d.ts.map +1 -1
  107. package/dist/streamRepository/observers/getStreams/GetStreamsLiveCollectionController.d.ts.map +1 -1
  108. package/dist/utils/linkedObject/channelLinkedObject.d.ts.map +1 -1
  109. package/dist/utils/linkedObject/postLinkedObject.d.ts.map +1 -1
  110. package/dist/utils/linkedObject/streamLinkedObject.d.ts.map +1 -1
  111. package/dist/utils/postTypePredicate.d.ts +4 -5
  112. package/dist/utils/postTypePredicate.d.ts.map +1 -1
  113. package/dist/utils/tests/dummy/comment.d.ts +1 -1
  114. package/package.json +1 -1
  115. package/src/@types/core/events.ts +1 -10
  116. package/src/@types/core/payload.ts +1 -33
  117. package/src/@types/domains/channel.ts +0 -9
  118. package/src/@types/domains/content.ts +10 -0
  119. package/src/@types/domains/feed.ts +18 -1
  120. package/src/@types/domains/file.ts +5 -0
  121. package/src/@types/domains/post.ts +4 -4
  122. package/src/@types/domains/stream.ts +1 -13
  123. package/src/@types/index.ts +0 -1
  124. package/src/channelRepository/api/createChannel.ts +8 -11
  125. package/src/channelRepository/channelMembership/observers/getMembers/ChannelMemberLiveCollectionController.ts +0 -2
  126. package/src/channelRepository/events/index.ts +1 -1
  127. package/src/channelRepository/events/onChannelMuted.ts +39 -0
  128. package/src/channelRepository/internalApi/getChannel.ts +1 -0
  129. package/src/channelRepository/observers/getChannel.ts +2 -2
  130. package/src/channelRepository/observers/getChannels/ChannelLiveCollectionController.ts +2 -2
  131. package/src/channelRepository/utils/constructChannelObject.ts +2 -2
  132. package/src/client/api/login.ts +0 -2
  133. package/src/commentRepository/api/deleteComment.ts +6 -6
  134. package/src/communityRepository/api/getCommunity.ts +0 -9
  135. package/src/core/events.ts +1 -4
  136. package/src/core/model/index.ts +2 -1
  137. package/src/core/subscription.ts +6 -10
  138. package/src/feedRepository/api/index.ts +0 -1
  139. package/src/feedRepository/api/queryGlobalFeed.ts +6 -1
  140. package/src/feedRepository/index.ts +2 -1
  141. package/src/feedRepository/observers/getCustomRankingGlobalFeed/LiveCollectionController.ts +95 -0
  142. package/src/feedRepository/observers/getCustomRankingGlobalFeed/PaginationController.ts +25 -0
  143. package/src/feedRepository/observers/getCustomRankingGlobalFeed/QueryStreamController.ts +101 -0
  144. package/src/feedRepository/observers/getCustomRankingGlobalFeed.ts +56 -0
  145. package/src/feedRepository/observers/getGlobalFeed/LiveCollectionController.ts +91 -0
  146. package/src/feedRepository/observers/getGlobalFeed/PaginationController.ts +23 -0
  147. package/src/feedRepository/observers/getGlobalFeed/QueryStreamController.ts +99 -0
  148. package/src/feedRepository/observers/getGlobalFeed.ts +56 -0
  149. package/src/feedRepository/observers/index.ts +2 -0
  150. package/src/feedRepository/observers/utils.ts +85 -0
  151. package/src/fileRepository/api/index.ts +1 -0
  152. package/src/fileRepository/api/uploadClip.ts +71 -0
  153. package/src/index.ts +0 -2
  154. package/src/liveStreamPlayer/api/getPlayer.ts +1 -1
  155. package/src/liveStreamPlayer/utils/eventRegister.ts +1 -16
  156. package/src/messageRepository/api/deleteMessage.ts +0 -16
  157. package/src/messageRepository/observers/getMessage.ts +0 -2
  158. package/src/messageRepository/observers/getMessages/MessageLiveCollectionController.ts +0 -2
  159. package/src/messageRepository/observers/getMessages/MessageQueryStreamController.ts +0 -13
  160. package/src/postRepository/api/createClipPost.ts +62 -0
  161. package/src/postRepository/api/createPost.ts +2 -3
  162. package/src/postRepository/api/index.ts +2 -0
  163. package/src/postRepository/api/queryPosts.ts +1 -1
  164. package/src/postRepository/events/utils.ts +35 -1
  165. package/src/postRepository/observers/getGlobalPinnedPosts/GlobalPinnedPostLiveCollectionController.ts +5 -0
  166. package/src/postRepository/observers/getPinnedPosts/PinnedPostLiveCollectionController.ts +7 -1
  167. package/src/postRepository/observers/getPinnedPosts/PinnedPostQueryStreamController.ts +27 -0
  168. package/src/postRepository/observers/getPosts/PostLiveCollectionController.ts +2 -74
  169. package/src/postRepository/observers/getPosts/PostPaginationController.ts +1 -1
  170. package/src/postRepository/observers/utils.ts +97 -0
  171. package/src/postRepository/utils/payload.ts +1 -37
  172. package/src/reactionRepository/api/addReaction.ts +1 -0
  173. package/src/reactionRepository/api/removeReaction.ts +1 -0
  174. package/src/streamRepository/api/createStream.ts +1 -4
  175. package/src/streamRepository/api/index.ts +0 -1
  176. package/src/streamRepository/api/updateStream.ts +1 -8
  177. package/src/streamRepository/events/index.ts +0 -2
  178. package/src/streamRepository/internalApi/getStream.ts +3 -3
  179. package/src/streamRepository/observers/getStreamById.ts +0 -2
  180. package/src/streamRepository/observers/getStreams/GetStreamsLiveCollectionController.ts +1 -5
  181. package/src/utils/linkedObject/channelLinkedObject.ts +0 -3
  182. package/src/utils/linkedObject/postLinkedObject.ts +8 -28
  183. package/src/utils/linkedObject/streamLinkedObject.ts +0 -4
  184. package/src/utils/postTypePredicate.ts +6 -20
  185. package/dist/@types/domains/liveReaction.d.ts +0 -20
  186. package/dist/@types/domains/liveReaction.d.ts.map +0 -1
  187. package/dist/channelRepository/events/onChannelSetMuted.d.ts +0 -2
  188. package/dist/channelRepository/events/onChannelSetMuted.d.ts.map +0 -1
  189. package/dist/channelRepository/events/onChannelSetUserMuted.d.ts +0 -2
  190. package/dist/channelRepository/events/onChannelSetUserMuted.d.ts.map +0 -1
  191. package/dist/channelRepository/internalApi/getMyMembership.d.ts +0 -11
  192. package/dist/channelRepository/internalApi/getMyMembership.d.ts.map +0 -1
  193. package/dist/channelRepository/observers/getMyMembership.d.ts +0 -2
  194. package/dist/channelRepository/observers/getMyMembership.d.ts.map +0 -1
  195. package/dist/feedRepository/api/getCustomRankingGlobalFeed.d.ts +0 -37
  196. package/dist/feedRepository/api/getCustomRankingGlobalFeed.d.ts.map +0 -1
  197. package/dist/liveReactionRepository/api/createReaction.d.ts +0 -20
  198. package/dist/liveReactionRepository/api/createReaction.d.ts.map +0 -1
  199. package/dist/liveReactionRepository/api/index.d.ts +0 -2
  200. package/dist/liveReactionRepository/api/index.d.ts.map +0 -1
  201. package/dist/liveReactionRepository/events/index.d.ts +0 -2
  202. package/dist/liveReactionRepository/events/index.d.ts.map +0 -1
  203. package/dist/liveReactionRepository/events/onLiveReactionCreated.d.ts +0 -17
  204. package/dist/liveReactionRepository/events/onLiveReactionCreated.d.ts.map +0 -1
  205. package/dist/liveReactionRepository/events/onLiveReactionCreatedLocal.d.ts +0 -17
  206. package/dist/liveReactionRepository/events/onLiveReactionCreatedLocal.d.ts.map +0 -1
  207. package/dist/liveReactionRepository/index.d.ts +0 -4
  208. package/dist/liveReactionRepository/index.d.ts.map +0 -1
  209. package/dist/liveReactionRepository/internalApi/createLiveReaction.d.ts +0 -20
  210. package/dist/liveReactionRepository/internalApi/createLiveReaction.d.ts.map +0 -1
  211. package/dist/liveReactionRepository/observers/getReactions.d.ts +0 -19
  212. package/dist/liveReactionRepository/observers/getReactions.d.ts.map +0 -1
  213. package/dist/liveReactionRepository/observers/index.d.ts +0 -2
  214. package/dist/liveReactionRepository/observers/index.d.ts.map +0 -1
  215. package/dist/liveReactionRepository/service/ReactionSyncEngine.d.ts +0 -26
  216. package/dist/liveReactionRepository/service/ReactionSyncEngine.d.ts.map +0 -1
  217. package/dist/liveReactionRepository/utils/ReactionSyncEngineOnLoginHandler.d.ts +0 -3
  218. package/dist/liveReactionRepository/utils/ReactionSyncEngineOnLoginHandler.d.ts.map +0 -1
  219. package/dist/streamRepository/api/editStream.d.ts +0 -18
  220. package/dist/streamRepository/api/editStream.d.ts.map +0 -1
  221. package/dist/streamRepository/events/onStreamViewerBanned.d.ts +0 -17
  222. package/dist/streamRepository/events/onStreamViewerBanned.d.ts.map +0 -1
  223. package/dist/streamRepository/events/onStreamViewerUnbanned.d.ts +0 -17
  224. package/dist/streamRepository/events/onStreamViewerUnbanned.d.ts.map +0 -1
  225. package/dist/streamRepository/internalApi/getLiveChat.d.ts +0 -16
  226. package/dist/streamRepository/internalApi/getLiveChat.d.ts.map +0 -1
  227. package/src/@types/domains/liveReaction.ts +0 -25
  228. package/src/channelRepository/events/onChannelSetMuted.ts +0 -48
  229. package/src/channelRepository/events/onChannelSetUserMuted.ts +0 -65
  230. package/src/channelRepository/internalApi/getMyMembership.ts +0 -37
  231. package/src/channelRepository/observers/getMyMembership.ts +0 -98
  232. package/src/feedRepository/api/getCustomRankingGlobalFeed.ts +0 -115
  233. package/src/liveReactionRepository/api/createReaction.ts +0 -58
  234. package/src/liveReactionRepository/api/index.ts +0 -1
  235. package/src/liveReactionRepository/events/index.ts +0 -1
  236. package/src/liveReactionRepository/events/onLiveReactionCreated.ts +0 -37
  237. package/src/liveReactionRepository/events/onLiveReactionCreatedLocal.ts +0 -29
  238. package/src/liveReactionRepository/index.ts +0 -3
  239. package/src/liveReactionRepository/internalApi/createLiveReaction.ts +0 -42
  240. package/src/liveReactionRepository/observers/getReactions.ts +0 -59
  241. package/src/liveReactionRepository/observers/index.ts +0 -1
  242. package/src/liveReactionRepository/service/ReactionSyncEngine.ts +0 -138
  243. package/src/liveReactionRepository/utils/ReactionSyncEngineOnLoginHandler.ts +0 -19
  244. package/src/streamRepository/api/editStream.ts +0 -51
  245. package/src/streamRepository/events/onStreamViewerBanned.ts +0 -58
  246. package/src/streamRepository/events/onStreamViewerUnbanned.ts +0 -47
  247. package/src/streamRepository/internalApi/getLiveChat.ts +0 -59
@@ -1,98 +0,0 @@
1
- import { getActiveUser } from '~/client/api/activeUser';
2
- import { getMyMembership as _getMyMembership } from '../internalApi/getMyMembership';
3
- import { ASCApiError, ASCError } from '~/core/errors';
4
- import { getActiveClient } from '~/client/api/activeClient';
5
- import { isEqual } from '~/utils/isEqual';
6
- import { createQuery, runQuery } from '~/core/query';
7
- import {
8
- UNSYNCED_OBJECT_CACHED_AT_MESSAGE,
9
- UNSYNCED_OBJECT_CACHED_AT_VALUE,
10
- } from '~/utils/constants';
11
- import { channelMemberLinkedObject } from '~/utils/linkedObject/channelMemberLinkedObject';
12
- import { onChannelMemberBanned, onChannelMemberUnbanned } from '../events';
13
- import { onChannelSetUserMuted } from '../events/onChannelSetUserMuted';
14
-
15
- export const getMyMembership = (
16
- channelId: string,
17
- callback: Amity.LiveObjectCallback<Amity.Membership<'channel'> | undefined>,
18
- ): Amity.Unsubscriber => {
19
- const { _id: userId } = getActiveUser();
20
-
21
- if (!userId)
22
- throw new ASCError(
23
- 'The _id has not been defined in ActiveUser',
24
- Amity.ClientError.UNKNOWN_ERROR,
25
- Amity.ErrorLevel.ERROR,
26
- );
27
-
28
- const { log, cache } = getActiveClient();
29
-
30
- if (!cache) {
31
- console.log('This observable object need the cache data!');
32
- }
33
-
34
- const timestamp = Date.now();
35
- log(`liveMymembership(tmpid: ${timestamp}) > listen`);
36
-
37
- const disposers: Amity.Unsubscriber[] = [];
38
-
39
- let isUnsyncedModel = false; // for messages
40
-
41
- let model: Amity.Membership<'channel'> | undefined;
42
-
43
- const dispatcher = (data: Amity.LiveObject<Amity.Membership<'channel'> | undefined>) => {
44
- callback({
45
- ...data,
46
- data: data.data ? channelMemberLinkedObject(data.data) : data.data,
47
- });
48
- };
49
-
50
- const realtimeRouter = (_: Amity.StaticInternalChannel, __: Amity.RawMembership<'channel'>) => {
51
- const { data } = _getMyMembership(channelId);
52
-
53
- if (isEqual(model, data)) return;
54
-
55
- dispatcher({
56
- loading: false,
57
- data,
58
- });
59
- };
60
-
61
- const onFetch = () => {
62
- const query = createQuery(async () => _getMyMembership(channelId));
63
-
64
- runQuery(query, ({ error, data, loading, origin, cachedAt }) => {
65
- if (cachedAt === UNSYNCED_OBJECT_CACHED_AT_VALUE) {
66
- dispatcher({
67
- data,
68
- origin,
69
- loading: false,
70
- error: new ASCApiError(
71
- UNSYNCED_OBJECT_CACHED_AT_MESSAGE,
72
- Amity.ClientError.DISALOOW_UNSYNCED_OBJECT,
73
- Amity.ErrorLevel.ERROR,
74
- ),
75
- });
76
-
77
- isUnsyncedModel = true;
78
- disposers.forEach(fn => fn());
79
- } else if (!isUnsyncedModel) {
80
- dispatcher({ loading, data, origin, error });
81
- }
82
-
83
- if (error) {
84
- disposers.forEach(fn => fn());
85
- }
86
- });
87
- };
88
-
89
- disposers.push(onChannelMemberBanned(realtimeRouter));
90
- disposers.push(onChannelMemberUnbanned(realtimeRouter));
91
- disposers.push(onChannelSetUserMuted(realtimeRouter));
92
-
93
- onFetch();
94
-
95
- return () => {
96
- disposers.forEach(fn => fn());
97
- };
98
- };
@@ -1,115 +0,0 @@
1
- import { getActiveClient } from '~/client/api/activeClient';
2
- import { ingestInCache } from '~/cache/api/ingestInCache';
3
- import { pullFromCache, pushToCache } from '~/cache/api';
4
- import { getResolver } from '~/core/model';
5
- import { prepareMembershipPayload } from '~/group/utils';
6
- import { LinkedObject } from '~/utils/linkedObject';
7
-
8
- /* begin_public_function
9
- id: feed.query.custom_ranking_feed
10
- */
11
- /**
12
- * ```js
13
- * import { FeedRepository } from '@amityco/ts-sdk'
14
- * const posts = await FeedRepository.getCustomRankingGlobalFeed()
15
- * ```
16
- *
17
- * Queries a paginable list of {@link Amity.Post} objects
18
- *
19
- * @param query The query parameters
20
- * @returns A page of {@link Amity.Post} objects
21
- *
22
- * @category Feed API
23
- * @async
24
- * */
25
- export const getCustomRankingGlobalFeed = async (query?: {
26
- dataTypes?: ('video' | 'image' | 'file' | 'liveStream')[];
27
- limit?: number;
28
- queryToken?: string;
29
- }): Promise<
30
- Omit<Amity.Cached<Amity.Paged<Amity.Post>> & Amity.Pagination, 'nextPage' | 'prevPage'>
31
- > => {
32
- const client = getActiveClient();
33
- client.log('feed/getCustomRankingGlobalFeed', query);
34
-
35
- const { queryToken, limit, ...params } = query ?? {};
36
-
37
- const options = (() => {
38
- if (queryToken) return { token: queryToken };
39
- return undefined;
40
- })();
41
-
42
- const { data: queryPayload } = await client.http.get<Amity.PostPayload & Amity.Pagination>(
43
- `/api/v5/me/global-feeds`,
44
- {
45
- params: {
46
- ...params,
47
- limit: !queryToken ? limit : undefined,
48
- options,
49
- },
50
- },
51
- );
52
-
53
- const { paging, ...payload } = queryPayload;
54
-
55
- const data = prepareMembershipPayload(payload, 'communityUsers');
56
-
57
- const { posts } = data;
58
-
59
- const cachedAt = client.cache && Date.now();
60
-
61
- if (client.cache) {
62
- ingestInCache(data);
63
-
64
- const cacheKey = ['customGlobalFeed', 'query', { ...params, options } as Amity.Serializable];
65
- pushToCache(cacheKey, { posts: posts.map(getResolver('post')), paging });
66
- }
67
-
68
- return { data: posts.map(LinkedObject.post), cachedAt, paging };
69
- };
70
- /* end_public_function */
71
-
72
- /**
73
- * ```js
74
- * import { FeedRepository } from '@amityco/ts-sdk'
75
- * const posts = await FeedRepository.getCustomRankingGlobalFeed.locally()
76
- * ```
77
- *
78
- * Queries a paginable list of {@link Amity.Post} objects from cache
79
- *
80
- * @param query The query parameters
81
- * @returns A page of {@link Amity.Post} objects
82
- *
83
- * @category Feed API
84
- * @async
85
- * */
86
- getCustomRankingGlobalFeed.locally = (
87
- query?: Parameters<typeof getCustomRankingGlobalFeed>[0],
88
- ):
89
- | Omit<Amity.Cached<Amity.Paged<Amity.Post>> & Amity.Pagination, 'nextPage' | 'prevPage'>
90
- | undefined => {
91
- const client = getActiveClient();
92
- client.log('post/getCustomRankingGlobalFeed.locally', query);
93
-
94
- if (!client.cache) return;
95
-
96
- const { ...params } = query ?? {};
97
-
98
- const queryKey = ['customGlobalFeed', 'query', { ...params } as Amity.Serializable];
99
-
100
- const { data, cachedAt } =
101
- pullFromCache<{ posts: Amity.Post['postId'][] } & Amity.Pagination>(queryKey) ?? {};
102
-
103
- if (!data?.posts.length) return;
104
-
105
- const posts: Amity.InternalPost[] = data.posts
106
- .map(postId => pullFromCache<Amity.InternalPost>(['post', 'get', postId])!)
107
- .filter(Boolean)
108
- .map(({ data }) => data);
109
-
110
- const { paging } = data;
111
-
112
- return posts.length === data?.posts?.length
113
- ? { data: posts.map(LinkedObject.post), cachedAt, paging }
114
- : undefined;
115
- };
@@ -1,58 +0,0 @@
1
- import { fireEvent } from '~/core/events';
2
- import ReactionSyncEngine from '../service/ReactionSyncEngine';
3
-
4
- import { getActiveClient } from '~/client/api/activeClient';
5
- // TODO: confirm id
6
- /* begin_public_function
7
- id: live_reaction.create
8
- */
9
- /**
10
- * ```js
11
- * import { acceptInvitation } from '@amityco/ts-sdk'
12
- * const isAccepted = await acceptInvitation(invitationId)
13
- * ```
14
- *
15
- *
16
- * @param referenceId that is target post's ID linked with a livestream
17
- * @param reactionName that is the reaction name
18
- * @param streamId stream id
19
- * @returns a success boolean if the reaction was added
20
- *
21
- * @category Live Reaction API
22
- * @async
23
- */
24
- export const createReaction = async ({
25
- referenceId,
26
- referenceType,
27
- reactionName,
28
- streamId,
29
- }: Pick<Amity.CreateLiveReactionRequest, 'referenceType' | 'reactionName'> & {
30
- referenceId: string;
31
- streamId: string;
32
- }): Promise<boolean> => {
33
- const client = getActiveClient();
34
-
35
- client.log('live_reaction/createReaction', {
36
- referenceId,
37
- referenceType,
38
- reactionName,
39
- });
40
-
41
- const reactionSynceEngine = ReactionSyncEngine.getInstance();
42
-
43
- const reaction = {
44
- reactionName,
45
- referencePublicId: referenceId,
46
- referenceType,
47
- streamId,
48
- occurredAt: new Date().toISOString(),
49
- };
50
-
51
-
52
- reactionSynceEngine.createLiveReaction(reaction);
53
-
54
- fireEvent('local.liveReaction.created', [{ ...reaction, userId: client.userId!, referenceId }]);
55
-
56
- return true;
57
- };
58
- /* end_public_function */
@@ -1 +0,0 @@
1
- export * from './createReaction';
@@ -1 +0,0 @@
1
- export * from './onLiveReactionCreated';
@@ -1,37 +0,0 @@
1
- import { getActiveClient } from '~/client/api';
2
- import { createEventSubscriber } from '~/core/events';
3
- /**
4
- * ```js
5
- * import { onLiveReactionCreated } from '@amityco/ts-sdk'
6
- * const dispose = onLiveReactionCreated(reactions => {
7
- * // ...
8
- * })
9
- * ```
10
- *
11
- * Fired when a batch of {@link Amity.LiveReaction} has been created
12
- *
13
- * @param callback The function to call when the event was fired
14
- * @returns an {@link Amity.Unsubscriber} function to stop listening
15
- *
16
- * @category Live Reaction Events
17
- */
18
- export const onLiveReactionCreated = (
19
- callback: Amity.Listener<Amity.LiveReaction[]>,
20
- ): Amity.Unsubscriber => {
21
- const client = getActiveClient();
22
-
23
- const filter = (rawPayload: Amity.LiveReactionPayload) => {
24
- if (rawPayload.reactions.length > 0) {
25
- // TODO: check with BE if user id is internal or pulbic id
26
- const filteredPayload = rawPayload.reactions.filter(({ userId }) => userId !== client.userId);
27
- callback(filteredPayload);
28
- }
29
- };
30
-
31
- return createEventSubscriber(
32
- client,
33
- 'live_reaction/onLiveReactionCreated',
34
- 'liveReaction.created',
35
- filter,
36
- );
37
- };
@@ -1,29 +0,0 @@
1
- import { getActiveClient } from '~/client/api';
2
- import { createEventSubscriber } from '~/core/events';
3
- /**
4
- * ```js
5
- * import { onLiveReactionCreatedLocal } from '@amityco/ts-sdk'
6
- * const dispose = onLiveReactionCreatedLocal(reactions => {
7
- * // ...
8
- * })
9
- * ```
10
- *
11
- * Fired when a batch of {@link Amity.LiveReaction} has been created
12
- *
13
- * @param callback The function to call when the event was fired
14
- * @returns an {@link Amity.Unsubscriber} function to stop listening
15
- *
16
- * @category Live Reaction Events
17
- */
18
- export const onLiveReactionCreatedLocal = (
19
- callback: Amity.Listener<Amity.LiveReaction[]>,
20
- ): Amity.Unsubscriber => {
21
- const client = getActiveClient();
22
-
23
- return createEventSubscriber(
24
- client,
25
- 'live_reaction/onLiveReactionCreated',
26
- 'local.liveReaction.created',
27
- callback,
28
- );
29
- };
@@ -1,3 +0,0 @@
1
- export * from './api';
2
- export * from './events';
3
- export * from './observers';
@@ -1,42 +0,0 @@
1
- import { getActiveClient } from '~/client/api/activeClient';
2
- // TODO: confirm id
3
- /* begin_public_function
4
- id: live_reaction.create
5
- */
6
- /**
7
- * ```js
8
- * import { acceptInvitation } from '@amityco/ts-sdk'
9
- * const isAccepted = await acceptInvitation(invitationId)
10
- * ```
11
- *
12
- * Accepts array of {@link Amity.LiveReaction} object without userId
13
- *
14
- * @param reactions the array of {@link Amity.LiveReaction} to create
15
- // TODO: confirm what is the ids in addedIds
16
- * @returns An object addedIds contains array of reaction ID
17
- *
18
- * @category Live Reaction API
19
- * @async
20
- */
21
- export const createLiveReaction = async ({
22
- reactions,
23
- liveStreamId,
24
- }: {
25
- reactions: Amity.CreateLiveReactionRequest[];
26
- liveStreamId: string;
27
- }): Promise<Amity.CreateLiveReactionResponse> => {
28
- const client = getActiveClient();
29
-
30
- client.log('live_reaction/addReaction', reactions);
31
-
32
- const { data } = await client.http.post<Amity.CreateLiveReactionResponse>(
33
- `/api/v1/reactions/live`,
34
- {
35
- liveStreamId,
36
- reactions,
37
- },
38
- );
39
-
40
- return data;
41
- };
42
- /* end_public_function */
@@ -1,59 +0,0 @@
1
- import { ASCError } from '~/core/errors';
2
- import { onLiveReactionCreated } from '../events';
3
- import { getActiveClient, getActiveUser } from '~/client';
4
- import { onLiveReactionCreatedLocal } from '../events/onLiveReactionCreatedLocal';
5
-
6
- /**
7
- *
8
- * ```js
9
- * import { getReactions } from '@amityco/ts-sdk';
10
- *
11
- * const unsubscribe = getReactions(response => {
12
- * reactions = response.data
13
- * });
14
- * ```
15
- *
16
- * Observe live reactions {@link_Amity.LiveReaction} that have been created in a post linked with a stream
17
- *
18
- * @param callback the function to call when new data are available
19
- * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the events
20
- *
21
- * @category Live Reaction Observable
22
- */
23
- // TODO: confirm return type for this observable property
24
- export const getReactions = (
25
- postId: string,
26
- callback: Amity.Listener<Amity.LiveReaction[]>,
27
- ): Amity.Unsubscriber => {
28
- const { _id: userId } = getActiveUser();
29
-
30
- if (!userId)
31
- throw new ASCError(
32
- 'The _id has not been defined in ActiveUser',
33
- Amity.ClientError.UNKNOWN_ERROR,
34
- Amity.ErrorLevel.ERROR,
35
- );
36
-
37
- const { log } = getActiveClient();
38
-
39
- const timestamp = Date.now();
40
- log(`getReactions(tmpid: ${timestamp}) > listen`);
41
-
42
- const disposers: Amity.Unsubscriber[] = [];
43
-
44
- const dispatcher = (data: Amity.LiveReaction[]) => {
45
- callback(data);
46
- };
47
-
48
- const realtimeRouter = (data: Amity.LiveReaction[]) => {
49
- const relevantReactions = data.filter(({ referenceId }) => referenceId === postId);
50
- dispatcher(relevantReactions);
51
- };
52
-
53
- disposers.push(onLiveReactionCreated(realtimeRouter));
54
- disposers.push(onLiveReactionCreatedLocal(realtimeRouter));
55
-
56
- return () => {
57
- disposers.forEach(fn => fn());
58
- };
59
- };
@@ -1 +0,0 @@
1
- export * from './getReactions';
@@ -1,138 +0,0 @@
1
- import { onOffline } from '~/client/utils/onOffline';
2
- import { onOnline } from '~/client/utils/onOnline';
3
- import { SECOND } from '~/utils/constants';
4
- import { createLiveReaction as _createLiveReaction } from '../internalApi/createLiveReaction';
5
-
6
- class LiveReactionSyncEngine {
7
- private readonly TIMER_INTERVAL_MS = 1 * SECOND;
8
-
9
- private buffer: (Amity.CreateLiveReactionRequest & { streamId: string })[] = [];
10
-
11
- private timer: NodeJS.Timer | undefined;
12
-
13
- private isSyncing = false;
14
-
15
- private connectionListener: (() => void)[] = [];
16
-
17
- private isConnected = true;
18
-
19
- constructor() {
20
- this.addConnectionListener();
21
- }
22
-
23
- startReactionsSync() {
24
- if (!this.timer) {
25
- this.timer = setInterval(() => {
26
- if (this.isConnected) this.syncLiveReactions();
27
- }, this.TIMER_INTERVAL_MS);
28
- }
29
- }
30
-
31
- stopReactionsSync() {
32
- if (this.timer) {
33
- clearInterval(this.timer);
34
- this.timer = undefined;
35
- }
36
- }
37
-
38
- createLiveReaction(liveReaction: Amity.CreateLiveReactionRequest & { streamId: string }) {
39
- this.buffer.push(liveReaction);
40
- }
41
-
42
- private addConnectionListener() {
43
- if (this.connectionListener.length > 0) return;
44
- this.connectionListener.push(
45
- onOnline(() => {
46
- this.isConnected = true;
47
- }),
48
- );
49
-
50
- this.connectionListener.push(
51
- onOffline(() => {
52
- this.isConnected = false;
53
- }),
54
- );
55
- }
56
-
57
- private removeConnectionListener() {
58
- if (this.connectionListener.length > 0) {
59
- this.connectionListener.forEach(listener => listener());
60
- this.connectionListener = [];
61
- }
62
- }
63
-
64
- private syncLiveReactions() {
65
- if (this.isSyncing) {
66
- return;
67
- }
68
-
69
- this.isSyncing = true;
70
-
71
- const reactions = this.buffer;
72
-
73
- // Clear buffer
74
- this.clearBuffer();
75
-
76
- const payloads: Record<string, Amity.CreateLiveReactionRequest[]> = reactions.reduce(
77
- (prev: Record<string, Amity.CreateLiveReactionRequest[]>, curr) => {
78
- const { streamId, ...rest } = curr;
79
- if (!prev[streamId]) {
80
- // eslint-disable-next-line no-param-reassign
81
- prev[streamId] = [rest];
82
- } else prev[streamId].push(rest);
83
- return prev;
84
- },
85
- {} as Record<string, Amity.CreateLiveReactionRequest[]>,
86
- );
87
-
88
- // Call server api `POST /api/v1/reactions/live` to sync live reactions
89
- Object.entries(payloads).forEach(([streamId, reactions]) => {
90
- _createLiveReaction({
91
- liveStreamId: streamId,
92
- reactions,
93
- });
94
- });
95
-
96
- // After sending request
97
- this.isSyncing = false;
98
- }
99
-
100
- private clearBuffer() {
101
- this.buffer = [];
102
- }
103
-
104
- // Session Management : SessionComponent
105
- onSessionEstablished() {
106
- this.startReactionsSync();
107
- this.addConnectionListener();
108
- }
109
-
110
- onSessionDestroyed() {
111
- // Stop timer
112
- this.stopReactionsSync();
113
-
114
- // Clear buffer
115
- this.clearBuffer();
116
-
117
- // Reset state
118
- this.isSyncing = false;
119
-
120
- // remove connection listener
121
- this.removeConnectionListener();
122
- }
123
-
124
- onTokenExpired() {
125
- this.stopReactionsSync();
126
- }
127
- }
128
-
129
- let instance: LiveReactionSyncEngine;
130
-
131
- export default {
132
- getInstance: () => {
133
- if (!instance) {
134
- instance = new LiveReactionSyncEngine();
135
- }
136
- return instance;
137
- },
138
- };
@@ -1,19 +0,0 @@
1
- import { onSessionStateChange } from '~/client/events/onSessionStateChange';
2
- import ReactionSyncEngine from '../service/ReactionSyncEngine';
3
-
4
- export default () => {
5
- const reactionSynceEngine = ReactionSyncEngine.getInstance();
6
- reactionSynceEngine.startReactionsSync();
7
-
8
- onSessionStateChange(state => {
9
- if (state === Amity.SessionStates.ESTABLISHED) {
10
- reactionSynceEngine.onSessionEstablished();
11
- } else if (state === Amity.SessionStates.TOKEN_EXPIRED) {
12
- reactionSynceEngine.onTokenExpired();
13
- } else reactionSynceEngine.onSessionDestroyed();
14
- });
15
-
16
- return () => {
17
- reactionSynceEngine.onSessionDestroyed();
18
- };
19
- };
@@ -1,51 +0,0 @@
1
- import { getActiveClient } from '~/client/api';
2
-
3
- import { ingestInCache } from '~/cache/api/ingestInCache';
4
- import { LinkedObject } from '~/utils/linkedObject';
5
-
6
- /* begin_public_function
7
- id: stream.update
8
- */
9
- /**
10
- *
11
- * ```js
12
- * import { StreamRepository } from '@amityco/ts-sdk'
13
- * const updated = await StreamRepository.editStream(streamId, { title: 'foobar' })
14
- * ```
15
- *
16
- * Updates an {@link Amity.Stream}
17
- *
18
- * @param streamId The ID of the {@link Amity.Stream} to edit
19
- * @param patch The patch data to apply
20
- * @returns the updated {@link Amity.Stream} object
21
- *
22
- * @category Stream API
23
- * @async
24
- */
25
-
26
- export const editStream = async (
27
- streamId: Amity.Stream['streamId'],
28
- patch: Patch<
29
- Amity.Stream,
30
- 'title' | 'thumbnailFileId' | 'description' | 'metadata' | 'channelEnabled'
31
- >,
32
- ): Promise<Amity.Cached<Amity.Stream>> => {
33
- const client = getActiveClient();
34
- client.log('stream/updateStream', streamId, patch);
35
-
36
- const { data } = await client.http.put<Amity.StreamPayload>(
37
- `/api/v3/video-streaming/${streamId}`,
38
- patch,
39
- );
40
-
41
- const cachedAt = client.cache && Date.now();
42
- if (client.cache) ingestInCache(data, { cachedAt });
43
-
44
- const { videoStreamings } = data;
45
-
46
- return {
47
- data: LinkedObject.stream(videoStreamings.find(stream => stream.streamId === streamId)!),
48
- cachedAt,
49
- };
50
- };
51
- /* end_public_function */