@stream-io/feeds-client 0.1.9 → 0.1.11

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 (167) hide show
  1. package/@react-bindings/hooks/search-state-hooks/index.ts +3 -0
  2. package/@react-bindings/index.ts +5 -0
  3. package/CHANGELOG.md +20 -0
  4. package/dist/@react-bindings/contexts/StreamFeedContext.d.ts +1 -1
  5. package/dist/@react-bindings/contexts/StreamFeedsContext.d.ts +1 -1
  6. package/dist/@react-bindings/contexts/StreamSearchContext.d.ts +12 -0
  7. package/dist/@react-bindings/contexts/StreamSearchResultsContext.d.ts +12 -0
  8. package/dist/@react-bindings/hooks/feed-state-hooks/useComments.d.ts +1 -1
  9. package/dist/@react-bindings/hooks/feed-state-hooks/useFeedActivities.d.ts +1 -1
  10. package/dist/@react-bindings/hooks/feed-state-hooks/useFeedMetadata.d.ts +1 -1
  11. package/dist/@react-bindings/hooks/feed-state-hooks/useFollowers.d.ts +1 -1
  12. package/dist/@react-bindings/hooks/feed-state-hooks/useFollowing.d.ts +1 -1
  13. package/dist/@react-bindings/hooks/feed-state-hooks/useOwnCapabilities.d.ts +1 -1
  14. package/dist/@react-bindings/hooks/feed-state-hooks/useOwnFollows.d.ts +1 -1
  15. package/dist/@react-bindings/hooks/search-state-hooks/index.d.ts +3 -0
  16. package/dist/@react-bindings/hooks/search-state-hooks/useSearchQuery.d.ts +4 -0
  17. package/dist/@react-bindings/hooks/search-state-hooks/useSearchResult.d.ts +8 -0
  18. package/dist/@react-bindings/hooks/search-state-hooks/useSearchSources.d.ts +4 -0
  19. package/dist/@react-bindings/hooks/useCreateFeedsClient.d.ts +1 -1
  20. package/dist/@react-bindings/index.d.ts +5 -0
  21. package/dist/@react-bindings/wrappers/StreamFeed.d.ts +1 -1
  22. package/dist/@react-bindings/wrappers/StreamSearch.d.ts +12 -0
  23. package/dist/@react-bindings/wrappers/StreamSearchResults.d.ts +12 -0
  24. package/dist/index-react-bindings.browser.cjs +1669 -1529
  25. package/dist/index-react-bindings.browser.cjs.map +1 -1
  26. package/dist/index-react-bindings.browser.js +1661 -1530
  27. package/dist/index-react-bindings.browser.js.map +1 -1
  28. package/dist/index-react-bindings.node.cjs +1669 -1529
  29. package/dist/index-react-bindings.node.cjs.map +1 -1
  30. package/dist/index-react-bindings.node.js +1661 -1530
  31. package/dist/index-react-bindings.node.js.map +1 -1
  32. package/dist/index.browser.cjs +1615 -1640
  33. package/dist/index.browser.cjs.map +1 -1
  34. package/dist/index.browser.js +1613 -1641
  35. package/dist/index.browser.js.map +1 -1
  36. package/dist/index.d.ts +2 -2
  37. package/dist/index.node.cjs +1615 -1640
  38. package/dist/index.node.cjs.map +1 -1
  39. package/dist/index.node.js +1613 -1641
  40. package/dist/index.node.js.map +1 -1
  41. package/dist/src/common/ActivitySearchSource.d.ts +1 -1
  42. package/dist/src/common/BaseSearchSource.d.ts +3 -1
  43. package/dist/src/common/FeedSearchSource.d.ts +7 -3
  44. package/dist/src/common/Poll.d.ts +1 -1
  45. package/dist/src/common/SearchController.d.ts +2 -0
  46. package/dist/src/common/UserSearchSource.d.ts +1 -1
  47. package/dist/src/common/real-time/StableWSConnection.d.ts +3 -3
  48. package/dist/src/feed/event-handlers/activity/handle-activity-added.d.ts +7 -0
  49. package/dist/src/feed/event-handlers/activity/handle-activity-deleted.d.ts +8 -0
  50. package/dist/src/feed/event-handlers/activity/handle-activity-reaction-added.d.ts +8 -0
  51. package/dist/src/feed/event-handlers/activity/handle-activity-reaction-deleted.d.ts +8 -0
  52. package/dist/src/feed/event-handlers/activity/handle-activity-removed-from-feed.d.ts +3 -0
  53. package/dist/src/feed/event-handlers/activity/handle-activity-updated.d.ts +8 -0
  54. package/dist/src/feed/event-handlers/activity/index.d.ts +6 -0
  55. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-added.d.ts +8 -0
  56. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-deleted.d.ts +9 -0
  57. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-updated.d.ts +8 -0
  58. package/dist/src/feed/event-handlers/bookmark/index.d.ts +3 -0
  59. package/dist/src/feed/event-handlers/comment/handle-comment-added.d.ts +3 -0
  60. package/dist/src/feed/event-handlers/comment/handle-comment-deleted.d.ts +3 -0
  61. package/dist/src/feed/event-handlers/comment/handle-comment-reaction.d.ts +3 -0
  62. package/dist/src/feed/event-handlers/comment/handle-comment-updated.d.ts +3 -0
  63. package/dist/src/feed/event-handlers/comment/index.d.ts +4 -0
  64. package/dist/src/feed/event-handlers/feed/handle-feed-updated.d.ts +3 -0
  65. package/dist/src/feed/event-handlers/feed/index.d.ts +1 -0
  66. package/dist/src/feed/event-handlers/feed-member/handle-feed-member-added.d.ts +3 -0
  67. package/dist/src/feed/event-handlers/feed-member/handle-feed-member-removed.d.ts +3 -0
  68. package/dist/src/feed/event-handlers/feed-member/handle-feed-member-updated.d.ts +3 -0
  69. package/dist/src/feed/event-handlers/feed-member/index.d.ts +3 -0
  70. package/dist/src/feed/event-handlers/follow/handle-follow-created.d.ts +7 -0
  71. package/dist/src/feed/event-handlers/follow/handle-follow-deleted.d.ts +7 -0
  72. package/dist/src/feed/event-handlers/follow/handle-follow-updated.d.ts +3 -0
  73. package/dist/src/feed/event-handlers/follow/index.d.ts +3 -0
  74. package/dist/src/feed/event-handlers/index.d.ts +7 -0
  75. package/dist/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts +3 -0
  76. package/dist/src/feed/event-handlers/notification-feed/index.d.ts +1 -0
  77. package/dist/src/{Feed.d.ts → feed/feed.d.ts} +15 -34
  78. package/dist/src/feed/index.d.ts +2 -0
  79. package/dist/src/{FeedsClient.d.ts → feeds-client.d.ts} +6 -5
  80. package/dist/src/gen/models/index.d.ts +5 -0
  81. package/dist/src/gen-imports.d.ts +1 -1
  82. package/dist/src/test-utils/index.d.ts +1 -0
  83. package/dist/src/test-utils/response-generators.d.ts +9 -0
  84. package/dist/src/types-internal.d.ts +7 -0
  85. package/dist/src/types.d.ts +1 -1
  86. package/dist/src/utils/check-has-another-page.d.ts +1 -0
  87. package/dist/src/utils/constants.d.ts +3 -0
  88. package/dist/src/utils/index.d.ts +5 -0
  89. package/dist/src/utils/state-update-queue.d.ts +6 -0
  90. package/dist/src/utils/type-assertions.d.ts +7 -0
  91. package/dist/src/utils/unique-array-merge.d.ts +1 -0
  92. package/dist/tsconfig.tsbuildinfo +1 -1
  93. package/index.ts +2 -2
  94. package/package.json +2 -1
  95. package/src/common/ActivitySearchSource.ts +6 -16
  96. package/src/common/BaseSearchSource.ts +9 -9
  97. package/src/common/FeedSearchSource.ts +22 -67
  98. package/src/common/Poll.ts +1 -1
  99. package/src/common/SearchController.ts +2 -0
  100. package/src/common/UserSearchSource.ts +10 -62
  101. package/src/{state-updates → feed/event-handlers/activity}/activity-reaction-utils.test.ts +12 -2
  102. package/src/{state-updates → feed/event-handlers/activity}/activity-utils.test.ts +3 -2
  103. package/src/{state-updates/activity-utils.ts → feed/event-handlers/activity/handle-activity-added.ts} +16 -36
  104. package/src/feed/event-handlers/activity/handle-activity-deleted.ts +30 -0
  105. package/src/feed/event-handlers/activity/handle-activity-reaction-added.ts +67 -0
  106. package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.ts +75 -0
  107. package/src/feed/event-handlers/activity/handle-activity-removed-from-feed.ts +16 -0
  108. package/src/feed/event-handlers/activity/handle-activity-updated.ts +47 -0
  109. package/src/feed/event-handlers/activity/index.ts +6 -0
  110. package/src/{state-updates → feed/event-handlers/bookmark}/bookmark-utils.test.ts +2 -2
  111. package/src/feed/event-handlers/bookmark/handle-bookmark-added.ts +63 -0
  112. package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.ts +84 -0
  113. package/src/feed/event-handlers/bookmark/handle-bookmark-updated.ts +76 -0
  114. package/src/feed/event-handlers/bookmark/index.ts +3 -0
  115. package/src/feed/event-handlers/comment/handle-comment-added.ts +38 -0
  116. package/src/feed/event-handlers/comment/handle-comment-deleted.ts +35 -0
  117. package/src/feed/event-handlers/comment/handle-comment-reaction.ts +61 -0
  118. package/src/feed/event-handlers/comment/handle-comment-updated.ts +35 -0
  119. package/src/feed/event-handlers/comment/index.ts +4 -0
  120. package/src/feed/event-handlers/feed/handle-feed-updated.ts +9 -0
  121. package/src/feed/event-handlers/feed/index.ts +1 -0
  122. package/src/feed/event-handlers/feed-member/handle-feed-member-added.ts +31 -0
  123. package/src/feed/event-handlers/feed-member/handle-feed-member-removed.ts +24 -0
  124. package/src/feed/event-handlers/feed-member/handle-feed-member-updated.ts +40 -0
  125. package/src/feed/event-handlers/feed-member/index.ts +3 -0
  126. package/src/feed/event-handlers/follow/handle-follow-created.test.ts +246 -0
  127. package/src/feed/event-handlers/follow/handle-follow-created.ts +93 -0
  128. package/src/feed/event-handlers/follow/handle-follow-deleted.test.ts +264 -0
  129. package/src/feed/event-handlers/follow/handle-follow-deleted.ts +95 -0
  130. package/src/feed/event-handlers/follow/handle-follow-updated.test.ts +174 -0
  131. package/src/feed/event-handlers/follow/handle-follow-updated.ts +88 -0
  132. package/src/feed/event-handlers/follow/index.ts +3 -0
  133. package/src/feed/event-handlers/index.ts +7 -0
  134. package/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.ts +10 -0
  135. package/src/feed/event-handlers/notification-feed/index.ts +1 -0
  136. package/src/{Feed.ts → feed/feed.ts} +72 -483
  137. package/src/feed/index.ts +2 -0
  138. package/src/{FeedsClient.ts → feeds-client.ts} +26 -8
  139. package/src/gen/model-decoders/decoders.ts +7 -0
  140. package/src/gen/models/index.ts +10 -0
  141. package/src/gen-imports.ts +1 -1
  142. package/src/test-utils/index.ts +1 -0
  143. package/src/test-utils/response-generators.ts +102 -0
  144. package/src/types-internal.ts +11 -0
  145. package/src/types.ts +1 -1
  146. package/src/utils/check-has-another-page.ts +6 -0
  147. package/src/utils/constants.ts +3 -0
  148. package/src/utils/index.ts +5 -0
  149. package/src/{state-updates → utils}/state-update-queue.test.ts +6 -6
  150. package/src/utils/state-update-queue.ts +42 -0
  151. package/src/utils/type-assertions.ts +22 -0
  152. package/src/{utils.test.ts → utils/unique-array-merge.test.ts} +7 -3
  153. package/src/utils/unique-array-merge.ts +19 -0
  154. package/dist/src/state-updates/activity-reaction-utils.d.ts +0 -10
  155. package/dist/src/state-updates/activity-utils.d.ts +0 -13
  156. package/dist/src/state-updates/bookmark-utils.d.ts +0 -14
  157. package/dist/src/state-updates/follow-utils.d.ts +0 -19
  158. package/dist/src/state-updates/state-update-queue.d.ts +0 -15
  159. package/dist/src/utils.d.ts +0 -10
  160. package/src/state-updates/activity-reaction-utils.ts +0 -107
  161. package/src/state-updates/bookmark-utils.ts +0 -167
  162. package/src/state-updates/follow-utils.test.ts +0 -552
  163. package/src/state-updates/follow-utils.ts +0 -126
  164. package/src/state-updates/state-update-queue.ts +0 -35
  165. package/src/utils.ts +0 -48
  166. /package/dist/src/{ModerationClient.d.ts → moderation-client.d.ts} +0 -0
  167. /package/src/{ModerationClient.ts → moderation-client.ts} +0 -0
