@stream-io/feeds-client 0.2.13 → 0.2.15

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 (51) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/index.js +2 -1
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/react-bindings.js +2 -2
  5. package/dist/cjs/react-bindings.js.map +1 -1
  6. package/dist/es/index.mjs +3 -2
  7. package/dist/es/react-bindings.mjs +2 -2
  8. package/dist/es/react-bindings.mjs.map +1 -1
  9. package/dist/{index-gvcJhGPH.mjs → index-BSzSBlMh.mjs} +96 -15
  10. package/dist/index-BSzSBlMh.mjs.map +1 -0
  11. package/dist/{index-RzB4c4g6.js → index-DRX66SIx.js} +96 -15
  12. package/dist/index-DRX66SIx.js.map +1 -0
  13. package/dist/tsconfig.tsbuildinfo +1 -1
  14. package/dist/types/common/real-time/StableWSConnection.d.ts +3 -3
  15. package/dist/types/common/real-time/StableWSConnection.d.ts.map +1 -1
  16. package/dist/types/feed/event-handlers/{notification-feed/handle-notification-feed-updated.d.ts → aggregated-feed/handle-aggregated-feed-updated.d.ts} +10 -4
  17. package/dist/types/feed/event-handlers/aggregated-feed/handle-aggregated-feed-updated.d.ts.map +1 -0
  18. package/dist/types/feed/event-handlers/aggregated-feed/index.d.ts +2 -0
  19. package/dist/types/feed/event-handlers/aggregated-feed/index.d.ts.map +1 -0
  20. package/dist/types/feed/event-handlers/index.d.ts +1 -1
  21. package/dist/types/feed/event-handlers/index.d.ts.map +1 -1
  22. package/dist/types/feed/feed.d.ts +2 -2
  23. package/dist/types/feed/feed.d.ts.map +1 -1
  24. package/dist/types/feeds-client/feeds-client.d.ts +8 -2
  25. package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
  26. package/dist/types/gen/feeds/FeedsApi.d.ts +1 -1
  27. package/dist/types/gen/feeds/FeedsApi.d.ts.map +1 -1
  28. package/dist/types/gen/model-decoders/event-decoder-mapping.d.ts.map +1 -1
  29. package/dist/types/gen/models/index.d.ts +17 -1
  30. package/dist/types/gen/models/index.d.ts.map +1 -1
  31. package/dist/types/utils/unique-array-merge.d.ts +1 -0
  32. package/dist/types/utils/unique-array-merge.d.ts.map +1 -1
  33. package/package.json +1 -1
  34. package/src/bindings/react/hooks/util/useReactionActions.ts +1 -1
  35. package/src/feed/event-handlers/{notification-feed/handle-notification-feed-updated.test.ts → aggregated-feed/handle-aggregated-feed-updated.test.ts} +227 -1
  36. package/src/feed/event-handlers/{notification-feed/handle-notification-feed-updated.ts → aggregated-feed/handle-aggregated-feed-updated.ts} +71 -15
  37. package/src/feed/event-handlers/aggregated-feed/index.ts +1 -0
  38. package/src/feed/event-handlers/index.ts +1 -1
  39. package/src/feed/feed.ts +2 -0
  40. package/src/feeds-client/feeds-client.ts +15 -7
  41. package/src/gen/feeds/FeedsApi.ts +2 -2
  42. package/src/gen/model-decoders/decoders.ts +14 -0
  43. package/src/gen/model-decoders/event-decoder-mapping.ts +3 -0
  44. package/src/gen/models/index.ts +26 -2
  45. package/src/utils/unique-array-merge.ts +30 -0
  46. package/dist/index-RzB4c4g6.js.map +0 -1
  47. package/dist/index-gvcJhGPH.mjs.map +0 -1
  48. package/dist/types/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts.map +0 -1
  49. package/dist/types/feed/event-handlers/notification-feed/index.d.ts +0 -2
  50. package/dist/types/feed/event-handlers/notification-feed/index.d.ts.map +0 -1
  51. package/src/feed/event-handlers/notification-feed/index.ts +0 -1
@@ -1264,6 +1264,17 @@ decoders.SingleFollowResponse = (input) => {
1264
1264
  };
1265
1265
  return decode(typeMappings, input);
1266
1266
  };
