@amityco/ts-sdk 0.0.1-beta.39 → 0.0.1-beta.40

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 (285) hide show
  1. package/.eslintrc.json +2 -0
  2. package/dist/@types/core/events.d.ts +22 -22
  3. package/dist/@types/core/events.d.ts.map +1 -1
  4. package/dist/@types/core/model.d.ts +3 -2
  5. package/dist/@types/core/model.d.ts.map +1 -1
  6. package/dist/@types/core/payload.d.ts +87 -34
  7. package/dist/@types/core/payload.d.ts.map +1 -1
  8. package/dist/@types/domains/channel.d.ts +1 -1
  9. package/dist/@types/domains/client.d.ts +1 -1
  10. package/dist/@types/domains/client.d.ts.map +1 -1
  11. package/dist/@types/domains/comment.d.ts +5 -0
  12. package/dist/@types/domains/comment.d.ts.map +1 -1
  13. package/dist/@types/domains/community.d.ts +11 -0
  14. package/dist/@types/domains/community.d.ts.map +1 -1
  15. package/dist/@types/domains/content.d.ts +7 -1
  16. package/dist/@types/domains/content.d.ts.map +1 -1
  17. package/dist/@types/domains/group.d.ts +2 -2
  18. package/dist/@types/global.d.ts +8 -0
  19. package/dist/@types/global.d.ts.map +1 -1
  20. package/dist/cache/api/ingestInCache.d.ts +2 -1
  21. package/dist/cache/api/ingestInCache.d.ts.map +1 -1
  22. package/dist/channel/api/banChannelMembers.d.ts.map +1 -1
  23. package/dist/channel/api/queryChannelMembers.d.ts.map +1 -1
  24. package/dist/channel/api/unbanChannelMembers.d.ts.map +1 -1
  25. package/dist/channel/events/onChannelJoined.d.ts.map +1 -1
  26. package/dist/channel/events/onChannelLeft.d.ts.map +1 -1
  27. package/dist/channel/events/onChannelMemberAdded.d.ts.map +1 -1
  28. package/dist/channel/events/onChannelMemberBanned.d.ts.map +1 -1
  29. package/dist/channel/events/onChannelMemberRemoved.d.ts.map +1 -1
  30. package/dist/channel/events/onChannelMemberUnbanned.d.ts.map +1 -1
  31. package/dist/channel/utils/index.d.ts +2 -2
  32. package/dist/channel/utils/index.d.ts.map +1 -1
  33. package/dist/comment/api/createComment.d.ts +1 -1
  34. package/dist/comment/api/createComment.d.ts.map +1 -1
  35. package/dist/comment/api/deleteComment.d.ts.map +1 -1
  36. package/dist/comment/api/tests/updateComment.test.d.ts +2 -0
  37. package/dist/comment/api/tests/updateComment.test.d.ts.map +1 -0
  38. package/dist/community/api/addCommunityMembers.d.ts.map +1 -1
  39. package/dist/community/api/addCommunityMembersRoles.d.ts +1 -1
  40. package/dist/community/api/addCommunityMembersRoles.d.ts.map +1 -1
  41. package/dist/community/api/deleteCommunity.d.ts.map +1 -1
  42. package/dist/community/api/joinCommunity.d.ts.map +1 -1
  43. package/dist/community/api/leaveCommunity.d.ts.map +1 -1
  44. package/dist/community/api/queryCommunityMembers.d.ts +1 -7
  45. package/dist/community/api/queryCommunityMembers.d.ts.map +1 -1
  46. package/dist/community/api/removeCommunityMembers.d.ts.map +1 -1
  47. package/dist/community/api/removeCommunityMembersRoles.d.ts +1 -1
  48. package/dist/community/api/removeCommunityMembersRoles.d.ts.map +1 -1
  49. package/dist/community/events/index.d.ts +2 -0
  50. package/dist/community/events/index.d.ts.map +1 -1
  51. package/dist/community/events/onCommunityUserRoleAdded.d.ts +17 -0
  52. package/dist/community/events/onCommunityUserRoleAdded.d.ts.map +1 -0
  53. package/dist/community/events/onCommunityUserRoleRemoved.d.ts +17 -0
  54. package/dist/community/events/onCommunityUserRoleRemoved.d.ts.map +1 -0
  55. package/dist/community/events/test/onCommunityUserRoleAdded.test.d.ts +2 -0
  56. package/dist/community/events/test/onCommunityUserRoleAdded.test.d.ts.map +1 -0
  57. package/dist/community/events/test/onCommunityUserRoleRemoved.test.d.ts +2 -0
  58. package/dist/community/events/test/onCommunityUserRoleRemoved.test.d.ts.map +1 -0
  59. package/dist/community/events/utils.d.ts.map +1 -1
  60. package/dist/community/observers/index.d.ts +2 -0
  61. package/dist/community/observers/index.d.ts.map +1 -1
  62. package/dist/community/observers/liveCommunity.d.ts +21 -0
  63. package/dist/community/observers/liveCommunity.d.ts.map +1 -0
  64. package/dist/community/observers/liveCommunityMembers.d.ts +20 -0
  65. package/dist/community/observers/liveCommunityMembers.d.ts.map +1 -0
  66. package/dist/community/observers/tests/liveCommunity.test.d.ts +2 -0
  67. package/dist/community/observers/tests/liveCommunity.test.d.ts.map +1 -0
  68. package/dist/community/observers/tests/liveCommunityMembers.test.d.ts +2 -0
  69. package/dist/community/observers/tests/liveCommunityMembers.test.d.ts.map +1 -0
  70. package/dist/community/utils/payload.d.ts +3 -5
  71. package/dist/community/utils/payload.d.ts.map +1 -1
  72. package/dist/core/device.d.ts.map +1 -1
  73. package/dist/core/events.d.ts +3 -3
  74. package/dist/core/events.d.ts.map +1 -1
  75. package/dist/core/model/idResolvers.d.ts +2 -4
  76. package/dist/core/model/idResolvers.d.ts.map +1 -1
  77. package/dist/core/model/identifyModel.d.ts +2 -2
  78. package/dist/core/model/identifyModel.d.ts.map +1 -1
  79. package/dist/core/model/index.d.ts.map +1 -1
  80. package/dist/core/query/query.d.ts.map +1 -1
  81. package/dist/external/api/tests/createUserToken.test.d.ts +2 -0
  82. package/dist/external/api/tests/createUserToken.test.d.ts.map +1 -0
  83. package/dist/feed/api/queryGlobalFeed.d.ts.map +1 -1
  84. package/dist/group/utils/withUser.d.ts.map +1 -1
  85. package/dist/index.cjs.js +481 -200
  86. package/dist/index.esm.js +477 -200
  87. package/dist/index.umd.js +4 -4
  88. package/dist/message/api/createMessage.d.ts.map +1 -1
  89. package/dist/message/utils/index.d.ts +3 -3
  90. package/dist/message/utils/index.d.ts.map +1 -1
  91. package/dist/poll/api/tests/closePoll.test.d.ts +2 -0
  92. package/dist/poll/api/tests/closePoll.test.d.ts.map +1 -0
  93. package/dist/poll/api/tests/createPoll.test.d.ts +2 -0
  94. package/dist/poll/api/tests/createPoll.test.d.ts.map +1 -0
  95. package/dist/poll/api/tests/getPoll.test.d.ts +2 -0
  96. package/dist/poll/api/tests/getPoll.test.d.ts.map +1 -0
  97. package/dist/poll/api/tests/votePoll.test.d.ts +2 -0
  98. package/dist/poll/api/tests/votePoll.test.d.ts.map +1 -0
  99. package/dist/post/api/approvePost.d.ts.map +1 -1
  100. package/dist/post/api/createPost.d.ts.map +1 -1
  101. package/dist/post/api/declinePost.d.ts.map +1 -1
  102. package/dist/post/api/deletePost.d.ts.map +1 -1
  103. package/dist/post/api/getPost.d.ts.map +1 -1
  104. package/dist/post/api/getPosts.d.ts.map +1 -1
  105. package/dist/post/api/queryPosts.d.ts.map +1 -1
  106. package/dist/post/api/updatePost.d.ts.map +1 -1
  107. package/dist/post/events/utils.d.ts.map +1 -1
  108. package/dist/reaction/api/queryReactions.d.ts.map +1 -1
  109. package/dist/reaction/api/removeReaction.d.ts.map +1 -1
  110. package/dist/reaction/events/onReactorAdded.d.ts.map +1 -1
  111. package/dist/reaction/events/onReactorRemoved.d.ts.map +1 -1
  112. package/dist/reaction/utils/dispatchReactable.d.ts +1 -1
  113. package/dist/reaction/utils/dispatchReactable.d.ts.map +1 -1
  114. package/dist/report/api/createReport.d.ts.map +1 -1
  115. package/dist/report/api/deleteReport.d.ts.map +1 -1
  116. package/dist/subChannel/utils/index.d.ts +1 -1
  117. package/dist/subChannel/utils/index.d.ts.map +1 -1
  118. package/dist/utils/index.d.ts +2 -2
  119. package/dist/utils/index.d.ts.map +1 -1
  120. package/dist/utils/tests/dummy/channel.d.ts +31 -35
  121. package/dist/utils/tests/dummy/channel.d.ts.map +1 -1
  122. package/dist/utils/tests/dummy/community.d.ts +35 -84
  123. package/dist/utils/tests/dummy/community.d.ts.map +1 -1
  124. package/dist/utils/tests/dummy/feed.d.ts +2 -18
  125. package/dist/utils/tests/dummy/feed.d.ts.map +1 -1
  126. package/dist/utils/tests/dummy/member.d.ts +1 -1
  127. package/dist/utils/tests/dummy/post.d.ts +30 -29
  128. package/dist/utils/tests/dummy/post.d.ts.map +1 -1
  129. package/dist/version.d.ts.map +1 -1
  130. package/package.json +1 -1
  131. package/src/@types/core/events.ts +22 -20
  132. package/src/@types/core/model.ts +3 -2
  133. package/src/@types/core/payload.ts +102 -38
  134. package/src/@types/domains/channel.ts +1 -1
  135. package/src/@types/domains/client.ts +1 -1
  136. package/src/@types/domains/comment.ts +7 -0
  137. package/src/@types/domains/community.ts +25 -0
  138. package/src/@types/domains/content.ts +9 -1
  139. package/src/@types/domains/group.ts +2 -2
  140. package/src/@types/global.ts +10 -0
  141. package/src/cache/api/ingestInCache.ts +3 -6
  142. package/src/cache/api/tests/ingestInCache.test.ts +12 -9
  143. package/src/channel/api/addChannelMembers.ts +5 -5
  144. package/src/channel/api/banChannelMembers.ts +1 -3
  145. package/src/channel/api/getChannel.ts +1 -1
  146. package/src/channel/api/queryChannelMembers.ts +1 -3
  147. package/src/channel/api/removeChannelMembers.ts +5 -5
  148. package/src/channel/api/tests/addChannelMembers.test.ts +4 -3
  149. package/src/channel/api/tests/createChannel.test.ts +5 -3
  150. package/src/channel/api/tests/getChannel.test.ts +2 -1
  151. package/src/channel/api/tests/joinChannel.test.ts +2 -2
  152. package/src/channel/api/tests/leaveChannel.test.ts +2 -2
  153. package/src/channel/api/tests/queryChannelMembers.test.ts +2 -5
  154. package/src/channel/api/tests/queryChannels.test.ts +4 -3
  155. package/src/channel/api/tests/removeChannelMembers.test.ts +16 -5
  156. package/src/channel/api/unbanChannelMembers.ts +1 -3
  157. package/src/channel/events/onChannelJoined.ts +1 -3
  158. package/src/channel/events/onChannelLeft.ts +1 -3
  159. package/src/channel/events/onChannelMemberAdded.ts +1 -3
  160. package/src/channel/events/onChannelMemberBanned.ts +1 -3
  161. package/src/channel/events/onChannelMemberRemoved.ts +1 -3
  162. package/src/channel/events/onChannelMemberUnbanned.ts +1 -3
  163. package/src/channel/observers/tests/liveChannelMembers.test.ts +5 -12
  164. package/src/channel/observers/tests/liveChannels.test.ts +3 -1
  165. package/src/channel/utils/index.ts +9 -6
  166. package/src/comment/api/createComment.ts +18 -2
  167. package/src/comment/api/deleteComment.ts +19 -2
  168. package/src/comment/api/tests/createComment.test.ts +169 -9
  169. package/src/comment/api/tests/updateComment.test.ts +189 -0
  170. package/src/comment/events/tests/onCommentCreated.test.ts +3 -3
  171. package/src/comment/events/tests/onCommentDeleted.test.ts +3 -3
  172. package/src/comment/observers/tests/liveComment.test.ts +18 -2
  173. package/src/community/api/addCommunityMembers.ts +6 -3
  174. package/src/community/api/addCommunityMembersRoles.ts +5 -2
  175. package/src/community/api/createCommunity.ts +5 -5
  176. package/src/community/api/deleteCommunity.ts +9 -1
  177. package/src/community/api/getCommunities.ts +2 -2
  178. package/src/community/api/getCommunity.ts +2 -2
  179. package/src/community/api/getRecommendedCommunities.ts +2 -2
  180. package/src/community/api/getTopTrendingCommunities.ts +2 -2
  181. package/src/community/api/joinCommunity.ts +6 -3
  182. package/src/community/api/leaveCommunity.ts +6 -3
  183. package/src/community/api/queryCommunities.ts +3 -3
  184. package/src/community/api/queryCommunityMembers.ts +3 -7
  185. package/src/community/api/removeCommunityMembers.ts +7 -3
  186. package/src/community/api/removeCommunityMembersRoles.ts +5 -2
  187. package/src/community/api/test/queryCommunityMembers.test.ts +2 -1
  188. package/src/community/api/test/removeCommunityMemberRole.test.ts +4 -1
  189. package/src/community/api/updateCommunity.ts +5 -5
  190. package/src/community/events/index.ts +2 -0
  191. package/src/community/events/onCommunityUserRoleAdded.ts +20 -0
  192. package/src/community/events/onCommunityUserRoleRemoved.ts +20 -0
  193. package/src/community/events/test/onCommunityDeleted.test.ts +8 -1
  194. package/src/community/events/test/onCommunityUserRoleAdded.test.ts +50 -0
  195. package/src/community/events/test/onCommunityUserRoleRemoved.test.ts +50 -0
  196. package/src/community/events/utils.ts +4 -8
  197. package/src/community/observers/index.ts +4 -0
  198. package/src/community/observers/liveCommunity.ts +45 -0
  199. package/src/community/observers/liveCommunityMembers.ts +187 -0
  200. package/src/community/observers/tests/liveCommunities.test.ts +38 -18
  201. package/src/community/observers/tests/liveCommunity.test.ts +147 -0
  202. package/src/community/observers/tests/liveCommunityMembers.test.ts +195 -0
  203. package/src/community/utils/payload.ts +28 -22
  204. package/src/core/device.ts +2 -4
  205. package/src/core/model/idResolvers.ts +4 -3
  206. package/src/core/model/identifyModel.ts +3 -3
  207. package/src/core/model/index.ts +1 -0
  208. package/src/core/query/query.ts +7 -0
  209. package/src/core/tests/query/query/runQuery.test.ts +8 -3
  210. package/src/core/tests/subscription.test.ts +80 -2
  211. package/src/external/api/tests/createUserToken.test.ts +29 -0
  212. package/src/feed/api/queryGlobalFeed.ts +8 -4
  213. package/src/group/utils/test/withUsers.test.ts +5 -5
  214. package/src/group/utils/withUser.ts +20 -14
  215. package/src/message/api/createMessage.ts +10 -9
  216. package/src/message/api/getMessage.ts +2 -2
  217. package/src/message/api/getMessages.ts +1 -1
  218. package/src/message/api/queryMessages.ts +2 -2
  219. package/src/message/api/tests/createMessage.test.ts +5 -1
  220. package/src/message/api/updateMessage.ts +1 -1
  221. package/src/message/events/onMessageCreated.ts +1 -1
  222. package/src/message/events/onMessageDeleted.ts +1 -1
  223. package/src/message/events/onMessageFetched.ts +1 -1
  224. package/src/message/events/onMessageFlagCleared.ts +1 -1
  225. package/src/message/events/onMessageFlagged.ts +1 -1
  226. package/src/message/events/onMessageReactionAdded.ts +1 -1
  227. package/src/message/events/onMessageReactionRemoved.ts +1 -1
  228. package/src/message/events/onMessageUnflagged.ts +1 -1
  229. package/src/message/events/onMessageUpdated.ts +1 -1
  230. package/src/message/tests/events.test.ts +10 -2
  231. package/src/message/tests/observers/liveMessage.test.ts +6 -1
  232. package/src/message/tests/observers/liveMessages.test.ts +16 -3
  233. package/src/message/utils/index.ts +5 -3
  234. package/src/poll/api/tests/closePoll.test.ts +50 -0
  235. package/src/poll/api/tests/createPoll.test.ts +70 -0
  236. package/src/poll/api/tests/getPoll.test.ts +31 -0
  237. package/src/poll/api/tests/votePoll.test.ts +41 -0
  238. package/src/poll/events/onPollDeleted.ts +1 -1
  239. package/src/poll/events/onPollUpdated.ts +1 -1
  240. package/src/post/api/approvePost.ts +10 -10
  241. package/src/post/api/createPost.ts +6 -3
  242. package/src/post/api/declinePost.ts +11 -11
  243. package/src/post/api/deletePost.ts +19 -2
  244. package/src/post/api/getPost.ts +5 -2
  245. package/src/post/api/getPosts.ts +4 -1
  246. package/src/post/api/queryPosts.ts +3 -1
  247. package/src/post/api/tests/queryPosts.test.ts +5 -4
  248. package/src/post/api/updatePost.ts +4 -1
  249. package/src/post/events/onPostReactionAdded.ts +1 -1
  250. package/src/post/events/onPostReactionRemoved.ts +1 -1
  251. package/src/post/events/utils.ts +12 -2
  252. package/src/post/observers/tests/livePost.test.ts +10 -3
  253. package/src/post/observers/tests/livePosts.test.ts +12 -4
  254. package/src/post/tests/api/getPost.test.ts +13 -3
  255. package/src/post/tests/api/queryPosts.test.ts +5 -4
  256. package/src/reaction/api/addReaction.ts +3 -3
  257. package/src/reaction/api/queryReactions.ts +2 -0
  258. package/src/reaction/api/removeReaction.ts +4 -3
  259. package/src/reaction/events/onReactionAdded.ts +3 -3
  260. package/src/reaction/events/onReactionRemoved.ts +3 -3
  261. package/src/reaction/events/onReactorAdded.ts +8 -2
  262. package/src/reaction/events/onReactorRemoved.ts +8 -2
  263. package/src/reaction/utils/dispatchReactable.ts +1 -1
  264. package/src/reaction/utils/fetchReference.ts +1 -1
  265. package/src/report/api/createReport.ts +14 -8
  266. package/src/report/api/deleteReport.ts +14 -8
  267. package/src/subChannel/api/createSubChannel.ts +1 -1
  268. package/src/subChannel/api/getSubChannel.ts +1 -1
  269. package/src/subChannel/api/getSubChannels.ts +1 -1
  270. package/src/subChannel/api/querySubChannels.ts +2 -2
  271. package/src/subChannel/api/updateSubChannel.ts +1 -1
  272. package/src/subChannel/events/onSubChannelCreated.ts +1 -1
  273. package/src/subChannel/events/onSubChannelDeleted.ts +1 -1
  274. package/src/subChannel/events/onSubChannelUpdated.ts +1 -1
  275. package/src/subChannel/utils/index.ts +2 -2
  276. package/src/user/observers/tests/liveUsers.test.ts +2 -0
  277. package/src/user/tests/api/getUser.test.ts +17 -3
  278. package/src/utils/index.ts +2 -2
  279. package/src/utils/liveObject.ts +1 -1
  280. package/src/utils/tests/dummy/channel.ts +18 -11
  281. package/src/utils/tests/dummy/community.ts +68 -6
  282. package/src/utils/tests/dummy/feed.ts +1 -1
  283. package/src/utils/tests/dummy/member.ts +1 -1
  284. package/src/utils/tests/dummy/post.ts +93 -9
  285. package/src/version.ts +9 -3
