@stream-io/feeds-client 1.0.0 → 1.2.0

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 (98) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/cjs/index.js +477 -466
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/react-bindings.js +454 -463
  5. package/dist/cjs/react-bindings.js.map +1 -1
  6. package/dist/es/index.mjs +440 -466
  7. package/dist/es/index.mjs.map +1 -1
  8. package/dist/es/react-bindings.mjs +447 -493
  9. package/dist/es/react-bindings.mjs.map +1 -1
  10. package/dist/feeds-client-ACVPbpUP.mjs +8752 -0
  11. package/dist/feeds-client-ACVPbpUP.mjs.map +1 -0
  12. package/dist/feeds-client-BP0fE4NZ.js +8918 -0
  13. package/dist/feeds-client-BP0fE4NZ.js.map +1 -0
  14. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  15. package/dist/types/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivityRead.d.ts +6 -2
  16. package/dist/types/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivityRead.d.ts.map +1 -1
  17. package/dist/types/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivitySeen.d.ts +6 -2
  18. package/dist/types/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivitySeen.d.ts.map +1 -1
  19. package/dist/types/feed/event-handlers/activity/handle-activity-deleted.d.ts +3 -2
  20. package/dist/types/feed/event-handlers/activity/handle-activity-deleted.d.ts.map +1 -1
  21. package/dist/types/feed/event-handlers/activity/handle-activity-feedback.d.ts +5 -0
  22. package/dist/types/feed/event-handlers/activity/handle-activity-feedback.d.ts.map +1 -1
  23. package/dist/types/feed/event-handlers/activity/handle-activity-pinned.d.ts +3 -2
  24. package/dist/types/feed/event-handlers/activity/handle-activity-pinned.d.ts.map +1 -1
  25. package/dist/types/feed/event-handlers/activity/handle-activity-unpinned.d.ts +3 -2
  26. package/dist/types/feed/event-handlers/activity/handle-activity-unpinned.d.ts.map +1 -1
  27. package/dist/types/feed/event-handlers/activity/index.d.ts +3 -1
  28. package/dist/types/feed/event-handlers/activity/index.d.ts.map +1 -1
  29. package/dist/types/feed/event-handlers/activity-updater.d.ts +1 -0
  30. package/dist/types/feed/event-handlers/activity-updater.d.ts.map +1 -1
  31. package/dist/types/feed/event-handlers/add-aggregated-activities-to-state.d.ts +1 -1
  32. package/dist/types/feed/event-handlers/add-aggregated-activities-to-state.d.ts.map +1 -1
  33. package/dist/types/feed/event-handlers/bookmark/handle-bookmark-added.d.ts +6 -5
  34. package/dist/types/feed/event-handlers/bookmark/handle-bookmark-added.d.ts.map +1 -1
  35. package/dist/types/feed/event-handlers/bookmark/handle-bookmark-deleted.d.ts +6 -5
  36. package/dist/types/feed/event-handlers/bookmark/handle-bookmark-deleted.d.ts.map +1 -1
  37. package/dist/types/feed/event-handlers/bookmark/handle-bookmark-updated.d.ts +6 -5
  38. package/dist/types/feed/event-handlers/bookmark/handle-bookmark-updated.d.ts.map +1 -1
  39. package/dist/types/feed/event-handlers/feed/handle-feed-deleted.d.ts +4 -0
  40. package/dist/types/feed/event-handlers/feed/handle-feed-deleted.d.ts.map +1 -0
  41. package/dist/types/feed/event-handlers/feed/handle-feed-updated.d.ts.map +1 -1
  42. package/dist/types/feed/event-handlers/feed/index.d.ts +1 -0
  43. package/dist/types/feed/event-handlers/feed/index.d.ts.map +1 -1
  44. package/dist/types/feed/event-handlers/feed-member/handle-feed-member-added.d.ts +3 -2
  45. package/dist/types/feed/event-handlers/feed-member/handle-feed-member-added.d.ts.map +1 -1
  46. package/dist/types/feed/event-handlers/feed-member/handle-feed-member-removed.d.ts +3 -2
  47. package/dist/types/feed/event-handlers/feed-member/handle-feed-member-removed.d.ts.map +1 -1
  48. package/dist/types/feed/event-handlers/feed-member/handle-feed-member-updated.d.ts +3 -2
  49. package/dist/types/feed/event-handlers/feed-member/handle-feed-member-updated.d.ts.map +1 -1
  50. package/dist/types/feed/event-handlers/follow/handle-follow-updated.d.ts.map +1 -1
  51. package/dist/types/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts +3 -2
  52. package/dist/types/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts.map +1 -1
  53. package/dist/types/feed/feed.d.ts.map +1 -1
  54. package/dist/types/feeds-client/feeds-client.d.ts +25 -1
  55. package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
  56. package/dist/types/gen/feeds/FeedsApi.d.ts +6 -4
  57. package/dist/types/gen/feeds/FeedsApi.d.ts.map +1 -1
  58. package/dist/types/gen/models/index.d.ts +40 -2
  59. package/dist/types/gen/models/index.d.ts.map +1 -1
  60. package/dist/types/utils/state-update-queue.d.ts +11 -2
  61. package/dist/types/utils/state-update-queue.d.ts.map +1 -1
  62. package/dist/types/utils/unique-array-merge.d.ts +1 -1
  63. package/dist/types/utils/unique-array-merge.d.ts.map +1 -1
  64. package/package.json +15 -15
  65. package/src/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivityRead.ts +6 -20
  66. package/src/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivitySeen.ts +6 -20
  67. package/src/feed/event-handlers/activity/handle-activity-deleted.ts +28 -2
  68. package/src/feed/event-handlers/activity/handle-activity-feedback.ts +17 -7
  69. package/src/feed/event-handlers/activity/handle-activity-pinned.ts +25 -3
  70. package/src/feed/event-handlers/activity/handle-activity-unpinned.ts +25 -2
  71. package/src/feed/event-handlers/activity/index.ts +3 -1
  72. package/src/feed/event-handlers/add-aggregated-activities-to-state.ts +11 -2
  73. package/src/feed/event-handlers/bookmark/handle-bookmark-added.ts +20 -11
  74. package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.ts +21 -11
  75. package/src/feed/event-handlers/bookmark/handle-bookmark-updated.ts +24 -10
  76. package/src/feed/event-handlers/feed/handle-feed-deleted.ts +12 -0
  77. package/src/feed/event-handlers/feed/handle-feed-updated.ts +8 -0
  78. package/src/feed/event-handlers/feed/index.ts +1 -0
  79. package/src/feed/event-handlers/feed-member/handle-feed-member-added.ts +25 -2
  80. package/src/feed/event-handlers/feed-member/handle-feed-member-removed.ts +25 -2
  81. package/src/feed/event-handlers/feed-member/handle-feed-member-updated.ts +25 -2
  82. package/src/feed/event-handlers/follow/handle-follow-updated.ts +14 -0
  83. package/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.ts +64 -2
  84. package/src/feed/event-handlers/story-feeds/handle-story-feeds-updated.ts +1 -1
  85. package/src/feed/feed.ts +7 -5
  86. package/src/feeds-client/feeds-client.ts +359 -45
  87. package/src/gen/feeds/FeedsApi.ts +79 -12
  88. package/src/gen/model-decoders/decoders.ts +7 -0
  89. package/src/gen/models/index.ts +66 -4
  90. package/src/utils/state-update-queue.ts +42 -28
  91. package/src/utils/unique-array-merge.ts +11 -3
  92. package/dist/feeds-client-B03y08Kq.mjs +0 -8409
  93. package/dist/feeds-client-B03y08Kq.mjs.map +0 -1
  94. package/dist/feeds-client-tw63OGrd.js +0 -8425
  95. package/dist/feeds-client-tw63OGrd.js.map +0 -1
  96. package/dist/types/feed/event-handlers/activity/handle-activity-marked.d.ts +0 -12
  97. package/dist/types/feed/event-handlers/activity/handle-activity-marked.d.ts.map +0 -1
  98. package/src/feed/event-handlers/activity/handle-activity-marked.ts +0 -68