@@ -1,126 +0,0 @@
1
- import { FeedState } from '../Feed';
2
- import { FollowResponse, FeedResponse } from '../gen/models';
3
- import { UpdateStateResult } from '../types-internal';
4
-
5
- const isFeedResponse = (
6
- follow: FeedResponse | { fid: string },
7
- ): follow is FeedResponse => {
8
- return 'created_by' in follow;
9
- };
10
-
11
- export const handleFollowCreated = (
12
- follow: FollowResponse,
13
- currentState: FeedState,
14
- currentFeedId: string,
15
- connectedUserId?: string,
16
- ): UpdateStateResult<{ data: FeedState }> => {
17
- // filter non-accepted follows (the way getOrCreate does by default)
18
- if (follow.status !== 'accepted') {
19
- return { changed: false, data: currentState };
20
- }
21
-
22
- let newState: FeedState = { ...currentState };
23
-
24
- // this feed followed someone
25
- if (follow.source_feed.fid === currentFeedId) {
26
- newState = {
27
- ...newState,
28
- // Update FeedResponse fields, that has the new follower/following count
29
- ...follow.source_feed,
30
- };
31
-
32
- // Only update if following array already exists
33
- if (currentState.following !== undefined) {
34
- newState.following = [follow, ...currentState.following];
35
- }
36
- } else if (
37
- // someone followed this feed
38
- follow.target_feed.fid === currentFeedId
39
- ) {
40
- const source = follow.source_feed;
41
-
42
- newState = {
43
- ...newState,
44
- // Update FeedResponse fields, that has the new follower/following count
45
- ...follow.target_feed,
46
- };
47
-
48
- if (source.created_by.id === connectedUserId) {
49
- newState.own_follows = currentState.own_follows
50
- ? currentState.own_follows.concat(follow)
51
- : [follow];
52
- }
53
-
54
- // Only update if followers array already exists
55
- if (currentState.followers !== undefined) {
56
- newState.followers = [follow, ...currentState.followers];
57
- }
58
- }
59
-
60
- return { changed: true, data: newState };
61
- };
62
-
63
- export const handleFollowDeleted = (
64
- follow:
65
- | FollowResponse
66
- | { source_feed: { fid: string }; target_feed: { fid: string } },
67
- currentState: FeedState,
68
- currentFeedId: string,
69
- connectedUserId?: string,
70
- ): UpdateStateResult<{ data: FeedState }> => {
71
- let newState: FeedState = { ...currentState };
72
-
73
- // this feed unfollowed someone
74
- if (follow.source_feed.fid === currentFeedId) {
75
- newState = {
76
- ...newState,
77
- // Update FeedResponse fields, that has the new follower/following count
78
- ...follow.source_feed,
79
- };
80
-
81
- // Only update if following array already exists
82
- if (currentState.following !== undefined) {
83
- newState.following = currentState.following.filter(
84
- (followItem) => followItem.target_feed.fid !== follow.target_feed.fid,
85
- );
86
- }
87
- } else if (
88
- // someone unfollowed this feed
89
- follow.target_feed.fid === currentFeedId
90
- ) {
91
- const source = follow.source_feed;
92
-
93
- newState = {
94
- ...newState,
95
- // Update FeedResponse fields, that has the new follower/following count
96
- ...follow.target_feed,
97
- };
98
-
99
- if (
100
- isFeedResponse(source) &&
101
- source.created_by.id === connectedUserId &&
102
- currentState.own_follows !== undefined
103
- ) {
104
- newState.own_follows = currentState.own_follows.filter(
105
- (followItem) => followItem.source_feed.fid !== follow.source_feed.fid,
106
- );
107
- }
108
-
109
- // Only update if followers array already exists
110
- if (currentState.followers !== undefined) {
111
- newState.followers = currentState.followers.filter(
112
- (followItem) => followItem.source_feed.fid !== follow.source_feed.fid,
113
- );
114
- }
115
- }
116
-
117
- return { changed: true, data: newState };
118
- };
119
-
120
- export const handleFollowUpdated = (
121
- currentState: FeedState,
122
- ): UpdateStateResult<{ data: FeedState }> => {
123
- // For now, we'll treat follow updates as no-ops since the current implementation does
124
- // This can be enhanced later if needed
125
- return { changed: false, data: currentState };
126
- };
@@ -1,35 +0,0 @@
1
- import { FollowResponse } from '../gen/models';
2
-
3
- export const shouldUpdateState = ({
4
- stateUpdateId,
5
- stateUpdateQueue,
6
- watch,
7
- }: {
8
- stateUpdateId: string;
9
- stateUpdateQueue: Set<string>;
10
- watch: boolean;
11
- }) => {
12
- if (!watch) {
13
- return true;
14
- }
15
-
16
- if (watch && stateUpdateQueue.has(stateUpdateId)) {
17
- stateUpdateQueue.delete(stateUpdateId);
18
- return false;
19
- }
20
-
21
- stateUpdateQueue.add(stateUpdateId);
22
- return true;
23
- };
24
-
25
- export const getStateUpdateQueueIdForFollow = (follow: FollowResponse) => {
26
- return `follow${follow.source_feed.fid}-${follow.target_feed.fid}`;
27
- };
28
-
29
- export const getStateUpdateQueueIdForUnfollow = (
30
- follow:
31
- | FollowResponse
32
- | { source_feed: { fid: string }; target_feed: { fid: string } },
33
- ) => {
34
- return `unfollow${follow.source_feed.fid}-${follow.target_feed.fid}`;
35
- };
package/src/utils.ts DELETED
@@ -1,48 +0,0 @@
1
- import { CommentParent, StreamFile } from './types';
2
- import type { CommentResponse } from './gen/models';
3
-
4
- export const isImageFile = (file: StreamFile) => {
5
- // photoshop files begin with 'image/'
6
- return file.type.startsWith('image/') && !file.type.endsWith('.photoshop');
7
- };
8
-
9
- export const isVideoFile = (file: StreamFile) => {
10
- return file.type.startsWith('video/');
11
- };
12
-
13
- export const checkHasAnotherPage = <T extends unknown | undefined>(
14
- v: T,
15
- cursor: string | undefined,
16
- ) =>
17
- (typeof v === 'undefined' && typeof cursor === 'undefined') ||
18
- typeof cursor === 'string';
19
-
20
- export const isCommentResponse = (
21
- entity: CommentParent,
22
- ): entity is CommentResponse => {
23
- return typeof (entity as CommentResponse)?.object_id === 'string';
24
- };
25
-
26
- export const Constants = {
27
- DEFAULT_COMMENT_PAGINATION: 'first',
28
- } as const;
29
-
30
- export const uniqueArrayMerge = <T>(
31
- existingArray: T[],
32
- arrayToMerge: T[],
33
- getKey: (v: T) => string,
34
- ) => {
35
- const existing = new Set<string>();
36
-
37
- existingArray.forEach((value) => {
38
- const key = getKey(value);
39
- existing.add(key);
40
- });
41
-
42
- const filteredArrayToMerge = arrayToMerge.filter((value) => {
43
- const key = getKey(value);
44
- return !existing.has(key);
45
- });
46
-
47
- return existingArray.concat(filteredArrayToMerge);
48
- };