@amityco/ts-sdk 0.0.1-beta.15 → 0.0.1-beta.16

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 (142) hide show
  1. package/dist/@types/core/cache.d.ts +1 -1
  2. package/dist/@types/core/cache.d.ts.map +1 -1
  3. package/dist/@types/core/events.d.ts +10 -1
  4. package/dist/@types/core/events.d.ts.map +1 -1
  5. package/dist/@types/core/model.d.ts +4 -0
  6. package/dist/@types/core/model.d.ts.map +1 -1
  7. package/dist/@types/core/paging.d.ts +10 -10
  8. package/dist/@types/core/paging.d.ts.map +1 -1
  9. package/dist/@types/core/payload.d.ts +10 -0
  10. package/dist/@types/core/payload.d.ts.map +1 -1
  11. package/dist/@types/core/query.d.ts +5 -4
  12. package/dist/@types/core/query.d.ts.map +1 -1
  13. package/dist/@types/domains/client.d.ts +0 -1
  14. package/dist/@types/domains/client.d.ts.map +1 -1
  15. package/dist/@types/domains/follow.d.ts +20 -0
  16. package/dist/@types/domains/follow.d.ts.map +1 -0
  17. package/dist/@types/index.d.ts +1 -0
  18. package/dist/@types/index.d.ts.map +1 -1
  19. package/dist/category/api/queryCategories.d.ts +3 -3
  20. package/dist/channel/api/createChannel.d.ts +1 -1
  21. package/dist/channel/api/queryChannels.d.ts +1 -1
  22. package/dist/client/api/activeUser.d.ts +6 -0
  23. package/dist/client/api/activeUser.d.ts.map +1 -0
  24. package/dist/client/api/connectClient.d.ts.map +1 -1
  25. package/dist/community/api/getRecommendedCommunities.d.ts +32 -0
  26. package/dist/community/api/getRecommendedCommunities.d.ts.map +1 -0
  27. package/dist/community/api/getTopTrendingCommunities.d.ts +32 -0
  28. package/dist/community/api/getTopTrendingCommunities.d.ts.map +1 -0
  29. package/dist/community/api/index.d.ts +2 -0
  30. package/dist/community/api/index.d.ts.map +1 -1
  31. package/dist/community/api/queryCommunities.d.ts +1 -1
  32. package/dist/core/events.d.ts +3 -3
  33. package/dist/core/events.d.ts.map +1 -1
  34. package/dist/core/model/idResolvers.d.ts.map +1 -1
  35. package/dist/core/model/identifyModel.d.ts.map +1 -1
  36. package/dist/core/model/index.d.ts.map +1 -1
  37. package/dist/core/query/paging.d.ts +3 -3
  38. package/dist/core/query/paging.d.ts.map +1 -1
  39. package/dist/core/subscription.d.ts +2 -0
  40. package/dist/core/subscription.d.ts.map +1 -1
  41. package/dist/feed/api/queryGlobalFeed.d.ts +1 -1
  42. package/dist/follow/api/acceptFollower.d.ts +16 -0
  43. package/dist/follow/api/acceptFollower.d.ts.map +1 -0
  44. package/dist/follow/api/declineFollower.d.ts +16 -0
  45. package/dist/follow/api/declineFollower.d.ts.map +1 -0
  46. package/dist/follow/api/follow.d.ts +16 -0
  47. package/dist/follow/api/follow.d.ts.map +1 -0
  48. package/dist/follow/api/getFollowInfo.d.ts +32 -0
  49. package/dist/follow/api/getFollowInfo.d.ts.map +1 -0
  50. package/dist/follow/api/index.d.ts +8 -0
  51. package/dist/follow/api/index.d.ts.map +1 -0
  52. package/dist/follow/api/queryFollowers.d.ts +36 -0
  53. package/dist/follow/api/queryFollowers.d.ts.map +1 -0
  54. package/dist/follow/api/queryFollowings.d.ts +36 -0
  55. package/dist/follow/api/queryFollowings.d.ts.map +1 -0
  56. package/dist/follow/api/unfollow.d.ts +16 -0
  57. package/dist/follow/api/unfollow.d.ts.map +1 -0
  58. package/dist/follow/api/utils.d.ts +9 -0
  59. package/dist/follow/api/utils.d.ts.map +1 -0
  60. package/dist/follow/events/index.d.ts +9 -0
  61. package/dist/follow/events/index.d.ts.map +1 -0
  62. package/dist/follow/events/onFollowInfoUpdated.d.ts +17 -0
  63. package/dist/follow/events/onFollowInfoUpdated.d.ts.map +1 -0
  64. package/dist/follow/events/onFollowRequestAccepted.d.ts +17 -0
  65. package/dist/follow/events/onFollowRequestAccepted.d.ts.map +1 -0
  66. package/dist/follow/events/onFollowRequestCanceled.d.ts +17 -0
  67. package/dist/follow/events/onFollowRequestCanceled.d.ts.map +1 -0
  68. package/dist/follow/events/onFollowRequestDeclined.d.ts +17 -0
  69. package/dist/follow/events/onFollowRequestDeclined.d.ts.map +1 -0
  70. package/dist/follow/events/onFollowerDeleted.d.ts +17 -0
  71. package/dist/follow/events/onFollowerDeleted.d.ts.map +1 -0
  72. package/dist/follow/events/onFollowerRequested.d.ts +17 -0
  73. package/dist/follow/events/onFollowerRequested.d.ts.map +1 -0
  74. package/dist/follow/events/onUserFollowed.d.ts +17 -0
  75. package/dist/follow/events/onUserFollowed.d.ts.map +1 -0
  76. package/dist/follow/events/onUserUnfollowed.d.ts +17 -0
  77. package/dist/follow/events/onUserUnfollowed.d.ts.map +1 -0
  78. package/dist/follow/events/utils.d.ts +2 -0
  79. package/dist/follow/events/utils.d.ts.map +1 -0
  80. package/dist/follow/observers/index.d.ts +4 -0
  81. package/dist/follow/observers/index.d.ts.map +1 -0
  82. package/dist/follow/observers/observeFollowInfo.d.ts +18 -0
  83. package/dist/follow/observers/observeFollowInfo.d.ts.map +1 -0
  84. package/dist/follow/observers/observeFollowers.d.ts +18 -0
  85. package/dist/follow/observers/observeFollowers.d.ts.map +1 -0
  86. package/dist/follow/observers/observeFollowings.d.ts +18 -0
  87. package/dist/follow/observers/observeFollowings.d.ts.map +1 -0
  88. package/dist/index.cjs.js +752 -8
  89. package/dist/index.d.ts +3 -0
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.esm.js +731 -9
  92. package/dist/index.umd.js +5 -5
  93. package/dist/post/api/queryPosts.d.ts +2 -2
  94. package/dist/post/api/queryPosts.d.ts.map +1 -1
  95. package/dist/role/api/queryRoles.d.ts +1 -1
  96. package/dist/stream/api/queryStreams.d.ts +1 -1
  97. package/package.json +1 -1
  98. package/src/@types/core/cache.ts +1 -1
  99. package/src/@types/core/events.ts +11 -0
  100. package/src/@types/core/model.ts +6 -0
  101. package/src/@types/core/paging.ts +9 -9
  102. package/src/@types/core/payload.ts +14 -0
  103. package/src/@types/core/query.ts +8 -4
  104. package/src/@types/domains/client.ts +0 -1
  105. package/src/@types/domains/follow.ts +25 -0
  106. package/src/@types/index.ts +1 -0
  107. package/src/channel/api/createChannel.ts +1 -1
  108. package/src/client/api/activeUser.ts +26 -0
  109. package/src/client/api/connectClient.ts +3 -1
  110. package/src/community/api/getRecommendedCommunities.ts +86 -0
  111. package/src/community/api/getTopTrendingCommunities.ts +86 -0
  112. package/src/community/api/index.ts +3 -0
  113. package/src/core/model/idResolvers.ts +3 -0
  114. package/src/core/model/identifyModel.ts +2 -0
  115. package/src/core/model/index.ts +3 -0
  116. package/src/core/query/paging.ts +10 -10
  117. package/src/core/subscription.ts +21 -3
  118. package/src/follow/api/acceptFollower.ts +32 -0
  119. package/src/follow/api/declineFollower.ts +32 -0
  120. package/src/follow/api/follow.ts +40 -0
  121. package/src/follow/api/getFollowInfo.ts +75 -0
  122. package/src/follow/api/index.ts +8 -0
  123. package/src/follow/api/queryFollowers.ts +42 -0
  124. package/src/follow/api/queryFollowings.ts +42 -0
  125. package/src/follow/api/unfollow.ts +32 -0
  126. package/src/follow/api/utils.ts +77 -0
  127. package/src/follow/events/index.ts +10 -0
  128. package/src/follow/events/onFollowInfoUpdated.ts +43 -0
  129. package/src/follow/events/onFollowRequestAccepted.ts +19 -0
  130. package/src/follow/events/onFollowRequestCanceled.ts +19 -0
  131. package/src/follow/events/onFollowRequestDeclined.ts +19 -0
  132. package/src/follow/events/onFollowerDeleted.ts +19 -0
  133. package/src/follow/events/onFollowerRequested.ts +19 -0
  134. package/src/follow/events/onUserFollowed.ts +19 -0
  135. package/src/follow/events/onUserUnfollowed.ts +19 -0
  136. package/src/follow/events/utils.ts +38 -0
  137. package/src/follow/observers/index.ts +3 -0
  138. package/src/follow/observers/observeFollowInfo.ts +68 -0
  139. package/src/follow/observers/observeFollowers.ts +78 -0
  140. package/src/follow/observers/observeFollowings.ts +78 -0
  141. package/src/index.ts +4 -0
  142. package/src/post/api/queryPosts.ts +2 -2
