@amityco/ts-sdk 0.0.1-beta.5 → 0.0.1-beta.9

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 (261) hide show
  1. package/dist/@types/core/events.d.ts +63 -17
  2. package/dist/@types/core/events.d.ts.map +1 -1
  3. package/dist/@types/core/transport.d.ts +15 -0
  4. package/dist/@types/core/transport.d.ts.map +1 -1
  5. package/dist/@types/domains/client.d.ts +4 -0
  6. package/dist/@types/domains/client.d.ts.map +1 -1
  7. package/dist/@types/domains/comment.d.ts +1 -1
  8. package/dist/@types/domains/comment.d.ts.map +1 -1
  9. package/dist/@types/domains/community.d.ts +1 -1
  10. package/dist/@types/domains/community.d.ts.map +1 -1
  11. package/dist/@types/domains/group.d.ts +2 -2
  12. package/dist/@types/domains/group.d.ts.map +1 -1
  13. package/dist/@types/domains/partials.d.ts +3 -0
  14. package/dist/@types/domains/partials.d.ts.map +1 -1
  15. package/dist/@types/domains/post.d.ts +1 -1
  16. package/dist/@types/domains/post.d.ts.map +1 -1
  17. package/dist/@types/domains/user.d.ts +2 -1
  18. package/dist/@types/domains/user.d.ts.map +1 -1
  19. package/dist/client/api/connectClient.d.ts.map +1 -1
  20. package/dist/client/api/createClient.d.ts +2 -1
  21. package/dist/client/api/createClient.d.ts.map +1 -1
  22. package/dist/client/api/disconnectClient.d.ts.map +1 -1
  23. package/dist/client/api/getToken.d.ts +3 -1
  24. package/dist/client/api/getToken.d.ts.map +1 -1
  25. package/dist/comment/api/deleteComment.d.ts +37 -1
  26. package/dist/comment/api/deleteComment.d.ts.map +1 -1
  27. package/dist/comment/api/getComment.d.ts.map +1 -1
  28. package/dist/comment/api/queryComments.d.ts +1 -1
  29. package/dist/comment/events/index.d.ts +4 -0
  30. package/dist/comment/events/index.d.ts.map +1 -1
  31. package/dist/comment/events/onCommentCreated.d.ts +1 -1
  32. package/dist/comment/events/onCommentCreated.d.ts.map +1 -1
  33. package/dist/comment/events/onCommentDeleted.d.ts +1 -1
  34. package/dist/comment/events/onCommentDeleted.d.ts.map +1 -1
  35. package/dist/comment/events/onCommentFlagged.d.ts +17 -0
  36. package/dist/comment/events/onCommentFlagged.d.ts.map +1 -0
  37. package/dist/comment/events/onCommentReactionAdded.d.ts +17 -0
  38. package/dist/comment/events/onCommentReactionAdded.d.ts.map +1 -0
  39. package/dist/comment/events/onCommentReactionRemoved.d.ts +17 -0
  40. package/dist/comment/events/onCommentReactionRemoved.d.ts.map +1 -0
  41. package/dist/comment/events/onCommentUnflagged.d.ts +17 -0
  42. package/dist/comment/events/onCommentUnflagged.d.ts.map +1 -0
  43. package/dist/comment/events/onCommentUpdated.d.ts +1 -1
  44. package/dist/comment/events/onCommentUpdated.d.ts.map +1 -1
  45. package/dist/comment/events/utils.d.ts +2 -0
  46. package/dist/comment/events/utils.d.ts.map +1 -0
  47. package/dist/comment/observers/observeComment.d.ts +1 -1
  48. package/dist/comment/observers/observeComment.d.ts.map +1 -1
  49. package/dist/comment/observers/observeComments.d.ts +5 -1
  50. package/dist/comment/observers/observeComments.d.ts.map +1 -1
  51. package/dist/community/events/index.d.ts +4 -0
  52. package/dist/community/events/index.d.ts.map +1 -1
  53. package/dist/community/events/onCommunityCreated.d.ts +2 -2
  54. package/dist/community/events/onCommunityCreated.d.ts.map +1 -1
  55. package/dist/community/events/onCommunityDeleted.d.ts +2 -2
  56. package/dist/community/events/onCommunityDeleted.d.ts.map +1 -1
  57. package/dist/community/events/onCommunityJoined.d.ts +3 -3
  58. package/dist/community/events/onCommunityJoined.d.ts.map +1 -1
  59. package/dist/community/events/onCommunityLeft.d.ts +3 -3
  60. package/dist/community/events/onCommunityLeft.d.ts.map +1 -1
  61. package/dist/community/events/onCommunityUpdated.d.ts +2 -2
  62. package/dist/community/events/onCommunityUpdated.d.ts.map +1 -1
  63. package/dist/community/events/onCommunityUserAdded.d.ts +17 -0
  64. package/dist/community/events/onCommunityUserAdded.d.ts.map +1 -0
  65. package/dist/community/events/onCommunityUserBanned.d.ts +17 -0
  66. package/dist/community/events/onCommunityUserBanned.d.ts.map +1 -0
  67. package/dist/community/events/onCommunityUserRemoved.d.ts +17 -0
  68. package/dist/community/events/onCommunityUserRemoved.d.ts.map +1 -0
  69. package/dist/community/events/onCommunityUserUnbanned.d.ts +17 -0
  70. package/dist/community/events/onCommunityUserUnbanned.d.ts.map +1 -0
  71. package/dist/community/events/utils.d.ts +3 -0
  72. package/dist/community/events/utils.d.ts.map +1 -0
  73. package/dist/community/observers/observeCommunity.d.ts +1 -1
  74. package/dist/community/observers/observeCommunity.d.ts.map +1 -1
  75. package/dist/core/cache/ingest.d.ts.map +1 -1
  76. package/dist/core/events.d.ts +4 -2
  77. package/dist/core/events.d.ts.map +1 -1
  78. package/dist/core/model/index.d.ts +1 -0
  79. package/dist/core/model/index.d.ts.map +1 -1
  80. package/dist/core/model/isMatch.d.ts +3 -0
  81. package/dist/core/model/isMatch.d.ts.map +1 -0
  82. package/dist/core/network.d.ts +11 -0
  83. package/dist/core/network.d.ts.map +1 -0
  84. package/dist/core/query/paging.d.ts.map +1 -1
  85. package/dist/core/subscription.d.ts +14 -0
  86. package/dist/core/subscription.d.ts.map +1 -0
  87. package/dist/core/transports/http.d.ts +11 -0
  88. package/dist/core/transports/http.d.ts.map +1 -0
  89. package/dist/core/transports/index.d.ts +4 -0
  90. package/dist/core/transports/index.d.ts.map +1 -0
  91. package/dist/core/transports/mqtt.d.ts +17 -0
  92. package/dist/core/transports/mqtt.d.ts.map +1 -0
  93. package/dist/core/transports/utils.d.ts +13 -0
  94. package/dist/core/transports/utils.d.ts.map +1 -0
  95. package/dist/core/transports/ws.d.ts +27 -0
  96. package/dist/core/transports/ws.d.ts.map +1 -0
  97. package/dist/feed/api/queryGlobalFeed.d.ts +1 -1
  98. package/dist/file/api/deleteFile.d.ts +3 -1
  99. package/dist/file/api/deleteFile.d.ts.map +1 -1
  100. package/dist/index.cjs.js +1292 -526
  101. package/dist/index.d.ts +2 -0
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.esm.js +1268 -527
  104. package/dist/index.umd.js +19 -5144
  105. package/dist/post/api/deletePost.d.ts +40 -1
  106. package/dist/post/api/deletePost.d.ts.map +1 -1
  107. package/dist/post/api/getPost.d.ts.map +1 -1
  108. package/dist/post/events/index.d.ts +6 -0
  109. package/dist/post/events/index.d.ts.map +1 -1
  110. package/dist/post/events/onPostApproved.d.ts +17 -0
  111. package/dist/post/events/onPostApproved.d.ts.map +1 -0
  112. package/dist/post/events/onPostCreated.d.ts +1 -1
  113. package/dist/post/events/onPostCreated.d.ts.map +1 -1
  114. package/dist/post/events/onPostDeclined.d.ts +17 -0
  115. package/dist/post/events/onPostDeclined.d.ts.map +1 -0
  116. package/dist/post/events/onPostDeleted.d.ts +1 -1
  117. package/dist/post/events/onPostDeleted.d.ts.map +1 -1
  118. package/dist/post/events/onPostFlagged.d.ts +17 -0
  119. package/dist/post/events/onPostFlagged.d.ts.map +1 -0
  120. package/dist/post/events/onPostReactionAdded.d.ts +17 -0
  121. package/dist/post/events/onPostReactionAdded.d.ts.map +1 -0
  122. package/dist/post/events/onPostReactionRemoved.d.ts +17 -0
  123. package/dist/post/events/onPostReactionRemoved.d.ts.map +1 -0
  124. package/dist/post/events/onPostUnflagged.d.ts +17 -0
  125. package/dist/post/events/onPostUnflagged.d.ts.map +1 -0
  126. package/dist/post/events/onPostUpdated.d.ts +1 -1
  127. package/dist/post/events/onPostUpdated.d.ts.map +1 -1
  128. package/dist/post/events/utils.d.ts +2 -0
  129. package/dist/post/events/utils.d.ts.map +1 -0
  130. package/dist/post/observers/observePost.d.ts +1 -1
  131. package/dist/post/observers/observePost.d.ts.map +1 -1
  132. package/dist/post/observers/observePosts.d.ts +1 -1
  133. package/dist/post/observers/observePosts.d.ts.map +1 -1
  134. package/dist/reaction/events/onReactionAdded.d.ts +4 -2
  135. package/dist/reaction/events/onReactionAdded.d.ts.map +1 -1
  136. package/dist/reaction/events/onReactionRemoved.d.ts +4 -2
  137. package/dist/reaction/events/onReactionRemoved.d.ts.map +1 -1
  138. package/dist/reaction/utils/index.d.ts +1 -0
  139. package/dist/reaction/utils/index.d.ts.map +1 -1
  140. package/dist/reaction/utils/preparePayloadForCache.d.ts +3 -0
  141. package/dist/reaction/utils/preparePayloadForCache.d.ts.map +1 -0
  142. package/dist/report/api/createReport.d.ts.map +1 -1
  143. package/dist/report/api/deleteReport.d.ts.map +1 -1
  144. package/dist/user/events/index.d.ts +3 -0
  145. package/dist/user/events/index.d.ts.map +1 -1
  146. package/dist/user/events/onUserFlagCleared.d.ts +17 -0
  147. package/dist/user/events/onUserFlagCleared.d.ts.map +1 -0
  148. package/dist/user/events/onUserFlagged.d.ts +17 -0
  149. package/dist/user/events/onUserFlagged.d.ts.map +1 -0
  150. package/dist/user/events/onUserUnflagged.d.ts +17 -0
  151. package/dist/user/events/onUserUnflagged.d.ts.map +1 -0
  152. package/dist/user/events/onUserUpdated.d.ts +1 -1
  153. package/dist/user/events/onUserUpdated.d.ts.map +1 -1
  154. package/dist/user/events/utils.d.ts +2 -0
  155. package/dist/user/events/utils.d.ts.map +1 -0
  156. package/dist/user/observers/observeUser.d.ts +1 -1
  157. package/dist/user/observers/observeUser.d.ts.map +1 -1
  158. package/dist/version.d.ts +2 -0
  159. package/dist/version.d.ts.map +1 -0
  160. package/package.json +7 -2
  161. package/rollup.config.js +63 -23
  162. package/src/@types/core/events.ts +64 -23
  163. package/src/@types/core/transport.ts +14 -0
  164. package/src/@types/domains/client.ts +5 -0
  165. package/src/@types/domains/comment.ts +1 -0
  166. package/src/@types/domains/community.ts +1 -0
  167. package/src/@types/domains/group.ts +2 -2
  168. package/src/@types/domains/partials.ts +4 -0
  169. package/src/@types/domains/post.ts +1 -0
  170. package/src/@types/domains/user.ts +2 -0
  171. package/src/client/api/connectClient.ts +12 -2
  172. package/src/client/api/createClient.ts +23 -15
  173. package/src/client/api/disconnectClient.ts +5 -0
  174. package/src/client/api/getToken.ts +3 -2
  175. package/src/client/events/onConnectionError.ts +1 -1
  176. package/src/comment/api/createComment.ts +2 -2
  177. package/src/comment/api/deleteComment.ts +25 -5
  178. package/src/comment/api/getComment.ts +17 -5
  179. package/src/comment/api/queryComments.ts +9 -8
  180. package/src/comment/api/updateComment.ts +1 -1
  181. package/src/comment/events/index.ts +6 -0
  182. package/src/comment/events/onCommentCreated.ts +4 -22
  183. package/src/comment/events/onCommentDeleted.ts +4 -22
  184. package/src/comment/events/onCommentFlagged.ts +21 -0
  185. package/src/comment/events/onCommentReactionAdded.ts +52 -0
  186. package/src/comment/events/onCommentReactionRemoved.ts +52 -0
  187. package/src/comment/events/onCommentUnflagged.ts +21 -0
  188. package/src/comment/events/onCommentUpdated.ts +4 -22
  189. package/src/comment/events/utils.ts +34 -0
  190. package/src/comment/observers/observeComment.ts +21 -7
  191. package/src/comment/observers/observeComments.ts +11 -3
  192. package/src/community/api/addCommunityMembers.ts +1 -1
  193. package/src/community/api/createCommunity.ts +1 -1
  194. package/src/community/api/deleteCommunity.ts +1 -1
  195. package/src/community/api/joinCommunity.ts +1 -1
  196. package/src/community/api/leaveCommunity.ts +1 -1
  197. package/src/community/api/removeCommunityMembers.ts +1 -1
  198. package/src/community/api/updateCommunity.ts +1 -1
  199. package/src/community/events/index.ts +5 -0
  200. package/src/community/events/onCommunityCreated.ts +5 -23
  201. package/src/community/events/onCommunityDeleted.ts +5 -23
  202. package/src/community/events/onCommunityJoined.ts +5 -23
  203. package/src/community/events/onCommunityLeft.ts +5 -23
  204. package/src/community/events/onCommunityUpdated.ts +5 -23
  205. package/src/community/events/onCommunityUserAdded.ts +19 -0
  206. package/src/community/events/onCommunityUserBanned.ts +19 -0
  207. package/src/community/events/onCommunityUserRemoved.ts +19 -0
  208. package/src/community/events/onCommunityUserUnbanned.ts +19 -0
  209. package/src/community/events/utils.ts +108 -0
  210. package/src/community/observers/observeCommunity.ts +23 -9
  211. package/src/core/cache/ingest.ts +19 -3
  212. package/src/core/events.ts +45 -4
  213. package/src/core/model/index.ts +1 -0
  214. package/src/core/model/isMatch.ts +12 -0
  215. package/src/core/network.ts +14 -0
  216. package/src/core/query/paging.ts +4 -0
  217. package/src/core/subscription.ts +75 -0
  218. package/src/core/transports/http.ts +63 -0
  219. package/src/core/transports/index.ts +3 -0
  220. package/src/core/transports/mqtt.ts +141 -0
  221. package/src/core/transports/utils.ts +25 -0
  222. package/src/core/transports/ws.ts +61 -0
  223. package/src/feed/api/queryGlobalFeed.ts +1 -1
  224. package/src/file/api/deleteFile.ts +5 -6
  225. package/src/index.ts +3 -0
  226. package/src/post/api/createPost.ts +2 -2
  227. package/src/post/api/deletePost.ts +29 -8
  228. package/src/post/api/getPost.ts +17 -5
  229. package/src/post/api/updatePost.ts +1 -1
  230. package/src/post/events/index.ts +9 -0
  231. package/src/post/events/onPostApproved.ts +19 -0
  232. package/src/post/events/onPostCreated.ts +4 -24
  233. package/src/post/events/onPostDeclined.ts +19 -0
  234. package/src/post/events/onPostDeleted.ts +4 -24
  235. package/src/post/events/onPostFlagged.ts +19 -0
  236. package/src/post/events/onPostReactionAdded.ts +50 -0
  237. package/src/post/events/onPostReactionRemoved.ts +50 -0
  238. package/src/post/events/onPostUnflagged.ts +19 -0
  239. package/src/post/events/onPostUpdated.ts +4 -24
  240. package/src/post/events/utils.ts +40 -0
  241. package/src/post/observers/observePost.ts +25 -7
  242. package/src/post/observers/observePosts.ts +12 -2
  243. package/src/reaction/events/onReactionAdded.ts +36 -15
  244. package/src/reaction/events/onReactionRemoved.ts +37 -14
  245. package/src/reaction/utils/dispatchReactable.ts +2 -2
  246. package/src/reaction/utils/index.ts +1 -0
  247. package/src/reaction/utils/preparePayloadForCache.ts +45 -0
  248. package/src/report/api/createReport.ts +5 -1
  249. package/src/report/api/deleteReport.ts +5 -1
  250. package/src/user/events/index.ts +4 -0
  251. package/src/user/events/onUserFlagCleared.ts +19 -0
  252. package/src/user/events/onUserFlagged.ts +19 -0
  253. package/src/user/events/onUserUnflagged.ts +19 -0
  254. package/src/user/events/onUserUpdated.ts +4 -24
  255. package/src/user/events/utils.ts +24 -0
  256. package/src/user/observers/observeUser.ts +11 -3
  257. package/src/version.ts +2 -0
  258. package/tsconfig.json +1 -0
  259. package/dist/core/transports.d.ts +0 -49
  260. package/dist/core/transports.d.ts.map +0 -1
  261. package/src/core/transports.ts +0 -151
