@stream-io/feeds-client 0.1.10 → 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 (152) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/@react-bindings/contexts/StreamFeedContext.d.ts +1 -1
  3. package/dist/@react-bindings/contexts/StreamFeedsContext.d.ts +1 -1
  4. package/dist/@react-bindings/hooks/feed-state-hooks/useComments.d.ts +1 -1
  5. package/dist/@react-bindings/hooks/feed-state-hooks/useFeedActivities.d.ts +1 -1
  6. package/dist/@react-bindings/hooks/feed-state-hooks/useFeedMetadata.d.ts +1 -1
  7. package/dist/@react-bindings/hooks/feed-state-hooks/useFollowers.d.ts +1 -1
  8. package/dist/@react-bindings/hooks/feed-state-hooks/useFollowing.d.ts +1 -1
  9. package/dist/@react-bindings/hooks/feed-state-hooks/useOwnCapabilities.d.ts +1 -1
  10. package/dist/@react-bindings/hooks/feed-state-hooks/useOwnFollows.d.ts +1 -1
  11. package/dist/@react-bindings/hooks/useCreateFeedsClient.d.ts +1 -1
  12. package/dist/@react-bindings/wrappers/StreamFeed.d.ts +1 -1
  13. package/dist/index-react-bindings.browser.cjs +1589 -1518
  14. package/dist/index-react-bindings.browser.cjs.map +1 -1
  15. package/dist/index-react-bindings.browser.js +1589 -1518
  16. package/dist/index-react-bindings.browser.js.map +1 -1
  17. package/dist/index-react-bindings.node.cjs +1589 -1518
  18. package/dist/index-react-bindings.node.cjs.map +1 -1
  19. package/dist/index-react-bindings.node.js +1589 -1518
  20. package/dist/index-react-bindings.node.js.map +1 -1
  21. package/dist/index.browser.cjs +1607 -1533
  22. package/dist/index.browser.cjs.map +1 -1
  23. package/dist/index.browser.js +1605 -1534
  24. package/dist/index.browser.js.map +1 -1
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.node.cjs +1607 -1533
  27. package/dist/index.node.cjs.map +1 -1
  28. package/dist/index.node.js +1605 -1534
  29. package/dist/index.node.js.map +1 -1
  30. package/dist/src/common/ActivitySearchSource.d.ts +1 -1
  31. package/dist/src/common/FeedSearchSource.d.ts +2 -2
  32. package/dist/src/common/Poll.d.ts +1 -1
  33. package/dist/src/common/UserSearchSource.d.ts +1 -1
  34. package/dist/src/common/real-time/StableWSConnection.d.ts +3 -3
  35. package/dist/src/feed/event-handlers/activity/handle-activity-added.d.ts +7 -0
  36. package/dist/src/feed/event-handlers/activity/handle-activity-deleted.d.ts +8 -0
  37. package/dist/src/feed/event-handlers/activity/handle-activity-reaction-added.d.ts +8 -0
  38. package/dist/src/feed/event-handlers/activity/handle-activity-reaction-deleted.d.ts +8 -0
  39. package/dist/src/feed/event-handlers/activity/handle-activity-removed-from-feed.d.ts +3 -0
  40. package/dist/src/feed/event-handlers/activity/handle-activity-updated.d.ts +8 -0
  41. package/dist/src/feed/event-handlers/activity/index.d.ts +6 -0
  42. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-added.d.ts +8 -0
  43. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-deleted.d.ts +9 -0
  44. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-updated.d.ts +8 -0
  45. package/dist/src/feed/event-handlers/bookmark/index.d.ts +3 -0
  46. package/dist/src/feed/event-handlers/comment/handle-comment-added.d.ts +3 -0
  47. package/dist/src/feed/event-handlers/comment/handle-comment-deleted.d.ts +3 -0
  48. package/dist/src/feed/event-handlers/comment/handle-comment-reaction.d.ts +3 -0
  49. package/dist/src/feed/event-handlers/comment/handle-comment-updated.d.ts +3 -0
  50. package/dist/src/feed/event-handlers/comment/index.d.ts +4 -0
  51. package/dist/src/feed/event-handlers/feed/handle-feed-updated.d.ts +3 -0
  52. package/dist/src/feed/event-handlers/feed/index.d.ts +1 -0
  53. package/dist/src/feed/event-handlers/feed-member/handle-feed-member-added.d.ts +3 -0
  54. package/dist/src/feed/event-handlers/feed-member/handle-feed-member-removed.d.ts +3 -0
  55. package/dist/src/feed/event-handlers/feed-member/handle-feed-member-updated.d.ts +3 -0
  56. package/dist/src/feed/event-handlers/feed-member/index.d.ts +3 -0
  57. package/dist/src/feed/event-handlers/follow/handle-follow-created.d.ts +7 -0
  58. package/dist/src/feed/event-handlers/follow/handle-follow-deleted.d.ts +7 -0
  59. package/dist/src/feed/event-handlers/follow/handle-follow-updated.d.ts +3 -0
  60. package/dist/src/feed/event-handlers/follow/index.d.ts +3 -0
  61. package/dist/src/feed/event-handlers/index.d.ts +7 -0
  62. package/dist/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts +3 -0
  63. package/dist/src/feed/event-handlers/notification-feed/index.d.ts +1 -0
  64. package/dist/src/{Feed.d.ts → feed/feed.d.ts} +15 -34
  65. package/dist/src/feed/index.d.ts +2 -0
  66. package/dist/src/{FeedsClient.d.ts → feeds-client.d.ts} +6 -5
  67. package/dist/src/gen/models/index.d.ts +5 -0
  68. package/dist/src/gen-imports.d.ts +1 -1
  69. package/dist/src/test-utils/index.d.ts +1 -0
  70. package/dist/src/test-utils/response-generators.d.ts +9 -0
  71. package/dist/src/types-internal.d.ts +7 -0
  72. package/dist/src/types.d.ts +1 -1
  73. package/dist/src/utils/check-has-another-page.d.ts +1 -0
  74. package/dist/src/utils/constants.d.ts +3 -0
  75. package/dist/src/utils/index.d.ts +5 -0
  76. package/dist/src/utils/state-update-queue.d.ts +6 -0
  77. package/dist/src/utils/type-assertions.d.ts +7 -0
  78. package/dist/src/utils/unique-array-merge.d.ts +1 -0
  79. package/dist/tsconfig.tsbuildinfo +1 -1
  80. package/index.ts +2 -2
  81. package/package.json +2 -1
  82. package/src/common/ActivitySearchSource.ts +1 -1
  83. package/src/common/FeedSearchSource.ts +2 -2
  84. package/src/common/Poll.ts +1 -1
  85. package/src/common/UserSearchSource.ts +1 -1
  86. package/src/{state-updates → feed/event-handlers/activity}/activity-reaction-utils.test.ts +12 -2
  87. package/src/{state-updates → feed/event-handlers/activity}/activity-utils.test.ts +3 -2
  88. package/src/{state-updates/activity-utils.ts → feed/event-handlers/activity/handle-activity-added.ts} +16 -36
  89. package/src/feed/event-handlers/activity/handle-activity-deleted.ts +30 -0
  90. package/src/feed/event-handlers/activity/handle-activity-reaction-added.ts +67 -0
  91. package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.ts +75 -0
  92. package/src/feed/event-handlers/activity/handle-activity-removed-from-feed.ts +16 -0
  93. package/src/feed/event-handlers/activity/handle-activity-updated.ts +47 -0
  94. package/src/feed/event-handlers/activity/index.ts +6 -0
  95. package/src/{state-updates → feed/event-handlers/bookmark}/bookmark-utils.test.ts +2 -2
  96. package/src/feed/event-handlers/bookmark/handle-bookmark-added.ts +63 -0
  97. package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.ts +84 -0
  98. package/src/feed/event-handlers/bookmark/handle-bookmark-updated.ts +76 -0
  99. package/src/feed/event-handlers/bookmark/index.ts +3 -0
  100. package/src/feed/event-handlers/comment/handle-comment-added.ts +38 -0
  101. package/src/feed/event-handlers/comment/handle-comment-deleted.ts +35 -0
  102. package/src/feed/event-handlers/comment/handle-comment-reaction.ts +61 -0
  103. package/src/feed/event-handlers/comment/handle-comment-updated.ts +35 -0
  104. package/src/feed/event-handlers/comment/index.ts +4 -0
  105. package/src/feed/event-handlers/feed/handle-feed-updated.ts +9 -0
  106. package/src/feed/event-handlers/feed/index.ts +1 -0
  107. package/src/feed/event-handlers/feed-member/handle-feed-member-added.ts +31 -0
  108. package/src/feed/event-handlers/feed-member/handle-feed-member-removed.ts +24 -0
  109. package/src/feed/event-handlers/feed-member/handle-feed-member-updated.ts +40 -0
  110. package/src/feed/event-handlers/feed-member/index.ts +3 -0
  111. package/src/feed/event-handlers/follow/handle-follow-created.test.ts +246 -0
  112. package/src/feed/event-handlers/follow/handle-follow-created.ts +93 -0
  113. package/src/feed/event-handlers/follow/handle-follow-deleted.test.ts +264 -0
  114. package/src/feed/event-handlers/follow/handle-follow-deleted.ts +95 -0
  115. package/src/feed/event-handlers/follow/handle-follow-updated.test.ts +174 -0
  116. package/src/feed/event-handlers/follow/handle-follow-updated.ts +88 -0
  117. package/src/feed/event-handlers/follow/index.ts +3 -0
  118. package/src/feed/event-handlers/index.ts +7 -0
  119. package/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.ts +10 -0
  120. package/src/feed/event-handlers/notification-feed/index.ts +1 -0
  121. package/src/{Feed.ts → feed/feed.ts} +72 -483
  122. package/src/feed/index.ts +2 -0
  123. package/src/{FeedsClient.ts → feeds-client.ts} +26 -8
  124. package/src/gen/model-decoders/decoders.ts +7 -0
  125. package/src/gen/models/index.ts +10 -0
  126. package/src/gen-imports.ts +1 -1
  127. package/src/test-utils/index.ts +1 -0
  128. package/src/test-utils/response-generators.ts +102 -0
  129. package/src/types-internal.ts +11 -0
  130. package/src/types.ts +1 -1
  131. package/src/utils/check-has-another-page.ts +6 -0
  132. package/src/utils/constants.ts +3 -0
  133. package/src/utils/index.ts +5 -0
  134. package/src/{state-updates → utils}/state-update-queue.test.ts +6 -6
  135. package/src/utils/state-update-queue.ts +42 -0
  136. package/src/utils/type-assertions.ts +22 -0
  137. package/src/{utils.test.ts → utils/unique-array-merge.test.ts} +7 -3
  138. package/src/utils/unique-array-merge.ts +19 -0
  139. package/dist/src/state-updates/activity-reaction-utils.d.ts +0 -10
  140. package/dist/src/state-updates/activity-utils.d.ts +0 -13
  141. package/dist/src/state-updates/bookmark-utils.d.ts +0 -14
  142. package/dist/src/state-updates/follow-utils.d.ts +0 -19
  143. package/dist/src/state-updates/state-update-queue.d.ts +0 -15
  144. package/dist/src/utils.d.ts +0 -10
  145. package/src/state-updates/activity-reaction-utils.ts +0 -107
  146. package/src/state-updates/bookmark-utils.ts +0 -167
  147. package/src/state-updates/follow-utils.test.ts +0 -552
  148. package/src/state-updates/follow-utils.ts +0 -126
  149. package/src/state-updates/state-update-queue.ts +0 -35
  150. package/src/utils.ts +0 -48
  151. /package/dist/src/{ModerationClient.d.ts → moderation-client.d.ts} +0 -0
  152. /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
- };