@stream-io/feeds-client 0.1.11 → 0.2.1

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 (87) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/index-react-bindings.browser.cjs +537 -331
  3. package/dist/index-react-bindings.browser.cjs.map +1 -1
  4. package/dist/index-react-bindings.browser.js +537 -331
  5. package/dist/index-react-bindings.browser.js.map +1 -1
  6. package/dist/index-react-bindings.node.cjs +537 -331
  7. package/dist/index-react-bindings.node.cjs.map +1 -1
  8. package/dist/index-react-bindings.node.js +537 -331
  9. package/dist/index-react-bindings.node.js.map +1 -1
  10. package/dist/index.browser.cjs +536 -329
  11. package/dist/index.browser.cjs.map +1 -1
  12. package/dist/index.browser.js +536 -330
  13. package/dist/index.browser.js.map +1 -1
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.node.cjs +536 -329
  16. package/dist/index.node.cjs.map +1 -1
  17. package/dist/index.node.js +536 -330
  18. package/dist/index.node.js.map +1 -1
  19. package/dist/src/feed/event-handlers/activity/handle-activity-deleted.d.ts +12 -3
  20. package/dist/src/feed/event-handlers/activity/handle-activity-pinned.d.ts +3 -0
  21. package/dist/src/feed/event-handlers/activity/handle-activity-reaction-added.d.ts +10 -6
  22. package/dist/src/feed/event-handlers/activity/handle-activity-reaction-deleted.d.ts +10 -6
  23. package/dist/src/feed/event-handlers/activity/handle-activity-unpinned.d.ts +3 -0
  24. package/dist/src/feed/event-handlers/activity/handle-activity-updated.d.ts +7 -3
  25. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-added.d.ts +10 -6
  26. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-deleted.d.ts +10 -6
  27. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-updated.d.ts +10 -6
  28. package/dist/src/feed/event-handlers/index.d.ts +1 -0
  29. package/dist/src/feed/event-handlers/watch/handle-watch-started.d.ts +2 -0
  30. package/dist/src/feed/event-handlers/watch/handle-watch-stopped.d.ts +2 -0
  31. package/dist/src/feed/event-handlers/watch/index.d.ts +2 -0
  32. package/dist/src/feed/feed.d.ts +4 -12
  33. package/dist/src/feeds-client/event-handlers/index.d.ts +1 -0
  34. package/dist/src/feeds-client/event-handlers/user/handle-user-updated.d.ts +3 -0
  35. package/dist/src/{feeds-client.d.ts → feeds-client/feeds-client.d.ts} +16 -16
  36. package/dist/src/feeds-client/index.d.ts +2 -0
  37. package/dist/src/gen/feeds/FeedsApi.d.ts +27 -23
  38. package/dist/src/gen/models/index.d.ts +198 -23
  39. package/dist/src/test-utils/response-generators.d.ts +46 -1
  40. package/dist/src/utils/index.d.ts +1 -0
  41. package/dist/src/utils/update-entity-in-array.d.ts +27 -0
  42. package/dist/tsconfig.tsbuildinfo +1 -1
  43. package/index.ts +1 -1
  44. package/package.json +2 -2
  45. package/src/feed/event-handlers/activity/activity-reaction-utils.test.ts +108 -96
  46. package/src/feed/event-handlers/activity/activity-utils.test.ts +84 -122
  47. package/src/feed/event-handlers/activity/handle-activity-deleted.ts +43 -10
  48. package/src/feed/event-handlers/activity/handle-activity-pinned.test.ts +60 -0
  49. package/src/feed/event-handlers/activity/handle-activity-pinned.ts +30 -0
  50. package/src/feed/event-handlers/activity/handle-activity-reaction-added.test.ts +157 -0
  51. package/src/feed/event-handlers/activity/handle-activity-reaction-added.ts +82 -40
  52. package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.test.ts +200 -0
  53. package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.ts +89 -51
  54. package/src/feed/event-handlers/activity/handle-activity-unpinned.test.ts +94 -0
  55. package/src/feed/event-handlers/activity/handle-activity-unpinned.ts +30 -0
  56. package/src/feed/event-handlers/activity/handle-activity-updated.test.ts +115 -0
  57. package/src/feed/event-handlers/activity/handle-activity-updated.ts +73 -35
  58. package/src/feed/event-handlers/bookmark/bookmark-utils.test.ts +121 -109
  59. package/src/feed/event-handlers/bookmark/handle-bookmark-added.test.ts +178 -0
  60. package/src/feed/event-handlers/bookmark/handle-bookmark-added.ts +82 -39
  61. package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.test.ts +188 -0
  62. package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.ts +86 -48
  63. package/src/feed/event-handlers/bookmark/handle-bookmark-updated.test.ts +196 -0
  64. package/src/feed/event-handlers/bookmark/handle-bookmark-updated.ts +83 -44
  65. package/src/feed/event-handlers/follow/handle-follow-created.test.ts +16 -12
  66. package/src/feed/event-handlers/follow/handle-follow-created.ts +4 -7
  67. package/src/feed/event-handlers/follow/handle-follow-deleted.test.ts +19 -15
  68. package/src/feed/event-handlers/follow/handle-follow-deleted.ts +6 -6
  69. package/src/feed/event-handlers/follow/handle-follow-updated.ts +7 -10
  70. package/src/feed/event-handlers/index.ts +2 -1
  71. package/src/feed/event-handlers/watch/handle-watch-started.ts +5 -0
  72. package/src/feed/event-handlers/watch/handle-watch-stopped.ts +5 -0
  73. package/src/feed/event-handlers/watch/index.ts +2 -0
  74. package/src/feed/feed.ts +15 -33
  75. package/src/feeds-client/event-handlers/index.ts +1 -0
  76. package/src/feeds-client/event-handlers/user/handle-user-updated.test.ts +53 -0
  77. package/src/feeds-client/event-handlers/user/handle-user-updated.ts +28 -0
  78. package/src/{feeds-client.ts → feeds-client/feeds-client.ts} +48 -39
  79. package/src/feeds-client/index.ts +2 -0
  80. package/src/gen/feeds/FeedsApi.ts +164 -138
  81. package/src/gen/model-decoders/decoders.ts +28 -0
  82. package/src/gen/models/index.ts +349 -29
  83. package/src/gen/moderation/ModerationApi.ts +1 -0
  84. package/src/test-utils/response-generators.ts +270 -11
  85. package/src/utils/index.ts +1 -0
  86. package/src/utils/state-update-queue.ts +1 -1
  87. package/src/utils/update-entity-in-array.ts +51 -0