@@ -1,8 +1,4 @@
1
- import { getActiveClient } from '~/client/api'
2
- import { createEventSubscriber } from '~/core/events'
3
-
4
- import { decoratePayload } from '~/core/query'
5
- import { ingestInCache } from '~/core/cache'
1
+ import { createCommentEventSubscriber } from './utils'
6
2
 
7
3
  /**
8
4
  * ```js
@@ -12,7 +8,7 @@ import { ingestInCache } from '~/core/cache'
12
8
  * })
13
9
  * ```
14
10
  *
15
- * Fired when an {@link Amity.Comment} has been created
11
+ * Fired when {@link Amity.Comment} has been created
16
12
  *
17
13
  * @param callback The function to call when the event was fired
18
14
  * @returns an {@link Amity.Unsubscriber} function to stop listening
@@ -21,19 +17,5 @@ import { ingestInCache } from '~/core/cache'
21
17
  */
22
18
  export const onCommentCreated = <T extends Amity.CommentContentType>(
23
19
  callback: Amity.Listener<Amity.Comment<T>>
24
- ): Amity.Unsubscriber => {
25
- const client = getActiveClient()
26
-
27
- const filter = (payload: Amity.CommentPayload<T>) => {
28
- decoratePayload(payload)
29
- ingestInCache(payload)
30
- callback(payload.comments[0])
31
- }
32
-
33
- return createEventSubscriber(
34
- client,
35
- 'message/onCommentCreated',
36
- 'v3.comment.didCreate',
37
- filter
38
- )
39
- }
20
+ ): Amity.Unsubscriber =>
21
+ createCommentEventSubscriber('comment.created', callback)
@@ -1,8 +1,4 @@
1
- import { getActiveClient } from '~/client/api'
2
- import { createEventSubscriber } from '~/core/events'
3
-
4
- import { decoratePayload } from '~/core/query'
5
- import { ingestInCache } from '~/core/cache'
1
+ import { createCommentEventSubscriber } from './utils'
6
2
 