1267
+ decoders.StoriesFeedUpdatedEvent = (input) => {
1268
+ const typeMappings = {
1269
+ created_at: { type: "DatetimeType", isSingle: true },
1270
+ received_at: { type: "DatetimeType", isSingle: true },
1271
+ aggregated_activities: {
1272
+ type: "AggregatedActivityResponse",
1273
+ isSingle: false
1274
+ }
1275
+ };
1276
+ return decode(typeMappings, input);
1277
+ };
1267
1278
  decoders.SubmitActionResponse = (input) => {
1268
1279
  const typeMappings = {
1269
1280
  item: { type: "ReviewQueueItemResponse", isSingle: true }
@@ -1759,7 +1770,7 @@ class FeedsApi {
1759
1770
  decoders.PollVoteResponse?.(response.body);
1760
1771
  return { ...response.body, metadata: response.metadata };
1761
1772
  }
1762
- async addReaction(request) {
1773
+ async addActivityReaction(request) {
1763
1774
  const pathParams = {
1764
1775
  activity_id: request?.activity_id
1765
1776
  };
@@ -1969,9 +1980,9 @@ class FeedsApi {
1969
1980
  }
1970
1981
  async addComment(request) {
1971
1982
  const body = {
1972
- comment: request?.comment,
1973
1983
  object_id: request?.object_id,
1974
1984
  object_type: request?.object_type,
1985
+ comment: request?.comment,
1975
1986
  create_notification_activity: request?.create_notification_activity,
1976
1987
  parent_id: request?.parent_id,
1977
1988
  skip_push: request?.skip_push,
@@ -3711,7 +3722,7 @@ const getRateLimitFromResponseHeader = (response_headers) => {
3711
3722
  };
3712
3723
  return result;
3713
3724
  };
3714
- const version = "0.2.13";
3725
+ const version = "0.2.15";
3715
3726
  class ApiClient {
3716
3727
  constructor(apiKey, tokenManager, connectionIdManager, options) {
3717
3728
  this.apiKey = apiKey;
@@ -3922,6 +3933,7 @@ const eventDecoderMapping = {
3922
3933
  "feeds.poll.vote_casted": (data) => decoders.PollVoteCastedFeedEvent(data),
3923
3934
  "feeds.poll.vote_changed": (data) => decoders.PollVoteChangedFeedEvent(data),
3924
3935
  "feeds.poll.vote_removed": (data) => decoders.PollVoteRemovedFeedEvent(data),
3936
+ "feeds.stories_feed.updated": (data) => decoders.StoriesFeedUpdatedEvent(data),
3925
3937
  "health.check": (data) => decoders.HealthCheckEvent(data),
3926
3938
  "moderation.custom_action": (data) => decoders.ModerationCustomActionEvent(data),
3927
3939
  "moderation.flagged": (data) => decoders.ModerationFlaggedEvent(data),
@@ -4450,6 +4462,27 @@ const uniqueArrayMerge = (existingArray, arrayToMerge, getKey) => {
4450
4462
  });
4451
4463
  return existingArray.concat(filteredArrayToMerge);
4452
4464
  };
4465
+ const replaceUniqueArrayMerge = (existingArray, arrayToMerge, getKey) => {
4466
+ const existingMap = /* @__PURE__ */ new Map();
4467
+ (existingArray ?? []).forEach((item) => {
4468
+ existingMap.set(getKey(item), item);
4469
+ });
4470
+ const result = [];
4471
+ arrayToMerge.forEach((item) => {
4472
+ existingMap.set(getKey(item), item);
4473
+ });
4474
+ existingArray.forEach((originalItem) => {
4475
+ const updatedItem = existingMap.get(getKey(originalItem));
4476
+ if (updatedItem) {
4477
+ result.push(updatedItem);
4478
+ existingMap.delete(getKey(originalItem));
4479
+ }
4480
+ });
4481
+ existingMap.forEach((item) => {
4482
+ result.push(item);
4483
+ });
4484
+ return result;
4485
+ };
4453
4486
  const Constants = {
4454
4487
  DEFAULT_COMMENT_PAGINATION: "first"
4455
4488
  };
@@ -5593,15 +5626,29 @@ const addAggregatedActivitiesToState = (newAggregatedActivities, aggregatedActiv
5593
5626
  aggregated_activities: []
5594
5627
  };
5595
5628
  }
5596
- result.aggregated_activities = position === "start" ? uniqueArrayMerge(
5597
- newAggregatedActivities,
5598
- aggregatedActivities ?? [],
5599
- (a) => a.group
5600
- ) : uniqueArrayMerge(
5601
- aggregatedActivities ?? [],
5602
- newAggregatedActivities,
5603
- (a) => a.group
5604
- );
5629
+ switch (position) {
5630
+ case "start":
5631
+ result.aggregated_activities = uniqueArrayMerge(
5632
+ newAggregatedActivities,
5633
+ aggregatedActivities ?? [],
5634
+ (a) => a.group
5635
+ );
5636
+ break;
5637
+ case "end":
5638
+ result.aggregated_activities = uniqueArrayMerge(
5639
+ aggregatedActivities ?? [],
5640
+ newAggregatedActivities,
5641
+ (a) => a.group
5642
+ );
5643
+ break;
5644
+ case "replace":
5645
+ result.aggregated_activities = replaceUniqueArrayMerge(
5646
+ aggregatedActivities ?? [],
5647
+ newAggregatedActivities,
5648
+ (a) => a.group
5649
+ );
5650
+ break;
5651
+ }
5605
5652
  return result;
5606
5653
  };
5607
5654
  const updateNotificationStatus = (newNotificationStatus, currentNotificationStatus) => {
@@ -5668,6 +5715,35 @@ function handleNotificationFeedUpdated(event) {
5668
5715
  });
5669
5716
  }
5670
5717
  }
5718
+ function updateStoriesFeedFromEvent(aggregatedActivities, event) {
5719
+ if (!aggregatedActivities) {
5720
+ return {
5721
+ changed: false
5722
+ };
5723
+ }
5724
+ if (event.aggregated_activities) {
5725
+ const result = addAggregatedActivitiesToState(
5726
+ event.aggregated_activities,
5727
+ aggregatedActivities,
5728
+ "replace"
5729
+ );
5730
+ return result;
5731
+ }
5732
+ return {
5733
+ changed: false
5734
+ };
5735
+ }
5736
+ function handleStoriesFeedUpdated(event) {
5737
+ const result = updateStoriesFeedFromEvent(
5738
+ this.currentState.aggregated_activities,
5739
+ event
5740
+ );
5741
+ if (result.changed) {
5742
+ this.state.partialNext({
5743
+ aggregated_activities: result.data?.aggregated_activities
5744
+ });
5745
+ }
5746
+ }
5671
5747
  function handleWatchStarted() {
5672
5748
  this.state.partialNext({ watch: true });
5673
5749
  }
@@ -5710,6 +5786,7 @@ const _Feed = class _Feed extends FeedApi {
5710
5786
  "feeds.feed_member.removed": handleFeedMemberRemoved.bind(this),
5711
5787
  "feeds.feed_member.updated": handleFeedMemberUpdated.bind(this),
5712
5788
  "feeds.notification_feed.updated": handleNotificationFeedUpdated.bind(this),
5789
+ "feeds.stories_feed.updated": handleStoriesFeedUpdated.bind(this),
5713
5790
  // the poll events should be removed from here
5714
5791
  "feeds.poll.closed": _Feed.noop,
5715
5792
  "feeds.poll.deleted": _Feed.noop,
@@ -6397,13 +6474,16 @@ class FeedsClient extends FeedsApi {
6397
6474
  }
6398
6475
  return response;
6399
6476
  };
6400
- this.addReaction = async (request) => {
6401
- const response = await super.addReaction(request);
6477
+ this.addActivityReaction = async (request) => {
6478
+ const response = await super.addActivityReaction(request);
6402
6479
  for (const feed of Object.values(this.activeFeeds)) {
6403
6480
  handleActivityReactionAdded.bind(feed)(response, false);
6404
6481
  }
6405
6482
  return response;
6406
6483
  };
6484
+ this.addReaction = (request) => {
6485
+ return this.addActivityReaction(request);
6486
+ };
6407
6487
  this.deleteActivityReaction = async (request) => {
6408
6488
  const response = await super.deleteActivityReaction(request);
6409
6489
  for (const feed of Object.values(this.activeFeeds)) {
@@ -6778,7 +6858,8 @@ exports.isImageFile = isImageFile;
6778
6858
  exports.isReactionResponse = isReactionResponse;
6779
6859
  exports.isVideoFile = isVideoFile;
6780
6860
  exports.isVoteAnswer = isVoteAnswer;
6861
+ exports.replaceUniqueArrayMerge = replaceUniqueArrayMerge;
6781
6862
  exports.shouldUpdateState = shouldUpdateState;
6782
6863
  exports.uniqueArrayMerge = uniqueArrayMerge;
6783
6864
  exports.updateEntityInArray = updateEntityInArray;
6784
- //# sourceMappingURL=index-RzB4c4g6.js.map
6865
+ //# sourceMappingURL=index-DRX66SIx.js.map