@@ -0,0 +1,78 @@
1
+ import { getActiveClient } from '~/client/api'
2
+
3
+ import {
4
+ onFollowerRequested,
5
+ onFollowRequestAccepted,
6
+ onFollowRequestDeclined,
7
+ onFollowRequestCanceled,
8
+ onUserFollowed,
9
+ onUserUnfollowed,
10
+ onFollowerDeleted
11
+ } from '../events'
12
+
13
+ /**
14
+ * ```js
15
+ * import { observeFollowers } from '@amityco/ts-sdk'
16
+ *
17
+ * let followers = []
18
+ * const unsub = observeFollowers('userId', follower => merge(followers, follower))
19
+ * ```
20
+ *
21
+ * Observe all mutations on a list of followers {@link Amity.FollowStatus} for a given user
22
+ *
23
+ * @param userId the ID of the {@link Amity.User}
24
+ * @param callback the function to call when new data are available
25
+ * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
26
+ *
27
+ * @category Follow Observer
28
+ */
29
+ export const observeFollowers = <Events extends [
30
+ 'onRequested',
31
+ 'onAccepted',
32
+ 'onDeclined',
33
+ 'onCanceled',
34
+ 'onFollowed',
35
+ 'onUnfollowed',
36
+ 'onDeleted',
37
+ ]>(
38
+ userId: Amity.User['userId'],
39
+ callback: Amity.ObjectListener<Amity.FollowStatus, Events>
40
+ ): Amity.Unsubscriber => {
41
+ const { log } = getActiveClient()
42
+
43
+ const timestamp = Date.now()
44
+ log(`observeFollowers(tmpid: ${timestamp}) > listen`)
45
+
46
+ const disposers: Amity.Unsubscriber[] = []
47
+
48
+ const router = (
49
+ status: Amity.FollowStatus,
50
+ action: Events[number],
51
+ ) => {
52
+ if (status.from !== userId) {
53
+ return;
54
+ }
55
+
56
+ if (callback instanceof Function) {
57
+ return callback(status)
58
+ }
59
+
60
+ callback.onEvent?.(action, status)
61
+ callback[action]?.(status)
62
+ }
63
+
64
+ disposers.push(
65
+ onFollowerRequested(x => router(x, 'onRequested')),
66
+ onFollowRequestAccepted(x => router(x, 'onAccepted')),
67
+ onFollowRequestDeclined(x => router(x, 'onDeclined')),
68
+ onFollowRequestCanceled(x => router(x, 'onCanceled')),
69
+ onUserFollowed(x => router(x, 'onFollowed')),
70
+ onUserUnfollowed(x => router(x, 'onUnfollowed')),
71
+ onFollowerDeleted(x => router(x, 'onDeleted')),
72
+ )
73
+
74
+ return () => {
75
+ log(`observeFollowers(tmpid: ${timestamp}) > dispose`)
76
+ disposers.forEach(fn => fn())
77
+ }
78
+ }
@@ -0,0 +1,78 @@
1
+ import { getActiveClient } from '~/client/api'
2
+
3
+ import {
4
+ onFollowerRequested,
5
+ onFollowRequestAccepted,
6
+ onFollowRequestDeclined,
7
+ onFollowRequestCanceled,
8
+ onUserFollowed,
9
+ onUserUnfollowed,
10
+ onFollowerDeleted
11
+ } from '../events'
12
+
13
+ /**
14
+ * ```js
15
+ * import { observeFollowings } from '@amityco/ts-sdk'
16
+ *
17
+ * let followings = []
18
+ * const unsub = observeFollowers('userId', follower => merge(followings, following))
19
+ * ```
20
+ *
21
+ * Observe all mutations on a list of followings {@link Amity.FollowStatus} for a given user
22
+ *
23
+ * @param userId the ID of the {@link Amity.User}
24
+ * @param callback the function to call when new data are available
25
+ * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the messages
26
+ *
27
+ * @category Follow Observer
28
+ */
29
+ export const observeFollowings = <Events extends [
30
+ 'onRequested',
31
+ 'onAccepted',
32
+ 'onDeclined',
33
+ 'onCanceled',
34
+ 'onFollowed',
35
+ 'onUnfollowed',
36
+ 'onDeleted',
37
+ ]>(
38
+ userId: Amity.User['userId'],
39
+ callback: Amity.ObjectListener<Amity.FollowStatus, Events>
40
+ ): Amity.Unsubscriber => {
41
+ const { log } = getActiveClient()
42
+
43
+ const timestamp = Date.now()
44
+ log(`observeFollowings(tmpid: ${timestamp}) > listen`)
45
+
46
+ const disposers: Amity.Unsubscriber[] = []
47
+
48
+ const router = (
49
+ status: Amity.FollowStatus,
50
+ action: Events[number],
51
+ ) => {
52
+ if (status.to !== userId) {
53
+ return;
54
+ }
55
+
56
+ if (callback instanceof Function) {
57
+ return callback(status)
58
+ }
59
+
60
+ callback.onEvent?.(action, status)
61
+ callback[action]?.(status)
62
+ }
63
+
64
+ disposers.push(
65
+ onFollowerRequested(x => router(x, 'onRequested')),
66
+ onFollowRequestAccepted(x => router(x, 'onAccepted')),
67
+ onFollowRequestDeclined(x => router(x, 'onDeclined')),
68
+ onFollowRequestCanceled(x => router(x, 'onCanceled')),
69
+ onUserFollowed(x => router(x, 'onFollowed')),
70
+ onUserUnfollowed(x => router(x, 'onUnfollowed')),
71
+ onFollowerDeleted(x => router(x, 'onDeleted')),
72
+ )
73
+
74
+ return () => {
75
+ log(`observeFollowings(tmpid: ${timestamp}) > dispose`)
76
+ disposers.forEach(fn => fn())
77
+ }
78
+ }
package/src/index.ts CHANGED
@@ -44,6 +44,10 @@ export * from './community/observers'
44
44
 