7
3
  /**
8
4
  * ```js
@@ -12,7 +8,7 @@ import { ingestInCache } from '~/core/cache'
12
8
  * })
13
9
  * ```
14
10
  *
15
- * Fired when an {@link Amity.Comment} has been deleted
11
+ * Fired when a {@link Amity.Comment} has been deleted
16
12
  *
17
13
  * @param callback The function to call when the event was fired
18
14
  * @returns an {@link Amity.Unsubscriber} function to stop listening
@@ -21,19 +17,5 @@ import { ingestInCache } from '~/core/cache'
21
17
  */
22
18
  export const onCommentDeleted = <T extends Amity.CommentContentType>(
23
19
  callback: Amity.Listener<Amity.Comment<T>>
24
- ): Amity.Unsubscriber => {
25
- const client = getActiveClient()
26
-
27
- const filter = (payload: Amity.CommentPayload<T>) => {
28
- decoratePayload(payload)
29
- ingestInCache(payload)
30
- callback(payload.comments[0])
31
- }
32
-
33
- return createEventSubscriber(
34
- client,
35
- 'message/onCommentDeleted',
36
- 'v3.comment.didDelete',
37
- filter
38
- )
39
- }
20
+ ): Amity.Unsubscriber =>
21
+ createCommentEventSubscriber('comment.deleted', callback)
@@ -0,0 +1,21 @@
1
+ import { createCommentEventSubscriber } from './utils'
2
+
3
+ /**
4
+ * ```js
5
+ * import { onCommentFlagged } from '@amityco/ts-sdk'
6
+ * const dispose = onCommentFlagged(comment => {
7
+ * // ...
8
+ * })
9
+ * ```
10
+ *
11
+ * Fired when a {@link Amity.Comment} has been flagged
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 Comment Events
17
+ */
18
+ export const onCommentFlagged = <T extends Amity.CommentContentType>(
19
+ callback: Amity.Listener<Amity.Comment<T>>
20
+ ): Amity.Unsubscriber =>
21
+ createCommentEventSubscriber('comment.flagged', callback)
@@ -0,0 +1,52 @@
1
+ import { getActiveClient } from '~/client/api'
2
+ import { decoratePayload } from '~/core/query'
3
+ import { ingestInCache, pullFromCache } from '~/core/cache'
4
+ import { createEventSubscriber } from '~/core/events'
5
+ import { preparePayloadForCache } from '~/reaction/utils'
6
+ import { isMatch } from '~/core/model'
7
+
8
+ /**
9
+ * ```js
10
+ * import { onCommentReactionAdded } from '@amityco/ts-sdk'
11
+ * const dispose = onCommentReactionAdded(comment => {
12
+ * // ...
13
+ * })
14
+ * ```
15
+ *
16
+ * Fired when a {@link Amity.Comment} has been reacted
17
+ *
18
+ * @param callback The function to call when the event was fired
19
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
20
+ *
21
+ * @category Comment Events
22
+ */
23
+ export const onCommentReactionAdded = <T extends Amity.CommentContentType>(
24
+ callback: Amity.Listener<Amity.Comment<T>>
25
+ ): Amity.Unsubscriber => {
26
+ const client = getActiveClient()
27
+
28
+ const filter = (payload: Amity.CommentPayload<T> & { reactor: Amity.Reaction }) => {
29
+ const [cached] = pullFromCache('comment', payload.comments[0].commentId) ?? []
30
+
31
+ const { reactor, ...commentPayload } = payload;
32
+
33
+ decoratePayload(commentPayload as Amity.CommentPayload<T>)
34
+ preparePayloadForCache('comment.addReaction', payload)
35
+ ingestInCache(commentPayload as Amity.CommentPayload<T>)
36
+
37
+ const [comment] = pullFromCache('comment', payload.comments[0].commentId) ?? []
38
+
39
+ if (cached && isMatch(cached, comment)) {
40
+ return
41
+ }
42
+
43
+ callback(comment)
44
+ }
45
+
46
+ return createEventSubscriber(
47
+ client,
48
+ 'comment.addReaction',
49
+ 'comment.addReaction',
50
+ filter
51
+ )
52
+ }
@@ -0,0 +1,52 @@
1
+ import { getActiveClient } from '~/client/api'
2
+ import { decoratePayload } from '~/core/query'
3
+ import { ingestInCache, pullFromCache } from '~/core/cache'
4
+ import { createEventSubscriber } from '~/core/events'
5
+ import { preparePayloadForCache } from '~/reaction/utils'
6
+ import { isMatch } from '~/core/model'
7
+
8
+ /**
9
+ * ```js
10
+ * import { onCommentReactionRemoved } from '@amityco/ts-sdk'
11
+ * const dispose = onCommentReactionRemoved(comment => {
12
+ * // ...
13
+ * })
14
+ * ```
15
+ *
16
+ * Fired when a reaction has been removed from a {@link Amity.Comment}
17
+ *
18
+ * @param callback The function to call when the event was fired
19
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
20
+ *
21
+ * @category Comment Events
22
+ */
23
+ export const onCommentReactionRemoved = <T extends Amity.CommentContentType>(
24
+ callback: Amity.Listener<Amity.Comment<T>>
25
+ ): Amity.Unsubscriber => {
26
+ const client = getActiveClient()
27
+
28
+ const filter = (payload: Amity.CommentPayload<T> & { reactor: Amity.Reaction }) => {
29
+ const [cached] = pullFromCache('comment', payload.comments[0].commentId) ?? []
30
+
31
+ const { reactor, ...commentPayload } = payload;
32
+
33
+ decoratePayload(commentPayload as Amity.CommentPayload<T>)
34
+ preparePayloadForCache('comment.removeReaction', payload)
35
+ ingestInCache(commentPayload as Amity.CommentPayload<T>)
36
+
37
+ const [comment] = pullFromCache('comment', payload.comments[0].commentId) ?? []
38
+
39
+ if (cached && isMatch(cached, comment)) {
40
+ return
41
+ }
42
+
43
+ callback(comment)
44
+ }
45
+
46
+ return createEventSubscriber(
47
+ client,
48
+ 'comment.removeReaction',
49
+ 'comment.removeReaction',
50
+ filter
51
+ )
52
+ }
@@ -0,0 +1,21 @@
1
+ import { createCommentEventSubscriber } from './utils'
2
+
3
+ /**
4
+ * ```js
5
+ * import { onCommentUnflagged } from '@amityco/ts-sdk'
6
+ * const dispose = onCommentUnflagged(comment => {
7
+ * // ...
8
+ * })
9
+ * ```
10
+ *
11
+ * Fired when a flag has been removed from a {@link Amity.Comment}
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 Comment Events
17
+ */
18
+ export const onCommentUnflagged = <T extends Amity.CommentContentType>(
19
+ callback: Amity.Listener<Amity.Comment<T>>
20
+ ): Amity.Unsubscriber =>
21
+ createCommentEventSubscriber('comment.unflagged', callback)
@@ -1,8 +1,4 @@
1
- import { getActiveClient } from '~/client/api'
2
- import { createEventSubscriber } from '~/core/events'
3
-
4
- import { decoratePayload } from '~/core/query'
5
- import { ingestInCache } from '~/core/cache'
1
+ import { createCommentEventSubscriber } from './utils'
6
2
 