@@ -493,6 +493,8 @@ export interface ActivityResponse {
493
493
 
494
494
  location?: ActivityLocation;
495
495
 
496
+ metrics?: Record<string, number>;
497
+
496
498
  moderation?: ModerationV2Response;
497
499
 
498
500
  notification_context?: NotificationContext;
@@ -983,6 +985,8 @@ export interface BackstageSettingsResponse {
983
985
  export interface BanActionRequestPayload {
984
986
  channel_ban_only?: boolean;
985
987
 
988
+ channel_cid?: string;
989
+
986
990
  delete_messages?: 'soft' | 'pruning' | 'hard';
987
991
 
988
992
  ip_ban?: boolean;
@@ -1056,6 +1060,8 @@ export interface BlockListConfig {
1056
1060
  rules: BlockListRule[];
1057
1061
 
1058
1062
  async?: boolean;
1063
+
1064
+ match_substring?: boolean;
1059
1065
  }
1060
1066
 
1061
1067
  export interface BlockListOptions {
@@ -3695,6 +3701,8 @@ export interface MessageResponse {
3695
3701
 
3696
3702
  show_in_channel?: boolean;
3697
3703
 
3704
+ mentioned_group_ids?: string[];
3705
+
3698
3706
  mentioned_roles?: string[];
3699
3707
 
3700
3708
  thread_participants?: UserResponse[];
@@ -4470,6 +4478,28 @@ export interface QueryBookmarksResponse {
4470
4478
  prev?: string;
4471
4479
  }
4472
4480
 
4481
+ export interface QueryCollectionsRequest {
4482
+ limit?: number;
4483
+
4484
+ next?: string;
4485
+
4486
+ prev?: string;
4487
+
4488
+ sort?: SortParamRequest[];
4489
+
4490
+ filter?: Record<string, any>;
4491
+ }
4492
+
4493
+ export interface QueryCollectionsResponse {
4494
+ duration: string;
4495
+
4496
+ collections: CollectionResponse[];
4497
+
4498
+ next?: string;
4499
+
4500
+ prev?: string;
4501
+ }
4502
+
4473
4503
  export interface QueryCommentReactionsRequest {
4474
4504
  limit?: number;
4475
4505
 
@@ -4495,6 +4525,8 @@ export interface QueryCommentReactionsResponse {
4495
4525
  export interface QueryCommentsRequest {
4496
4526
  filter: Record<string, any>;
4497
4527
 
4528
+ id_around?: string;
4529
+
4498
4530
  limit?: number;
4499
4531
 
4500
4532
  next?: string;
@@ -4816,10 +4848,6 @@ export interface ReadCollectionsResponse {
4816
4848
  duration: string;
4817
4849
 
4818
4850
  collections: CollectionResponse[];
4819
-
4820
- next?: string;
4821
-
4822
- prev?: string;
4823
4851
  }
4824
4852
 
4825
4853
  export interface ReadReceiptsResponse {
@@ -4878,6 +4906,12 @@ export interface ReminderResponseData {
4878
4906
  user?: UserResponse;
4879
4907
  }
4880
4908
 
4909
+ export interface RemoveUserGroupMembersRequest {
4910
+ member_ids: string[];
4911
+
4912
+ team_id?: string;
4913
+ }
4914
+
4881
4915
  export interface RemoveUserGroupMembersResponse {
4882
4916
  duration: string;
4883
4917
 
@@ -5403,6 +5437,34 @@ export interface ThumbnailsSettingsResponse {
5403
5437
 
5404
5438
  export interface Time {}
5405
5439
 
5440
+ export interface TrackActivityMetricsEvent {
5441
+ activity_id: string;
5442
+
5443
+ metric: string;
5444
+
5445
+ delta?: number;
5446
+ }
5447
+
5448
+ export interface TrackActivityMetricsEventResult {
5449
+ activity_id: string;
5450
+
5451
+ allowed: boolean;
5452
+
5453
+ metric: string;
5454
+
5455
+ error?: string;
5456
+ }
5457
+
5458
+ export interface TrackActivityMetricsRequest {
5459
+ events: TrackActivityMetricsEvent[];
5460
+ }
5461
+
5462
+ export interface TrackActivityMetricsResponse {
5463
+ duration: string;
5464
+
5465
+ results: TrackActivityMetricsEventResult[];
5466
+ }
5467
+
5406
5468
  export interface TranscriptionSettingsResponse {
5407
5469
  closed_caption_mode: 'available' | 'disabled' | 'auto-on';
5408
5470
 
@@ -1,9 +1,10 @@
1
+ import type { FollowResponse } from '../gen/models';
1
2
  import type {
2
- FollowResponse,
3
- } from '../gen/models';
4
- import type {
3
+ ActivityDeletedPayload,
4
+ ActivityPinnedPayload,
5
5
  ActivityReactionAddedPayload,
6
6
  ActivityReactionDeletedPayload,
7
+ ActivityUnpinnedPayload,
7
8
  ActivityUpdatedPayload,
8
9
  CommentAddedPayload,
9
10
  CommentDeletedPayload,
@@ -12,14 +13,16 @@ import type {
12
13
  CommentUpdatedPayload,
13
14
  } from '../feed';
14
15
  import { ensureExhausted } from './ensure-exhausted';
15
- import type {
16
- CommentReactionUpdatedPayload
17
- } from '../feed/event-handlers/comment/handle-comment-reaction-updated';
18
- import type {
19
- ActivityReactionUpdatedPayload
20
- } from '../feed/event-handlers/activity/handle-activity-reaction-updated';
16
+ import type { CommentReactionUpdatedPayload } from '../feed/event-handlers/comment/handle-comment-reaction-updated';
17
+ import type { ActivityReactionUpdatedPayload } from '../feed/event-handlers/activity/handle-activity-reaction-updated';
18
+ import type { FeedMemberAddedPayload } from '../feed/event-handlers/feed-member/handle-feed-member-added';
19
+ import type { FeedMemberUpdatedPayload } from '../feed/event-handlers/feed-member/handle-feed-member-updated';
20
+ import type { FeedMemberRemovedPayload } from '../feed/event-handlers/feed-member/handle-feed-member-removed';
21
21
 
22
22
  export type StateUpdateQueuePrefix =
23
+ | 'activity-deleted'
24
+ | 'activity-pinned'
25
+ | 'activity-unpinned'
23
26
  | 'activity-updated'
24
27
  | 'activity-reaction-created'
25
28
  | 'activity-reaction-deleted'
@@ -32,9 +35,15 @@ export type StateUpdateQueuePrefix =
32
35
  | 'follow-updated'
33
36
  | 'comment-created'
34
37
  | 'comment-deleted'
35
- | 'comment-updated';
38
+ | 'comment-updated'
39
+ | 'feed-member-added'
40
+ | 'feed-member-updated'
41
+ | 'feed-member-removed';
36
42
 
37
43
  type StateUpdateQueuePayloadByPrefix = {
44
+ 'activity-deleted': ActivityDeletedPayload;
45
+ 'activity-pinned': ActivityPinnedPayload;
46
+ 'activity-unpinned': ActivityUnpinnedPayload;
38
47
  'activity-updated': ActivityUpdatedPayload;
39
48
  'activity-reaction-created': ActivityReactionAddedPayload;
40
49
  'activity-reaction-deleted': ActivityReactionDeletedPayload;
@@ -48,6 +57,9 @@ type StateUpdateQueuePayloadByPrefix = {
48
57
  'comment-created': CommentAddedPayload;
49
58
  'comment-deleted': CommentDeletedPayload;
50
59
  'comment-updated': CommentUpdatedPayload;
60
+ 'feed-member-added': FeedMemberAddedPayload;
61
+ 'feed-member-updated': FeedMemberUpdatedPayload;
62
+ 'feed-member-removed': FeedMemberRemovedPayload;
51
63
  };
52
64
 
53
65
  // Union of ([payload, prefix]) tuples:
@@ -162,40 +174,35 @@ export const shouldUpdateState = ({
162
174
  return true;
163
175
  };
164
176
 
165
- export function getStateUpdateQueueId(
166
- ...args: StateUpdateQueuePairTuples
167
- ) {
177
+ export function getStateUpdateQueueId(...args: StateUpdateQueuePairTuples) {
168
178
  const [data, prefix] = args;
169
179
  const toJoin = [prefix as string];
170
180
 
171
181
  switch (prefix) {
182
+ case 'activity-deleted': {
183
+ return toJoin.concat([data.activity.id]).join('-');
184
+ }
185
+ case 'activity-pinned':
186
+ case 'activity-unpinned': {
187
+ return toJoin.concat([data.pinned_activity.activity.id]).join('-');
188
+ }
172
189
  case 'activity-updated': {
173
- return toJoin.concat([data.activity.id]).join('-')
190
+ return toJoin.concat([data.activity.id]).join('-');
174
191
  }
175
192
  case 'activity-reaction-created':
176
193
  case 'activity-reaction-deleted':
177
194
  case 'activity-reaction-updated': {
178
- return toJoin
179
- .concat([
180
- data.activity.id,
181
- data.reaction.type,
182
- ])
183
- .join('-');
195
+ return toJoin.concat([data.activity.id, data.reaction.type]).join('-');
184
196
  }
185
197
  case 'comment-reaction-created':
186
198
  case 'comment-reaction-deleted':
187
199
  case 'comment-reaction-updated': {
188
- return toJoin
189
- .concat([
190
- data.comment.id,
191
- data.reaction.type,
192
- ])
193
- .join('-');
200
+ return toJoin.concat([data.comment.id, data.reaction.type]).join('-');
194
201
  }
195
202
  case 'comment-created':
196
203
  case 'comment-deleted':
197
204
  case 'comment-updated': {
198
- return toJoin.concat([data.comment.id]).join('-')
205
+ return toJoin.concat([data.comment.id]).join('-');
199
206
  }
200
207
  case 'follow-created':
201
208
  case 'follow-deleted':
@@ -204,8 +211,15 @@ export function getStateUpdateQueueId(
204
211
  .concat([data.source_feed.feed, data.target_feed.feed])
205
212
  .join('-');
206
213
  }
214
+ case 'feed-member-added':
215
+ case 'feed-member-updated': {
216
+ return toJoin.concat([data.member.user.id]).join('-');
217
+ }
218
+ case 'feed-member-removed': {
219
+ return toJoin.concat([data.member_id]).join('-');
220
+ }
207
221
  default: {
208
- ensureExhausted(data, 'Encountered unknown state update queue prefix.')
222
+ ensureExhausted(data, 'Encountered unknown state update queue prefix.');
209
223
  }
210
224
  }
211
225
  }
@@ -22,6 +22,7 @@ export const replaceUniqueArrayMerge = <T>(
22
22
  existingArray: T[],
23
23
  arrayToMerge: T[],
24
24
  getKey: (v: T) => string,
25
+ position: 'start' | 'end',
25
26
  ) => {
26
27
  const existingMap = new Map<string, T>();
27
28
  (existingArray ?? []).forEach((item) => {
@@ -41,9 +42,16 @@ export const replaceUniqueArrayMerge = <T>(
41
42
  }
42
43
  });
43
44
 
44
- existingMap.forEach((item) => {
45
- result.push(item);
46
- });
45
+ // New items (only in arrayToMerge): add in arrayToMerge order
46
+ const newItemsInOrder = arrayToMerge.filter((item) =>
47
+ existingMap.has(getKey(item)),
48
+ );
49
+
50
+ if (position === 'end') {
51
+ newItemsInOrder.forEach((item) => result.push(item));
52
+ } else {
53
+ result.unshift(...newItemsInOrder);
54
+ }
47
55
 
48
56
  return result;
49
57
  };