@@ -47,9 +47,10 @@ describe('queryPosts.locally', () => {
47
47
  enableCache();
48
48
 
49
49
  const { data } = postQueryResponse;
50
- const { posts: expected, paging } = data;
50
+ const { paging, ...payload } = data;
51
+ const { posts: expected } = payload;
51
52
 
52
- ingestInCache(data as Amity.PostPayload);
53
+ ingestInCache(data as Amity.ProcessedPostPayload);
53
54
 
54
55
  pushToCache(cacheKey, { posts: expected.map(getResolver('post')), paging });
55
56
 
@@ -71,7 +72,7 @@ describe('queryPosts.locally', () => {
71
72
  ingestInCache({
72
73
  ...data,
73
74
  posts: [data.posts[0]],
74
- } as Amity.PostPayload);
75
+ } as Amity.ProcessedPostPayload);
75
76
 
76
77
  pushToCache(cacheKey, {
77
78
  posts: posts.map(getResolver('post')),
@@ -92,7 +93,7 @@ describe('queryPosts.locally', () => {
92
93
  const { data } = postQueryResponse;
93
94
  const { posts: expected, paging } = data;
94
95
 
95
- ingestInCache(data as Amity.PostPayload);
96
+ ingestInCache(data as Amity.ProcessedPostPayload);
96
97
 
97
98
  pushToCache(cacheKey, { posts: expected.map(getResolver('post')), paging });
98
99
 
@@ -41,7 +41,7 @@ export const addReaction = async (
41
41
  });
42
42
 
43
43
  if (client.cache) {
44
- const model = pullFromCache<Amity.Model[Amity.ReactableType]>([
44
+ const model = pullFromCache<Amity.Models[Amity.ReactableType]>([
45
45
  referenceType,
46
46
  'get',
47
47
  referenceId,
@@ -83,7 +83,7 @@ addReaction.optimistically = (
83
83
 
84
84
  if (!client.cache) return;
85
85
 
86
- const model = pullFromCache<Amity.Model[Amity.ReactableType]>([
86
+ const model = pullFromCache<Amity.Models[Amity.ReactableType]>([
87
87
  referenceType,
88
88
  'get',
89
89
  referenceId,
@@ -99,7 +99,7 @@ addReaction.optimistically = (
99
99
  ...model.data.reactions,
100
100
  [reactionName]: (model.data.reactions[reactionName] ?? 0) + 1,
101
101
  },
102
- } as Amity.Model[Amity.ReactableType];
102
+ } as Amity.Models[Amity.ReactableType];
103
103
 
104
104
  upsertInCache([referenceType, 'get', referenceId], reaction, {
105
105
  cachedAt: UNSYNCED_OBJECT_CACHED_AT_VALUE,
@@ -43,6 +43,8 @@ export const queryReactions = async (
43
43
  const { paging, ...payload } = data;
44
44
  const { reactions } = payload;
45
45
 
46
+ // FIXME: correct reactions type in model
47
+ // @ts-ignore
46
48
  ingestInCache({ ...payload, reactions: reactions[0].reactors });
47
49
 
48
50
  const nextPage = toPageRaw(paging.next);
@@ -3,6 +3,7 @@ import { getActiveClient } from '~/client/api';
3
3
  import { upsertInCache, pullFromCache, pushToCache } from '~/cache/api';
4
4
 
5
5
  import { UNSYNCED_OBJECT_CACHED_AT_VALUE } from '~/utils/constants';
6
+
6
7
  import { dispatchReactable } from '../utils';
7
8
 
8
9
  /**
@@ -43,7 +44,7 @@ export const removeReaction = async (
43
44
  });
44
45
 
45
46
  if (client.cache) {
46
- const model = pullFromCache<Amity.Model[Amity.ReactableType]>([
47
+ const model = pullFromCache<Amity.Models[Amity.ReactableType]>([
47
48
  referenceType,
48
49
  'get',
49
50
  referenceId,
@@ -85,7 +86,7 @@ removeReaction.optimistically = (
85
86
 
86
87
  if (!client.cache) return;
87
88
 
88
- const model = pullFromCache<Amity.Model[Amity.ReactableType]>([
89
+ const model = pullFromCache<Amity.Models[Amity.ReactableType]>([
89
90
  referenceType,
90
91
  'get',
91
92
  referenceId,
@@ -101,7 +102,7 @@ removeReaction.optimistically = (
101
102
  ...model.data.reactions,
102
103
  [reactionName]: Math.max(0, (model.data.reactions[reactionName] ?? 0) - 1),
103
104
  },
104
- } as Amity.Model[Amity.ReactableType];
105
+ } as Amity.Models[Amity.ReactableType];
105
106
 
106
107
  upsertInCache([referenceType, 'get', referenceId], reaction, {
107
108
  cachedAt: UNSYNCED_OBJECT_CACHED_AT_VALUE,
@@ -27,9 +27,9 @@ import { prepareMessagePayload } from '~/message/utils';
27
27
  export const onReactionAdded = (
28
28
  referenceType: Amity.ReactableType,
29
29
  referenceId: Amity.Reaction['referenceId'],
30
- callback: Amity.Listener<Amity.Model[typeof referenceType]>,
30
+ callback: Amity.Listener<Amity.Models[typeof referenceType]>,
31
31
  ): Amity.Unsubscriber => {
32
- const callbackWrapper = (model: Amity.Model[typeof referenceType]) => {
32
+ const callbackWrapper = (model: Amity.Models[typeof referenceType]) => {
33
33
  if (getResolver(referenceType)(model as any) === referenceId) {
34
34
  callback(model);
35
35
  }
@@ -42,7 +42,7 @@ export const onReactionAdded = (
42
42
  if (referenceType === 'message') {
43
43
  const client = getActiveClient();
44
44
 
45
- const filter = (rawPayload: Amity.RawMessagePayload) => {
45
+ const filter = (rawPayload: Amity.MessagePayload) => {
46
46
  const payload = prepareMessagePayload(rawPayload);
47
47
  const cached = pullFromCache<Amity.Message>([
48
48
  'message',
@@ -27,9 +27,9 @@ import { prepareMessagePayload } from '~/message/utils';
27
27
  export const onReactionRemoved = (
28
28
  referenceType: Amity.ReactableType,
29
29
  referenceId: Amity.Reaction['referenceId'],
30
- callback: Amity.Listener<Amity.Model[typeof referenceType]>,
30
+ callback: Amity.Listener<Amity.Models[typeof referenceType]>,
31
31
  ): Amity.Unsubscriber => {
32
- const callbackWrapper = (model: Amity.Model[typeof referenceType]) => {
32
+ const callbackWrapper = (model: Amity.Models[typeof referenceType]) => {
33
33
  if (getResolver(referenceType)(model as any) === referenceId) {
34
34
  callback(model);
35
35
  }
@@ -38,7 +38,7 @@ export const onReactionRemoved = (
38
38
  if (referenceType === 'message') {
39
39
  const client = getActiveClient();
40
40
 
41
- const filter = (rawPayload: Amity.RawMessagePayload) => {
41
+ const filter = (rawPayload: Amity.MessagePayload) => {
42
42
  const payload = prepareMessagePayload(rawPayload);
43
43
  const cached = pullFromCache<Amity.Message>([
44
44
  'message',
@@ -38,7 +38,7 @@ export const onReactorAdded = (
38
38
  };
39
39
 
40
40
  if (referenceType === 'message') {
41
- const filter = (rawPayload: Amity.RawMessagePayload) => {
41
+ const filter = (rawPayload: Amity.MessagePayload) => {
42
42
  const payload = prepareMessagePayload(rawPayload);
43
43
  if (!payload.messages[0].latestReaction) return;
44
44
 
@@ -48,6 +48,8 @@ export const onReactorAdded = (
48
48
  if (eventName !== 'add') return;
49
49
 
50
50
  ingestInCache(payload);
51
+ // FIXME: correct reactions type in model
52
+ // @ts-ignore
51
53
  ingestInCache({ reactions: [reactor as Amity.Reactor] });
52
54
 
53
55
  callbackWrapper('message', payload.messages[0].messageId, reactor);
@@ -60,7 +62,9 @@ export const onReactorAdded = (
60
62
  const filter = (payload: Amity.PostPayload & { reactor: Amity.Reactor }) => {
61
63
  const { reactor, ...rest } = payload;
62
64
 
63
- ingestInCache(rest as Amity.PostPayload);
65
+ ingestInCache(rest as Amity.ProcessedPostPayload);
66
+ // FIXME: correct reactions type in model
67
+ // @ts-ignore
64
68
  ingestInCache({ reactions: [reactor] });
65
69
 
66
70
  callbackWrapper('post', payload.posts[0].postId, reactor);
@@ -73,6 +77,8 @@ export const onReactorAdded = (
73
77
  const { reactor, ...rest } = payload;
74
78
 
75
79
  ingestInCache(rest as Amity.CommentPayload);
80
+ // FIXME: correct reactions type in model
81
+ // @ts-ignore
76
82
  ingestInCache({ reactions: [reactor] });
77
83
 
78
84
  callbackWrapper('comment', payload.comments[0].commentId, reactor);
@@ -38,7 +38,7 @@ export const onReactorRemoved = (
38
38
  };
39
39
 
40
40
  if (referenceType === 'message') {
41
- const filter = (rawPayload: Amity.RawMessagePayload) => {
41
+ const filter = (rawPayload: Amity.MessagePayload) => {
42
42
  const payload = prepareMessagePayload(rawPayload);
43
43
  if (!payload.messages[0].latestReaction) return;
44
44
 
@@ -48,6 +48,8 @@ export const onReactorRemoved = (
48
48
  if (eventName !== 'remove') return;
49
49
 
50
50
  ingestInCache(payload);
51
+ // FIXME: correct reactions type in model
52
+ // @ts-ignore
51
53
  ingestInCache({ reactions: [reactor as Amity.Reactor] });
52
54
 
53
55
  callbackWrapper('message', payload.messages[0].messageId, reactor);
@@ -60,7 +62,9 @@ export const onReactorRemoved = (
60
62
  const filter = (payload: Amity.PostPayload & { reactor: Amity.Reactor }) => {
61
63
  const { reactor, ...rest } = payload;
62
64
 
63
- ingestInCache(rest as Amity.PostPayload);
65
+ ingestInCache(rest as Amity.ProcessedPostPayload);
66
+ // FIXME: correct reactions type in model
67
+ // @ts-ignore
64
68
  ingestInCache({ reactions: [reactor] });
65
69
 
66
70
  callbackWrapper('post', payload.posts[0].postId, reactor);
@@ -73,6 +77,8 @@ export const onReactorRemoved = (
73
77
  const { reactor, ...rest } = payload;
74
78
 
75
79
  ingestInCache(rest as Amity.CommentPayload);
80
+ // FIXME: correct reactions type in model
81
+ // @ts-ignore
76
82
  ingestInCache({ reactions: [reactor] });
77
83
 
78
84
  callbackWrapper('comment', payload.comments[0].commentId, reactor);
@@ -3,7 +3,7 @@ import { fireEvent } from '~/core/events';
3
3
  /** @hidden */
4
4
  export const dispatchReactable = <T extends Amity.ReactableType>(
5
5
  referenceType: T,
6
- model: Amity.Model[T],
6
+ model: Amity.Models[T],
7
7
  ) => {
8
8
  if (referenceType === 'message')
9
9
  // @ts-ignore: refactor later
@@ -6,7 +6,7 @@ import { getComment } from '~/comment/api';
6
6
  export const fetchReference = async (
7
7
  referenceType: Amity.ReactableType,
8
8
  referenceId: string,
9
- ): Promise<Amity.Cached<Amity.Model[typeof referenceType]>> => {
9
+ ): Promise<Amity.Cached<Amity.Models[typeof referenceType]>> => {
10
10
  if (referenceType === 'message') return getMessage(referenceId);
11
11
  if (referenceType === 'post') return getPost(referenceId);
12
12
  if (referenceType === 'comment') return getComment(referenceId);
@@ -2,6 +2,7 @@ import { getActiveClient } from '~/client/api/activeClient';
2
2
 
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
  import { fireEvent } from '~/core/events';
5
+ import { prepareMembershipPayload } from '~/group/utils';
5
6
 
6
7
  import { prepareMessagePayload } from '~/message/utils';
7
8
  import REFERENCE_TYPES from '../constants/referenceTypes';
@@ -40,16 +41,21 @@ export const createReport = async (
40
41
  return `/api/v3/${domainName}/${encodeURIComponent(referenceId)}/flag`;
41
42
  };
42
43
 
43
- const { data } = await client.http.post<
44
- Amity.PostPayload | Amity.CommentPayload | Amity.RawMessagePayload | Amity.UserPayload
44
+ const { data: payload } = await client.http.post<
45
+ Amity.PostPayload | Amity.CommentPayload | Amity.MessagePayload | Amity.UserPayload
45
46
  >(getAPIUrl());
46
47
 
47
- if (client.cache)
48
- ingestInCache(
49
- referenceType === 'message' ? prepareMessagePayload(data as Amity.RawMessagePayload) : data,
50
- );
48
+ if (client.cache) {
49
+ if (referenceType === 'message') {
50
+ ingestInCache(prepareMessagePayload(payload as Amity.MessagePayload));
51
+ } else if (referenceType === 'post') {
52
+ ingestInCache(prepareMembershipPayload(payload as Amity.PostPayload, 'communityUsers'));
53
+ } else {
54
+ ingestInCache(payload as Amity.CommentPayload | Amity.UserPayload);
55
+ }
56
+ }
51
57
 
52
- fireEvent(`${referenceType}.flagged`, data);
58
+ fireEvent(`${referenceType}.flagged`, payload);
53
59
 
54
- return !!data;
60
+ return !!payload;
55
61
  };
@@ -3,6 +3,7 @@ import { getActiveClient } from '~/client/api/activeClient';
3
3
  import { ingestInCache } from '~/cache/api/ingestInCache';
4
4
 
5
5
  import { fireEvent } from '~/core/events';
6
+ import { prepareMembershipPayload } from '~/group/utils';
6
7
  import { prepareMessagePayload } from '~/message/utils';
7
8
  import REFERENCE_TYPES from '../constants/referenceTypes';
8
9
 
@@ -40,17 +41,22 @@ export const deleteReport = async (
40
41
  return `/api/v3/${domainName}/${encodeURIComponent(referenceId)}/unflag`;
41
42
  };
42
43
 
43
- const { data } = await client.http.delete<
44
- Amity.PostPayload | Amity.CommentPayload | Amity.MessagePayload | Amity.UserPayload
44
+ const { data: payload } = await client.http.delete<
45
+ Amity.PostPayload | Amity.CommentPayload | Amity.ProcessedMessagePayload | Amity.UserPayload
45
46
  >(getAPIUrl());
46
47
 
47
- if (client.cache)
48
- ingestInCache(
49
- referenceType === 'message' ? prepareMessagePayload(data as Amity.RawMessagePayload) : data,
50
- );
48
+ if (client.cache) {
49
+ if (referenceType === 'message') {
50
+ ingestInCache(prepareMessagePayload(payload as Amity.MessagePayload));
51
+ } else if (referenceType === 'post') {
52
+ ingestInCache(prepareMembershipPayload(payload as Amity.PostPayload, 'communityUsers'));
53
+ } else {
54
+ ingestInCache(payload as Amity.CommentPayload | Amity.UserPayload);
55
+ }
56
+ }
51
57
 
52
58
  // @ts-ignore
53
- fireEvent(`${referenceType}.unflagged`, data);
59
+ fireEvent(`${referenceType}.unflagged`, payload);
54
60
 
55
- return !!data;
61
+ return !!payload;
56
62
  };
@@ -23,7 +23,7 @@ export const createSubChannel = async <T extends Amity.ChannelType>(
23
23
  const client = getActiveClient();
24
24
  client.log('user/createSubChannel', bundle);
25
25
 
26
- const response = await client.http.post<Amity.RawSubChannelPayload>('/api/v5/message-feeds', {
26
+ const response = await client.http.post<Amity.SubChannelPayload>('/api/v5/message-feeds', {
27
27
  channelId: bundle.channelId,
28
28
  name: bundle.displayName,
29
29
  });
@@ -30,7 +30,7 @@ export const getSubChannel = async (
30
30
  isInTombstone('subChannel', subChannelId);
31
31
 
32
32
  try {
33
- const response = await client.http.get<Amity.RawSubChannelPayload>(
33
+ const response = await client.http.get<Amity.SubChannelPayload>(
34
34
  `/api/v5/message-feeds/${encodeURIComponent(subChannelId)}`,
35
35
  );
36
36
  const data = prepareSubChannelPayload(response.data);
@@ -24,7 +24,7 @@ export const getSubChannels = async (
24
24
  const client = getActiveClient();
25
25
  client.log('channel/getSubChannels', subChannelIds);
26
26
 
27
- const response = await client.http.get<Amity.RawSubChannelPayload>('/api/v5/message-feeds/list', {
27
+ const response = await client.http.get<Amity.SubChannelPayload>('/api/v5/message-feeds/list', {
28
28
  params: { messageFeedIds: subChannelIds.map(encodeURIComponent) },
29
29
  });
30
30
  const data = prepareSubChannelPayload(response.data);
@@ -28,7 +28,7 @@ export const querySubChannels = async (
28
28
 
29
29
  const { page = { limit: 10 }, channelId, ...params } = convertQueryParams(query);
30
30
 
31
- const response = await client.http.get<Amity.RawSubChannelPayload & Amity.Pagination>(
31
+ const response = await client.http.get<Amity.SubChannelPayload & Amity.Pagination>(
32
32
  `/api/v5/message-feeds/channel/${channelId}`,
33
33
  {
34
34
  params: {
@@ -46,7 +46,7 @@ export const querySubChannels = async (
46
46
  const cachedAt = client.cache && Date.now();
47
47
 
48
48
  if (client.cache) {
49
- ingestInCache(data as Amity.SubChannelPayload, { cachedAt });
49
+ ingestInCache(data as Amity.ProcessedSubChannelPayload, { cachedAt });
50
50
 
51
51
  const cacheKey = [
52
52
  'subChannel',
@@ -25,7 +25,7 @@ export const updateSubChannel = async (
25
25
  const client = getActiveClient();
26
26
  client.log('channel/updateSubChannel', subChannelId, patch);
27
27
 
28
- const response = await client.http.put<Amity.RawSubChannelPayload>(
28
+ const response = await client.http.put<Amity.SubChannelPayload>(
29
29
  `/api/v5/message-feeds/${encodeURIComponent(subChannelId)}`,
30
30
  { name: patch.displayName },
31
31
  );
@@ -21,7 +21,7 @@ import { prepareSubChannelPayload } from '../utils';
21
21
  export const onSubChannelCreated = (callback: Amity.Listener<Amity.SubChannel>) => {
22
22
  const client = getActiveClient();
23
23
 
24
- const filter = (rawPayload: Amity.RawSubChannelPayload) => {
24
+ const filter = (rawPayload: Amity.SubChannelPayload) => {
25
25
  const payload = prepareSubChannelPayload(rawPayload);
26
26
 
27
27
  ingestInCache(payload);
@@ -21,7 +21,7 @@ import { prepareSubChannelPayload } from '../utils';
21
21
  export const onSubChannelDeleted = (callback: Amity.Listener<Amity.SubChannel>) => {
22
22
  const client = getActiveClient();
23
23
 
24
- const filter = (rawPayload: Amity.RawSubChannelPayload) => {
24
+ const filter = (rawPayload: Amity.SubChannelPayload) => {
25
25
  const payload = prepareSubChannelPayload(rawPayload);
26
26
 
27
27
  ingestInCache(payload);
@@ -21,7 +21,7 @@ import { prepareSubChannelPayload } from '../utils';
21
21
  export const onSubChannelUpdated = (callback: Amity.Listener<Amity.SubChannel>) => {
22
22
  const client = getActiveClient();
23
23
 
24
- const filter = (rawPayload: Amity.RawSubChannelPayload) => {
24
+ const filter = (rawPayload: Amity.SubChannelPayload) => {
25
25
  const payload = prepareSubChannelPayload(rawPayload);
26
26
 
27
27
  ingestInCache(payload);
@@ -24,8 +24,8 @@ export function convertFromRaw({
24
24
  }
25
25
 
26
26
  export const prepareSubChannelPayload = (
27
- payload: Amity.RawSubChannelPayload,
28
- ): Amity.SubChannelPayload => {
27
+ payload: Amity.SubChannelPayload,
28
+ ): Amity.ProcessedSubChannelPayload => {
29
29
  return {
30
30
  ...payload,
31
31
  messageFeeds: payload.messageFeeds.map(convertFromRaw),
@@ -35,6 +35,7 @@ describe('liveUsers', () => {
35
35
 
36
36
  const params = { sortBy: 'lastCreated' } as Amity.UserLiveCollection;
37
37
 
38
+ // integration_test_id: c7cb9776-5c72-4abe-9b3c-572d74d534fe
38
39
  test('it should return users collection', async () => {
39
40
  const callback = jest.fn();
40
41
  client.http.get = jest.fn().mockResolvedValue(userQueryResponse);
@@ -173,6 +174,7 @@ describe('liveUsers', () => {
173
174
  });
174
175
  });
175
176
 
177
+ // integration_test_id: 60b4b354-efca-49bc-aa8b-d63a8da6ef31
176
178
  const filters: [string, Amity.UserLiveCollection, Amity.User[]][] = [
177
179
  ['displayName', { displayName: 'displayName' }, [user21]],
178
180
  ];
@@ -16,6 +16,7 @@ const getResolvedUserValue = () => ({
16
16
  });
17
17
 
18
18
  describe('getUser', () => {
19
+ // integration_test_id: c9d28b37-c761-4df5-ac86-060a506f3007
19
20
  test('should return user data', async () => {
20
21
  client.http.get = jest.fn().mockResolvedValue(getResolvedUserValue());
21
22
 
@@ -34,10 +35,23 @@ describe('getUser', () => {
34
35
  disableCache();
35
36
  });
36
37
 
38
+ // integration_test_id: b5204e28-7e11-44ff-b391-48181f1822ba
37
39
  test('should return an error', async () => {
38
- client.http.get = jest.fn().mockRejectedValueOnce(new Error('error'));
39
-
40
- await expect(getUser(user.userId)).rejects.toThrow('error');
40
+ const expected = new ASCApiError(
41
+ 'User not found',
42
+ Amity.ServerError.ITEM_NOT_FOUND,
43
+ Amity.ErrorLevel.ERROR,
44
+ );
45
+
46
+ client.http.get = jest.fn().mockRejectedValue({
47
+ data: expected,
48
+ });
49
+
50
+ try {
51
+ await getUser(user.userId);
52
+ } catch ({ data = null }) {
53
+ expect(data).toEqual(expected);
54
+ }
41
55
  });
42
56
 
43
57
  test('should return an error if user in cache but api throws not found', async () => {
@@ -16,7 +16,7 @@ export function hasMention(model: Amity.Mentionable<'user' | 'channel'>, userId:
16
16
  return false;
17
17
  }
18
18
 
19
- export function isCollectionOutdated<T extends Amity.Model[Amity.Domain] & Amity.UpdatedAt>(
19
+ export function isCollectionOutdated<T extends Amity.Models[Amity.Domain] & Amity.UpdatedAt>(
20
20
  collection: T[],
21
21
  newItem: T,
22
22
  action: 'onCreate' | string,
@@ -32,7 +32,7 @@ export function isCollectionOutdated<T extends Amity.Model[Amity.Domain] & Amity
32
32
  return action === 'onCreate';
33
33
  }
34
34
 
35
- export function merge<T extends Amity.Model[Amity.Domain]>(
35
+ export function merge<T extends Amity.Models[Amity.Domain]>(
36
36
  collection1: T[],
37
37
  collection2: T[],
38
38
  ): T[] {
@@ -9,7 +9,7 @@ import { createQuery, runQuery } from '~/core/query';
9
9
  import { ASCApiError } from '~/core/errors';
10
10
 
11
11
  export const liveObject = <
12
- T extends Exclude<Amity.Model[Amity.Domain], Amity.Reaction | Amity.FollowCount>,
12
+ T extends Exclude<Amity.Models[Amity.Domain], Amity.Reaction | Amity.FollowCount>,
13
13
  K extends keyof T,
14
14
  >(
15
15
  id: T[K],
@@ -1,7 +1,7 @@
1
1
  import { convertFromRaw } from '~/channel/utils';
2
2
  import { date, user11, user12, user13, user14, file11 } from '.';
3
3
 
4
- export function generateRawChannel(params?: Partial<Amity.ChannelRaw>): Amity.ChannelRaw {
4
+ export function generateRawChannel(params?: Partial<Amity.RawChannel>): Amity.RawChannel {
5
5
  const channelId = params?.channelId ?? 'channelId11';
6
6
 
7
7
  return {
@@ -20,8 +20,8 @@ export function generateRawChannel(params?: Partial<Amity.ChannelRaw>): Amity.Ch
20
20
  }
21
21
 
22
22
  function generateRawChannelUser(
23
- params?: Partial<Amity.MembershipRaw<'channel'>>,
24
- ): Amity.MembershipRaw<'channel'> {
23
+ params?: Partial<Amity.RawMembership<'channel'>>,
24
+ ): Amity.RawMembership<'channel'> {
25
25
  return {
26
26
  channelId: 'channelId11',
27
27
  createdAt: date,
@@ -39,7 +39,7 @@ function generateRawChannelUser(
39
39
  };
40
40
  }
41
41
  function convertChannelUserFromRaw(
42
- member: Amity.MembershipRaw<'channel'>,
42
+ member: Amity.RawMembership<'channel'>,
43
43
  user: Amity.User,
44
44
  ): Amity.Membership<'channel'> {
45
45
  return {
@@ -55,21 +55,21 @@ export const mockPage = {
55
55
  },
56
56
  };
57
57
 
58
- export const channelRaw1: Amity.ChannelRaw = generateRawChannel({ type: 'community' });
58
+ export const channelRaw1: Amity.RawChannel = generateRawChannel({ type: 'community' });
59
59
 
60
- export const channelRawLive1: Amity.ChannelRaw = generateRawChannel({ type: 'live' });
60
+ export const channelRawLive1: Amity.RawChannel = generateRawChannel({ type: 'live' });
61
61
 
62
- export const channelRawConversation1: Amity.ChannelRaw = generateRawChannel({
62
+ export const channelRawConversation1: Amity.RawChannel = generateRawChannel({
63
63
  type: 'conversation',
64
64
  });
65
65
 
66
- export const channelRaw2: Amity.ChannelRaw = generateRawChannel({
66
+ export const channelRaw2: Amity.RawChannel = generateRawChannel({
67
67
  channelId: 'channelId12',
68
68
  tags: ['tag1'],
69
69
  type: 'conversation',
70
70
  });
71
71
 
72
- export const channelRaw3: Amity.ChannelRaw = generateRawChannel({
72
+ export const channelRaw3: Amity.RawChannel = generateRawChannel({
73
73
  channelId: 'channelId21',
74
74
  });
75
75
 
@@ -221,14 +221,21 @@ export const channelUserQueryResponsePage3 = {
221
221
  },
222
222
  };
223
223
 
224
- // for testing ingest in cache
225
- export const channelPayload = {
224
+ export const rawChannelPayload: Amity.ChannelPayload = {
226
225
  channels: [channelRaw1],
227
226
  channelUsers: [rawChannelUserWithRole, rawMutedChannelUser],
228
227
  users: [user14, user11],
229
228
  files: [file11],
230
229
  };
231
230
 
231
+ // for testing ingest in cache
232
+ export const channelPayload: Amity.ProcessedChannelPayload = {
233
+ channels: [channel1],
234
+ channelUsers: [channelUserWithRole, mutedChannelUser],
235
+ users: [user14, user11],
236
+ files: [file11],
237
+ };
238
+
232
239
  export const liveChannelPayload = {
233
240
  channels: [channelRawLive1],
234
241
  channelUsers: [rawChannelUserWithRole, rawMutedChannelUser],