7
3
  /**
8
4
  * ```js
@@ -12,7 +8,7 @@ import { ingestInCache } from '~/core/cache'
12
8
  * })
13
9
  * ```
14
10
  *
15
- * Fired when an {@link Amity.Comment} has been updated
11
+ * Fired when a {@link Amity.Comment} has been updated
16
12
  *
17
13
  * @param callback The function to call when the event was fired
18
14
  * @returns an {@link Amity.Unsubscriber} function to stop listening
@@ -21,19 +17,5 @@ import { ingestInCache } from '~/core/cache'
21
17
  */
22
18
  export const onCommentUpdated = <T extends Amity.CommentContentType>(
23
19
  callback: Amity.Listener<Amity.Comment<T>>
24
- ): Amity.Unsubscriber => {
25
- const client = getActiveClient()
26
-
27
- const filter = (payload: Amity.CommentPayload<T>) => {
28
- decoratePayload(payload)
29
- ingestInCache(payload)
30
- callback(payload.comments[0])
31
- }
32
-
33
- return createEventSubscriber(
34
- client,
35
- 'message/onCommentUpdated',
36
- 'v3.comment.didUpdate',
37
- filter
38
- )
39
- }
20
+ ): Amity.Unsubscriber =>
21
+ createCommentEventSubscriber('comment.updated', callback)
@@ -0,0 +1,34 @@
1
+ import { getActiveClient } from '~/client/api'
2
+ import { decoratePayload } from '~/core/query'
3
+ import { ingestInCache, pullFromCache } from '~/core/cache'
4
+ import { createEventSubscriber } from '~/core/events'
5
+ import { isMatch } from '~/core/model'
6
+
7
+ export const createCommentEventSubscriber = <T extends Amity.CommentContentType>(
8
+ event: keyof Amity.MqttCommentMessageEvents,
9
+ callback: Amity.Listener<Amity.Comment<T>>
10
+ ) => {
11
+ const client = getActiveClient()
12
+
13
+ const filter = (payload: Amity.CommentPayload<T>) => {
14
+ const [cached] = pullFromCache('comment', payload.comments[0].commentId) ?? []
15
+
16
+ decoratePayload(payload)
17
+ ingestInCache(payload)
18
+
19
+ const [comment] = pullFromCache('comment', payload.comments[0].commentId) ?? []
20
+
21
+ if (cached && isMatch(cached, comment)) {
22
+ return
23
+ }
24
+
25
+ callback(comment)
26
+ }
27
+
28
+ return createEventSubscriber(
29
+ client,
30
+ event,
31
+ event,
32
+ filter
33
+ )
34
+ }
@@ -7,6 +7,10 @@ import { getComment } from '../api'
7
7
  import {
8
8
  onCommentUpdated,
9
9
  onCommentDeleted,
10
+ onCommentFlagged,
11
+ onCommentUnflagged,
12
+ onCommentReactionAdded,
13
+ onCommentReactionRemoved,
10
14
  } from '../events'