@@ -1,76 +1,115 @@
1
1
  import type { Feed } from '../../../feed';
2
2
  import type {
3
+ ActivityPinResponse,
3
4
  ActivityResponse,
4
5
  BookmarkUpdatedEvent,
5
6
  } from '../../../gen/models';
6
- import type { EventPayload, UpdateStateResult } from '../../../types-internal';
7
+ import type { EventPayload } from '../../../types-internal';
8
+ import { updateEntityInArray } from '../../../utils';
7
9
 
8
- import { updateActivityInState } from '../activity';
9
10
  import { isSameBookmark } from './handle-bookmark-deleted';
10
11
 
11
- export const updateBookmarkInActivity = (
12
- event: BookmarkUpdatedEvent,
13
- activity: ActivityResponse,
14
- isCurrentUser: boolean,
15
- ): UpdateStateResult<ActivityResponse> => {
16
- // Update own_bookmarks if the bookmark is from the current user
17
- let ownBookmarks = activity.own_bookmarks || [];
18
- if (isCurrentUser) {
19
- const bookmarkIndex = ownBookmarks.findIndex((bookmark) =>
12
+ const sharedUpdateActivity = ({
13
+ currentActivity,
14
+ event,
15
+ eventBelongsToCurrentUser,
16
+ }: {
17
+ currentActivity: ActivityResponse;
18
+ event: BookmarkUpdatedEvent;
19
+ eventBelongsToCurrentUser: boolean;
20
+ }): ActivityResponse => {
21
+ let newOwnBookmarks = currentActivity.own_bookmarks;
22
+
23
+ if (eventBelongsToCurrentUser) {
24
+ const bookmarkIndex = newOwnBookmarks.findIndex((bookmark) =>
20
25
  isSameBookmark(bookmark, event.bookmark),
21
26
  );
27
+
22
28
  if (bookmarkIndex !== -1) {
23
- ownBookmarks = [...ownBookmarks];
24
- ownBookmarks[bookmarkIndex] = event.bookmark;
29
+ newOwnBookmarks = [...newOwnBookmarks];
30
+ newOwnBookmarks[bookmarkIndex] = event.bookmark;
25
31
  }
26
32
  }
27
33
 
28
34
  return {
29
- ...activity,
30
- own_bookmarks: ownBookmarks,
31
- changed: true,
35
+ ...event.bookmark.activity,
36
+ own_bookmarks: newOwnBookmarks,
37
+ own_reactions: currentActivity.own_reactions,
32
38
  };
33
39
  };
34
40
 
35
41
  export const updateBookmarkInActivities = (
36
42
  event: BookmarkUpdatedEvent,
37
43
  activities: ActivityResponse[] | undefined,
38
- isCurrentUser: boolean,
39
- ): UpdateStateResult<{ activities: ActivityResponse[] }> => {
40
- if (!activities) {
41
- return { changed: false, activities: [] };
42
- }
44
+ eventBelongsToCurrentUser: boolean,
45
+ ) =>
46
+ updateEntityInArray({
47
+ entities: activities,
48
+ matcher: (activity) => activity.id === event.bookmark.activity.id,
49
+ updater: (matchedActivity) =>
50
+ sharedUpdateActivity({
51
+ currentActivity: matchedActivity,
52
+ event,
53
+ eventBelongsToCurrentUser,
54
+ }),
55
+ });
43
56
 
44
- const activityIndex = activities.findIndex(
45
- (a) => a.id === event.bookmark.activity.id,
46
- );
47
- if (activityIndex === -1) {
48
- return { changed: false, activities };
49
- }
57
+ export const updateBookmarkInPinnedActivities = (
58
+ event: BookmarkUpdatedEvent,
59
+ pinnedActivities: ActivityPinResponse[] | undefined,
60
+ eventBelongsToCurrentUser: boolean,
61
+ ) =>
62
+ updateEntityInArray({
63
+ entities: pinnedActivities,
64
+ matcher: (pinnedActivity) =>
65
+ pinnedActivity.activity.id === event.bookmark.activity.id,
66
+ updater: (matchedPinnedActivity) => {
67
+ const newActivity = sharedUpdateActivity({
68
+ currentActivity: matchedPinnedActivity.activity,
69
+ event,
70
+ eventBelongsToCurrentUser,
71
+ });
50
72
 
51
- const activity = activities[activityIndex];
52
- const updatedActivity = updateBookmarkInActivity(
53
- event,
54
- activity,
55
- isCurrentUser,
56
- );
57
- return updateActivityInState(updatedActivity, activities, true);
58
- };
73
+ if (newActivity === matchedPinnedActivity.activity) {
74
+ return matchedPinnedActivity;
75
+ }
76
+
77
+ return {
78
+ ...matchedPinnedActivity,
79
+ activity: newActivity,
80
+ };
81
+ },
82
+ });
59
83
 
60
84
  export function handleBookmarkUpdated(
61
85
  this: Feed,
62
86
  event: EventPayload<'feeds.bookmark.updated'>,
63
87
  ) {
64
- const currentActivities = this.currentState.activities;
88
+ const {
89
+ activities: currentActivities,
90
+ pinned_activities: currentPinnedActivities,
91
+ } = this.currentState;
65
92
  const { connected_user: connectedUser } = this.client.state.getLatestValue();
66
- const isCurrentUser = event.bookmark.user.id === connectedUser?.id;
93
+ const eventBelongsToCurrentUser =
94
+ event.bookmark.user.id === connectedUser?.id;
95
+
96
+ const [result1, result2] = [
97
+ updateBookmarkInActivities(
98
+ event,
99
+ currentActivities,
100
+ eventBelongsToCurrentUser,
101
+ ),
102
+ updateBookmarkInPinnedActivities(
103
+ event,
104
+ currentPinnedActivities,
105
+ eventBelongsToCurrentUser,
106
+ ),
107
+ ];
67
108
 
68
- const result = updateBookmarkInActivities(
69
- event,
70
- currentActivities,
71
- isCurrentUser,
72
- );
73
- if (result.changed) {
74
- this.state.partialNext({ activities: result.activities });
109
+ if (result1.changed || result2.changed) {
110
+ this.state.partialNext({
111
+ activities: result1.entities,
112
+ pinned_activities: result2.entities,
113
+ });
75
114
  }
76
115
  }
@@ -1,4 +1,8 @@
1
- import { FeedResponse, FollowResponse, UserResponse } from '../../../gen/models';
1
+ import {
2
+ FeedResponse,
3
+ FollowResponse,
4
+ UserResponse,
5
+ } from '../../../gen/models';
2
6
  import { generateFollowResponse } from '../../../test-utils';
3
7
  import { updateStateFollowCreated } from './handle-follow-created';
4
8
 
@@ -44,7 +48,7 @@ describe('handle-follow-created', () => {
44
48
  source_feed: {
45
49
  ...mockFeed,
46
50
  id: 'feed-x',
47
- fid: 'user:feed-x',
51
+ feed: 'user:feed-x',
48
52
  created_by: {
49
53
  ...mockUser,
50
54
  id: 'user-x',
@@ -54,7 +58,7 @@ describe('handle-follow-created', () => {
54
58
  target_feed: {
55
59
  ...mockFeed,
56
60
  id: 'other-feed',
57
- fid: 'user:other-feed',
61
+ feed: 'user:other-feed',
58
62
  created_by: mockUser,
59
63
  },
60
64
  };
@@ -86,7 +90,7 @@ describe('handle-follow-created', () => {
86
90
  source_feed: {
87
91
  ...mockFeed,
88
92
  id: 'other-feed',
89
- fid: 'user:other-feed',
93
+ feed: 'user:other-feed',
90
94
  created_by: {
91
95
  ...mockUser,
92
96
  id: 'other-user',
@@ -95,7 +99,7 @@ describe('handle-follow-created', () => {
95
99
  target_feed: {
96
100
  ...mockFeed,
97
101
  id: 'feed-1',
98
- fid: 'user:feed-1',
102
+ feed: 'user:feed-1',
99
103
  created_by: mockUser,
100
104
  follower_count: 1,
101
105
  },
@@ -128,13 +132,13 @@ describe('handle-follow-created', () => {
128
132
  source_feed: {
129
133
  ...mockFeed,
130
134
  id: 'feed-1',
131
- fid: 'user:feed-1',
135
+ feed: 'user:feed-1',
132
136
  created_by: { ...mockUser, id: 'user-1' },
133
137
  },
134
138
  target_feed: {
135
139
  ...mockFeed,
136
140
  id: 'feed-x',
137
- fid: 'user:feed-x',
141
+ feed: 'user:feed-x',
138
142
  created_by: {
139
143
  ...mockUser,
140
144
  id: 'user-x',
@@ -166,13 +170,13 @@ describe('handle-follow-created', () => {
166
170
  source_feed: {
167
171
  ...mockFeed,
168
172
  id: 'other-feed',
169
- fid: 'user:other-feed',
173
+ feed: 'user:other-feed',
170
174
  created_by: mockUser,
171
175
  },
172
176
  target_feed: {
173
177
  ...mockFeed,
174
178
  id: 'feed-1',
175
- fid: 'user:feed-1',
179
+ feed: 'user:feed-1',
176
180
  created_by: mockUser,
177
181
  },
178
182
  };
@@ -202,7 +206,7 @@ describe('handle-follow-created', () => {
202
206
  source_feed: {
203
207
  ...mockFeed,
204
208
  id: 'existing-feed',
205
- fid: 'user:existing-feed',
209
+ feed: 'user:existing-feed',
206
210
  created_by: mockUser,
207
211
  },
208
212
  };
@@ -212,13 +216,13 @@ describe('handle-follow-created', () => {
212
216
  source_feed: {
213
217
  ...mockFeed,
214
218
  id: 'other-feed',
215
- fid: 'user:other-feed',
219
+ feed: 'user:other-feed',
216
220
  created_by: mockUser,
217
221
  },
218
222
  target_feed: {
219
223
  ...mockFeed,
220
224
  id: 'feed-1',
221
- fid: 'user:feed-1',
225
+ feed: 'user:feed-1',
222
226
  created_by: mockUser,
223
227
  },
224
228
  };
@@ -5,10 +5,7 @@ import type {
5
5
  PartializeAllBut,
6
6
  UpdateStateResult,
7
7
  } from '../../../types-internal';
8
- import {
9
- getStateUpdateQueueId,
10
- shouldUpdateState,
11
- } from '../../../utils';
8
+ import { getStateUpdateQueueId, shouldUpdateState } from '../../../utils';
12
9
 
13
10
  export const updateStateFollowCreated = (
14
11
  follow: FollowResponse,
@@ -24,7 +21,7 @@ export const updateStateFollowCreated = (
24
21
  let newState: FeedState = { ...currentState };
25
22
 
26
23
  // this feed followed someone
27
- if (follow.source_feed.fid === currentFeedId) {
24
+ if (follow.source_feed.feed === currentFeedId) {
28
25
  newState = {
29
26
  ...newState,
30
27
  // Update FeedResponse fields, that has the new follower/following count
@@ -37,7 +34,7 @@ export const updateStateFollowCreated = (
37
34
  }
38
35
  } else if (
39
36
  // someone followed this feed
40
- follow.target_feed.fid === currentFeedId
37
+ follow.target_feed.feed === currentFeedId
41
38
  ) {
42
39
  const source = follow.source_feed;
43
40
 
@@ -84,7 +81,7 @@ export function handleFollowCreated(
84
81
  const result = updateStateFollowCreated(
85
82
  follow,
86
83
  this.currentState,
87
- this.fid,
84
+ this.feed,
88
85
  connectedUser?.id,
89
86
  );
90
87
  if (result.changed) {
@@ -1,4 +1,8 @@
1
- import { FollowResponse, FeedResponse, UserResponse } from '../../../gen/models';
1
+ import {
2
+ FollowResponse,
3
+ FeedResponse,
4
+ UserResponse,
5
+ } from '../../../gen/models';
2
6
  import { generateFollowResponse } from '../../../test-utils';
3
7
  import { updateStateFollowDeleted } from './handle-follow-deleted';
4
8
 
@@ -22,13 +26,13 @@ describe('handle-follow-deleted', () => {
22
26
  source_feed: {
23
27
  ...mockFeed,
24
28
  id: 'feed-1',
25
- fid: 'user:feed-1',
29
+ feed: 'user:feed-1',
26
30
  created_by: mockUser,
27
31
  },
28
32
  target_feed: {
29
33
  ...mockFeed,
30
34
  id: 'other-feed',
31
- fid: 'user:other-feed',
35
+ feed: 'user:other-feed',
32
36
  created_by: mockUser,
33
37
  },
34
38
  };
@@ -59,7 +63,7 @@ describe('handle-follow-deleted', () => {
59
63
  source_feed: {
60
64
  ...mockFeed,
61
65
  id: 'other-feed',
62
- fid: 'user:other-feed',
66
+ feed: 'user:other-feed',
63
67
  created_by: {
64
68
  ...mockUser,
65
69
  id: 'other-user',
@@ -68,7 +72,7 @@ describe('handle-follow-deleted', () => {
68
72
  target_feed: {
69
73
  ...mockFeed,
70
74
  id: 'feed-1',
71
- fid: 'user:feed-1',
75
+ feed: 'user:feed-1',
72
76
  created_by: mockUser,
73
77
  },
74
78
  };
@@ -101,13 +105,13 @@ describe('handle-follow-deleted', () => {
101
105
  source_feed: {
102
106
  ...mockFeed,
103
107
  id: 'other-feed',
104
- fid: 'user:other-feed',
108
+ feed: 'user:other-feed',
105
109
  created_by: { ...mockUser, id: 'user-1' },
106
110
  },
107
111
  target_feed: {
108
112
  ...mockFeed,
109
113
  id: 'feed-1',
110
- fid: 'user:feed-1',
114
+ feed: 'user:feed-1',
111
115
  created_by: mockUser,
112
116
  },
113
117
  };
@@ -139,13 +143,13 @@ describe('handle-follow-deleted', () => {
139
143
  source_feed: {
140
144
  ...mockFeed,
141
145
  id: 'other-feed',
142
- fid: 'user:other-feed',
146
+ feed: 'user:other-feed',
143
147
  created_by: { ...mockUser, id: 'other-user' },
144
148
  },
145
149
  target_feed: {
146
150
  ...mockFeed,
147
151
  id: 'feed-1',
148
- fid: 'user:feed-1',
152
+ feed: 'user:feed-1',
149
153
  created_by: mockUser,
150
154
  },
151
155
  };
@@ -176,13 +180,13 @@ describe('handle-follow-deleted', () => {
176
180
  source_feed: {
177
181
  ...mockFeed,
178
182
  id: 'other-feed',
179
- fid: 'user:other-feed',
183
+ feed: 'user:other-feed',
180
184
  created_by: mockUser,
181
185
  },
182
186
  target_feed: {
183
187
  ...mockFeed,
184
188
  id: 'feed-1',
185
- fid: 'user:feed-1',
189
+ feed: 'user:feed-1',
186
190
  created_by: mockUser,
187
191
  },
188
192
  };
@@ -214,13 +218,13 @@ describe('handle-follow-deleted', () => {
214
218
  source_feed: {
215
219
  ...mockFeed,
216
220
  id: 'feed-1',
217
- fid: 'user:feed-1',
221
+ feed: 'user:feed-1',
218
222
  created_by: mockUser,
219
223
  },
220
224
  target_feed: {
221
225
  ...mockFeed,
222
226
  id: 'target-to-remove',
223
- fid: 'user:target-to-remove',
227
+ feed: 'user:target-to-remove',
224
228
  created_by: mockUser,
225
229
  },
226
230
  };
@@ -230,13 +234,13 @@ describe('handle-follow-deleted', () => {
230
234
  source_feed: {
231
235
  ...mockFeed,
232
236
  id: 'feed-1',
233
- fid: 'user:feed-1',
237
+ feed: 'user:feed-1',
234
238
  created_by: mockUser,
235
239
  },
236
240
  target_feed: {
237
241
  ...mockFeed,
238
242
  id: 'target-to-keep',
239
- fid: 'user:target-to-keep',
243
+ feed: 'user:target-to-keep',
240
244
  created_by: mockUser,
241
245
  },
242
246
  };
@@ -17,7 +17,7 @@ export const updateStateFollowDeleted = (
17
17
  let newState: FeedState = { ...currentState };
18
18
 
19
19
  // this feed unfollowed someone
20
- if (follow.source_feed.fid === currentFeedId) {
20
+ if (follow.source_feed.feed === currentFeedId) {
21
21
  newState = {
22
22
  ...newState,
23
23
  // Update FeedResponse fields, that has the new follower/following count
@@ -27,12 +27,12 @@ export const updateStateFollowDeleted = (
27
27
  // Only update if following array already exists
28
28
  if (currentState.following !== undefined) {
29
29
  newState.following = currentState.following.filter(
30
- (followItem) => followItem.target_feed.fid !== follow.target_feed.fid,
30
+ (followItem) => followItem.target_feed.feed !== follow.target_feed.feed,
31
31
  );
32
32
  }
33
33
  } else if (
34
34
  // someone unfollowed this feed
35
- follow.target_feed.fid === currentFeedId
35
+ follow.target_feed.feed === currentFeedId
36
36
  ) {
37
37
  const source = follow.source_feed;
38
38
 
@@ -47,14 +47,14 @@ export const updateStateFollowDeleted = (
47
47
  currentState.own_follows !== undefined
48
48
  ) {
49
49
  newState.own_follows = currentState.own_follows.filter(
50
- (followItem) => followItem.source_feed.fid !== follow.source_feed.fid,
50
+ (followItem) => followItem.source_feed.feed !== follow.source_feed.feed,
51
51
  );
52
52
  }
53
53
 
54
54
  // Only update if followers array already exists
55
55
  if (currentState.followers !== undefined) {
56
56
  newState.followers = currentState.followers.filter(
57
- (followItem) => followItem.source_feed.fid !== follow.source_feed.fid,
57
+ (followItem) => followItem.source_feed.feed !== follow.source_feed.feed,
58
58
  );
59
59
  }
60
60
  }
@@ -85,7 +85,7 @@ export function handleFollowDeleted(
85
85
  const result = updateStateFollowDeleted(
86
86
  follow,
87
87
  this.currentState,
88
- this.fid,
88
+ this.feed,
89
89
  connectedUser?.id,
90
90
  );
91
91
 
@@ -1,8 +1,5 @@
1
1
  import type { Feed, FeedState } from '../../../feed';
2
- import {
3
- getStateUpdateQueueId,
4
- shouldUpdateState,
5
- } from '../../../utils';
2
+ import { getStateUpdateQueueId, shouldUpdateState } from '../../../utils';
6
3
  import { EventPayload, PartializeAllBut } from '../../../types-internal';
7
4
 
8
5
  export function handleFollowUpdated(
@@ -14,7 +11,7 @@ export function handleFollowUpdated(
14
11
  ) {
15
12
  const follow = eventOrResponse.follow;
16
13
  const connectedUserId = this.client.state.getLatestValue().connected_user?.id;
17
- const currentFeedId = this.fid;
14
+ const currentFeedId = this.feed;
18
15
 
19
16
  if (
20
17
  !shouldUpdateState({
@@ -30,7 +27,7 @@ export function handleFollowUpdated(
30
27
  let newState: FeedState | undefined;
31
28
 
32
29
  // this feed followed someone
33
- if (follow.source_feed.fid === currentFeedId) {
30
+ if (follow.source_feed.feed === currentFeedId) {
34
31
  newState ??= {
35
32
  ...currentState,
36
33
  // Update FeedResponse fields, that has the new follower/following count
@@ -39,7 +36,7 @@ export function handleFollowUpdated(
39
36
 
40
37
  const index =
41
38
  currentState.following?.findIndex(
42
- (f) => f.target_feed.fid === follow.target_feed.fid,
39
+ (f) => f.target_feed.feed === follow.target_feed.feed,
43
40
  ) ?? -1;
44
41
 
45
42
  if (index >= 0) {
@@ -48,7 +45,7 @@ export function handleFollowUpdated(
48
45
  }
49
46
  } else if (
50
47
  // someone followed this feed
51
- follow.target_feed.fid === currentFeedId
48
+ follow.target_feed.feed === currentFeedId
52
49
  ) {
53
50
  const source = follow.source_feed;
54
51
 
@@ -63,7 +60,7 @@ export function handleFollowUpdated(
63
60
  currentState.own_follows
64
61
  ) {
65
62
  const index = currentState.own_follows.findIndex(
66
- (f) => f.source_feed.fid === follow.source_feed.fid,
63
+ (f) => f.source_feed.feed === follow.source_feed.feed,
67
64
  );
68
65
 
69
66
  if (index >= 0) {
@@ -74,7 +71,7 @@ export function handleFollowUpdated(
74
71
 
75
72
  const index =
76
73
  currentState.followers?.findIndex(
77
- (f) => f.source_feed.fid === follow.source_feed.fid,
74
+ (f) => f.source_feed.feed === follow.source_feed.feed,
78
75
  ) ?? -1;
79
76
 
80
77
  if (index >= 0) {
@@ -4,4 +4,5 @@ export * from './feed-member';
4
4
  export * from './bookmark';
5
5
  export * from './activity';
6
6
  export * from './feed';
7
- export * from './notification-feed';
7
+ export * from './notification-feed';
8
+ export * from './watch';
@@ -0,0 +1,5 @@
1
+ import { Feed } from '../../feed';
2
+
3
+ export function handleWatchStarted(this: Feed) {
4
+ this.state.partialNext({ watch: true });
5
+ }
@@ -0,0 +1,5 @@
1
+ import { Feed } from '../../feed';
2
+
3
+ export function handleWatchStopped(this: Feed) {
4
+ this.state.partialNext({ watch: false });
5
+ }
@@ -0,0 +1,2 @@
1
+ export * from './handle-watch-started';
2
+ export * from './handle-watch-stopped';