45
45
  export * from './feed/api'
46
46
 
47
+ export * from './follow/api'
48
+ export * from './follow/events'
49
+ export * from './follow/observers'
50
+
47
51
  export * from './post/api'
48
52
  export * from './post/events'
49
53
  export * from './post/observers'
@@ -33,7 +33,7 @@ export const queryPosts = async (
33
33
  matchingOnlyParentPost?: boolean
34
34
  page?: Amity.PageRaw
35
35
  }
36
- ): Promise<Amity.Cached<Amity.Paged<Amity.Post>>> => {
36
+ ): Promise<Amity.Cached<Amity.Paged<Amity.Post, Amity.PageRaw>>> => {
37
37
  const client = getActiveClient()
38
38
  client.log('post/queryPosts', query)
39
39
 
@@ -87,7 +87,7 @@ export const queryPosts = async (
87
87
  */
88
88
  queryPosts.locally = (
89
89
  query: Parameters<typeof queryPosts>[0],
90
- ): Amity.Cached<Amity.Paged<Amity.Post>> | undefined => {
90
+ ): Amity.Cached<Amity.Paged<Amity.Post, Amity.PageRaw>> | undefined => {
91
91
  const client = getActiveClient()
92
92
  client.log('post/queryPosts.locally', query)
93
93