11
15
 
12
16
 
@@ -26,7 +30,7 @@ import {
26
30
  *
27
31
  * @category Comment Observer
28
32
  */
29
- export const observeComment = <Events extends ['onFetch', 'onUpdate', 'onDelete']>(
33
+ export const observeComment = <Events extends ['onFetch', 'onUpdate', 'onDelete', 'onFlagged', 'onUnflagged', 'onReactionAdded', 'onReactionRemoved']>(
30
34
  commentId: string,
31
35
  callback: Amity.ObjectListener<Amity.QueryResult<Amity.Comment>, Events>,
32
36
  policy: Amity.QueryPolicy = 'cache_then_server',
@@ -41,9 +45,6 @@ export const observeComment = <Events extends ['onFetch', 'onUpdate', 'onDelete'
41
45
  result: Amity.QueryResult<Amity.Comment>,
42
46
  action: Events[number]
43
47
  ) => {
44
- // filter function
45
- if (result.data?.commentId !== commentId) return
46
-
47
48
  if (callback instanceof Function)
48
49
  return callback(result)
49
50
 
@@ -53,16 +54,29 @@ export const observeComment = <Events extends ['onFetch', 'onUpdate', 'onDelete'
53
54
  callback[action]?.(result)
54
55
  }
55
56
 
57
+ const realtimeRouter = (
58
+ result: Amity.QueryResult<Amity.Comment>,
59
+ action: Events[number]
60
+ ) => {
61
+ if (result.data?.commentId !== commentId) return
62
+
63
+ router(result, action)
64
+ }
65
+
56
66
  const disposers: Amity.Unsubscriber[] = []
57
67
 
58
68
  disposers.push(
59
- onCommentUpdated(data => router({ data }, 'onUpdate')),
60
- onCommentDeleted(data => router({ data }, 'onDelete')),
69
+ onCommentUpdated(data => realtimeRouter({ data }, 'onUpdate')),
70
+ onCommentDeleted(data => realtimeRouter({ data }, 'onDelete')),
71
+ onCommentFlagged(data => realtimeRouter({ data }, 'onFlagged')),
72
+ onCommentUnflagged(data => realtimeRouter({ data }, 'onUnflagged')),
73
+ onCommentReactionAdded(data => realtimeRouter({ data }, 'onReactionAdded')),
74
+ onCommentReactionRemoved(data => realtimeRouter({ data }, 'onReactionRemoved')),
61
75
  )
62
76
 
63
77
  runQuery(
64
78
  createQuery(getComment, commentId),
65
- result => result.data && router(result, 'onFetch'),
79
+ result => router(result, 'onFetch'),
66
80
  queryOptions(policy)
67
81
  )
68
82
 
@@ -4,6 +4,10 @@ import {
4
4
  onCommentCreated,
5
5
  onCommentUpdated,
6
6
  onCommentDeleted,
7
+ onCommentFlagged,
8
+ onCommentUnflagged,
9
+ onCommentReactionAdded,
10
+ onCommentReactionRemoved,
7
11
  } from '../events'
8
12
 
9
13
  /**
@@ -26,7 +30,7 @@ export const observeComments = (
26
30
  postId: Amity.Post['postId'],
27
31
  callback: Amity.ObjectListener<
28
32
  Amity.Comment,
29
- ['onCreate', 'onUpdate', 'onDelete']
33
+ ['onCreate', 'onUpdate', 'onDelete', 'onFlagged', 'onUnflagged', 'onReactionAdded', 'onReactionRemoved']
30
34
  >
31
35
  ): Amity.Unsubscriber => {
32
36
  const { log } = getActiveClient()
@@ -38,7 +42,7 @@ export const observeComments = (
38
42
 
39
43
  const router = (
40
44
  comment: Amity.Comment,
41
- action: 'onCreate' | 'onUpdate' | 'onDelete'
45
+ action: 'onCreate' | 'onUpdate' | 'onDelete' | 'onFlagged' | 'onUnflagged' | 'onReactionAdded' | 'onReactionRemoved'
42
46
  ) => {
43
47
  if (comment.referenceId !== postId) return
44
48
 
@@ -51,7 +55,11 @@ export const observeComments = (
51
55
  disposers.push(
52
56
  onCommentCreated(comment => router(comment, 'onCreate')),
53
57
  onCommentUpdated(comment => router(comment, 'onUpdate')),
54
- onCommentDeleted(comment => router(comment, 'onDelete'))
58
+ onCommentDeleted(comment => router(comment, 'onDelete')),
59
+ onCommentFlagged(comment => router(comment, 'onFlagged')),
60
+ onCommentUnflagged(comment => router(comment, 'onUnflagged')),
61
+ onCommentReactionAdded(comment => router(comment, 'onReactionAdded')),
62
+ onCommentReactionRemoved(comment => router(comment, 'onReactionRemoved')),
55
63
  )
56
64
 
57
65
  return () => {
@@ -33,7 +33,7 @@ export const addCommunityMembers = async (
33
33
 
34
34
  decoratePayload(data)
35
35
  ingestInCache(data)
36
- fireEvent('v3.community.didAddUsers', {
36
+ fireEvent('community.userAdded', {
37
37
  communities: data.communities!,
38
38
  })
39
39
 
@@ -36,7 +36,7 @@ export const createCommunity = async (
36
36
 
37
37
  decoratePayload(data)
38
38
  ingestInCache(data)
39
- fireEvent('v3.community.didCreate', data)
39
+ fireEvent('community.created', data)
40
40
 
41
41
  const { communities } = data
42
42
  return communities[0]
@@ -29,7 +29,7 @@ export const deleteCommunity = async (
29
29
  )
30
30
 
31
31
  const deleted = await getCommunity(communityId)
32
- fireEvent('v3.community.didDelete', { communities: [deleted] })
32
+ fireEvent('community.deleted', { communities: [deleted] })
33
33
 
34
34
  return deleted
35
35
  }
@@ -28,7 +28,7 @@ export const joinCommunity = async (communityId: Amity.Community['communityId'])
28
28
 
29
29
  decoratePayload(data)
30
30
  ingestInCache(data)
31
- fireEvent('v3.community.didJoin', {
31
+ fireEvent('community.joined', {
32
32
  communities: data.communities!
33
33
  })
34
34
 
@@ -28,7 +28,7 @@ export const leaveCommunity = async (communityId: Amity.Community['communityId']
28
28
 
29
29
  decoratePayload(data)
30
30
  ingestInCache(data)
31
- fireEvent('v3.community.didJoin', {
31
+ fireEvent('community.left', {
32
32
  communities: data.communities!,
33
33
  })
34
34
 
@@ -33,7 +33,7 @@ export const removeCommunityMembers = async (
33
33
 
34
34
  decoratePayload(data)
35
35
  ingestInCache(data)
36
- fireEvent('v3.community.didRemoveUsers', {
36
+ fireEvent('community.userRemoved', {
37
37
  communities: data.communities!,
38
38
  })
39
39
 
@@ -33,7 +33,7 @@ export const updateCommunity = async (
33
33
 
34
34
  decoratePayload(data)
35
35
  ingestInCache(data)
36
- fireEvent('v3.community.didUpdate', data)
36
+ fireEvent('community.updated', data)
37
37
 
38
38
  const { communities } = data
39
39
  return communities.find(community => community.communityId === communityId)!
@@ -4,3 +4,8 @@ export * from './onCommunityDeleted'
4
4
 
5
5
  export * from './onCommunityJoined'
6
6
  export * from './onCommunityLeft'
7
+
8
+ export * from './onCommunityUserAdded'
9
+ export * from './onCommunityUserRemoved'
10
+ export * from './onCommunityUserBanned'
11
+ export * from './onCommunityUserUnbanned'
@@ -1,37 +1,19 @@
1
- import { getActiveClient } from '~/client/api'
2
- import { createEventSubscriber } from '~/core/events'
3
-
4
- import { decoratePayload } from '~/core/query'
5
- import { ingestInCache } from '~/core/cache'
1
+ import { createCommunityEventSubscriber } from './utils'
6
2
 
7
3
  /**
8
4
  * ```js
9
5
  * import { onCommunityCreated } from '@amityco/ts-sdk'
10
- * const dispose = onCommunityCreated(channel => {
6
+ * const dispose = onCommunityCreated(community => {
11
7
  * // ...
12
8
  * })
13
9
  * ```
14
10
  *
15
- * Fired when any {@link Amity.Community} have been created
11
+ * Fired when {@link Amity.Community} have been created
16
12
  *
17
13
  * @param callback The function to call when the event was fired
18
14
  * @returns an {@link Amity.Unsubscriber} function to stop listening
19
15
  *
20
16
  * @category Community Events
21
17
  */
22
- export const onCommunityCreated = (callback: Amity.Listener<Amity.Community>) => {
23
- const client = getActiveClient()
24
-
25
- const filter = (payload: Amity.CommunityPayload) => {
26
- decoratePayload(payload)
27
- ingestInCache(payload)
28
- callback(payload.communities[0])
29
- }
30
-
31
- return createEventSubscriber(
32
- client,
33
- 'onCommunityCreated',
34
- 'v3.community.didCreate',
35
- filter
36
- )
37
- }
18
+ export const onCommunityCreated = (callback: Amity.Listener<Amity.Community>) =>
19
+ createCommunityEventSubscriber('community.created', callback)
@@ -1,37 +1,19 @@
1
- import { getActiveClient } from '~/client/api'
2
- import { createEventSubscriber } from '~/core/events'
3
-
4
- import { decoratePayload } from '~/core/query'
5
- import { ingestInCache } from '~/core/cache'
1
+ import { createCommunityEventSubscriber } from './utils'
6
2
 
7
3
  /**
8
4
  * ```js
9
5
  * import { onCommunityDeleted } from '@amityco/ts-sdk'
10
- * const dispose = onCommunityDeleted(channel => {
6
+ * const dispose = onCommunityDeleted(community => {
11
7
  * // ...
12
8
  * })
13
9
  * ```
14
10
  *
15
- * Fired when any {@link Amity.Community} have been deleted
11
+ * Fired when a {@link Amity.Community} has been deleted
16
12
  *
17
13
  * @param callback The function to call when the event was fired
18
14
  * @returns an {@link Amity.Unsubscriber} function to stop listening
19
15
  *
20
16
  * @category Community Events
21
17
  */
22
- export const onCommunityDeleted = (callback: Amity.Listener<Amity.Community>) => {
23
- const client = getActiveClient()
24
-
25
- const filter = (payload: Amity.CommunityPayload) => {
26
- decoratePayload(payload)
27
- ingestInCache(payload)
28
- callback(payload.communities[0])
29
- }
30
-
31
- return createEventSubscriber(
32
- client,
33
- 'onCommunityDeleted',
34
- 'v3.community.didDelete',
35
- filter
36
- )
37
- }
18
+ export const onCommunityDeleted = (callback: Amity.Listener<Amity.Community>) =>
19
+ createCommunityEventSubscriber('community.deleted', callback)
@@ -1,37 +1,19 @@
1
- import { getActiveClient } from '~/client/api'
2
- import { createEventSubscriber } from '~/core/events'
3
-
4
- import { decoratePayload } from '~/core/query'
5
- import { ingestInCache } from '~/core/cache'
1
+ import { createCommunityMemberEventSubscriber } from './utils'
6
2
 
7
3
  /**
8
4
  * ```js
9
5
  * import { onCommunityJoined } from '@amityco/ts-sdk'
10
- * const dispose = onCommunityJoined(channel => {
6
+ * const dispose = onCommunityJoined((community, member) => {
11
7
  * // ...
12
8
  * })
13
9
  * ```
14
10
  *
15
- * Fired when any {@link Amity.Community} was joined
11
+ * Fired when a {@link Amity.Community} has been joined
16
12
  *
17
13
  * @param callback The function to call when the event was fired
18
14
  * @returns an {@link Amity.Unsubscriber} function to stop listening
19
15
  *
20
16
  * @category Community Events
21
17
  */
22
- export const onCommunityJoined = (callback: Amity.Listener<Amity.Community>) => {
23
- const client = getActiveClient()
24
-
25
- const filter = (payload: Amity.CommunityPayload) => {
26
- decoratePayload(payload)
27
- ingestInCache(payload)
28
- callback(payload.communities[0])
29
- }
30
-
31
- return createEventSubscriber(
32
- client,
33
- 'onCommunityJoined',
34
- 'v3.community.didJoin',
35
- filter
36
- )
37
- }
18
+ export const onCommunityJoined = (callback: (community: Amity.Community, member: Amity.Membership<'community'>) => void) =>
19
+ createCommunityMemberEventSubscriber('community.joined', callback)
@@ -1,37 +1,19 @@
1
- import { getActiveClient } from '~/client/api'
2
- import { createEventSubscriber } from '~/core/events'
3
-
4
- import { decoratePayload } from '~/core/query'
5
- import { ingestInCache } from '~/core/cache'
1
+ import { createCommunityMemberEventSubscriber } from './utils'
6
2
 
7
3
  /**
8
4
  * ```js
9
5
  * import { onCommunityLeft } from '@amityco/ts-sdk'
10
- * const dispose = onCommunityLeft(channel => {
6
+ * const dispose = onCommunityLeft((community, member) => {
11
7
  * // ...
12
8
  * })
13
9
  * ```
14
10
  *
15
- * Fired when any {@link Amity.Community} was left
11
+ * Fired when a {@link Amity.Community} has been left
16
12
  *
17
13
  * @param callback The function to call when the event was fired
18
14
  * @returns an {@link Amity.Unsubscriber} function to stop listening
19
15
  *
20
16
  * @category Community Events
21
17
  */
22
- export const onCommunityLeft = (callback: Amity.Listener<Amity.Community>) => {
23
- const client = getActiveClient()
24
-
25
- const filter = (payload: Amity.CommunityPayload) => {
26
- decoratePayload(payload)
27
- ingestInCache(payload)
28
- callback(payload.communities[0])
29
- }
30
-
31
- return createEventSubscriber(
32
- client,
33
- 'onCommunityLeft',
34
- 'v3.community.didLeave',
35
- filter
36
- )
37
- }
18
+ export const onCommunityLeft = (callback: (community: Amity.Community, member: Amity.Membership<'community'>) => void) =>
19
+ createCommunityMemberEventSubscriber('community.left', callback)