@stream-io/feeds-client 0.2.21 → 0.3.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 (52) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/dist/cjs/index.js +1 -1
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/react-bindings.js +1 -57
  5. package/dist/cjs/react-bindings.js.map +1 -1
  6. package/dist/es/index.mjs +2 -2
  7. package/dist/es/index.mjs.map +1 -1
  8. package/dist/es/react-bindings.mjs +1 -57
  9. package/dist/es/react-bindings.mjs.map +1 -1
  10. package/dist/{feeds-client--EbdwYrY.js → feeds-client-CttWroOS.js} +89 -8
  11. package/dist/feeds-client-CttWroOS.js.map +1 -0
  12. package/dist/{feeds-client-5nGcdeuG.mjs → feeds-client-DJG_rRVO.mjs} +89 -8
  13. package/dist/feeds-client-DJG_rRVO.mjs.map +1 -0
  14. package/dist/types/bindings/react/index.d.ts +0 -1
  15. package/dist/types/bindings/react/index.d.ts.map +1 -1
  16. package/dist/types/common/real-time/StableWSConnection.d.ts +3 -3
  17. package/dist/types/common/real-time/StableWSConnection.d.ts.map +1 -1
  18. package/dist/types/feed/event-handlers/activity/handle-activity-feedback.d.ts +4 -0
  19. package/dist/types/feed/event-handlers/activity/handle-activity-feedback.d.ts.map +1 -0
  20. package/dist/types/feed/event-handlers/activity-updater.d.ts +2 -1
  21. package/dist/types/feed/event-handlers/activity-updater.d.ts.map +1 -1
  22. package/dist/types/feed/event-handlers/is-activity-pin.d.ts +3 -0
  23. package/dist/types/feed/event-handlers/is-activity-pin.d.ts.map +1 -0
  24. package/dist/types/feed/feed.d.ts +2 -2
  25. package/dist/types/feed/feed.d.ts.map +1 -1
  26. package/dist/types/feeds-client/feeds-client.d.ts +2 -2
  27. package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
  28. package/dist/types/gen/feeds/FeedsApi.d.ts.map +1 -1
  29. package/dist/types/gen/model-decoders/event-decoder-mapping.d.ts.map +1 -1
  30. package/dist/types/gen/models/index.d.ts +53 -5
  31. package/dist/types/gen/models/index.d.ts.map +1 -1
  32. package/package.json +1 -1
  33. package/src/bindings/react/index.ts +0 -1
  34. package/src/feed/event-handlers/activity/handle-activity-feedback.ts +78 -0
  35. package/src/feed/event-handlers/is-activity-pin.ts +7 -0
  36. package/src/feed/feed.ts +6 -1
  37. package/src/feeds-client/feeds-client.ts +7 -0
  38. package/src/gen/feeds/FeedsApi.ts +0 -3
  39. package/src/gen/model-decoders/decoders.ts +27 -1
  40. package/src/gen/model-decoders/event-decoder-mapping.ts +3 -0
  41. package/src/gen/models/index.ts +92 -8
  42. package/dist/feeds-client--EbdwYrY.js.map +0 -1
  43. package/dist/feeds-client-5nGcdeuG.mjs.map +0 -1
  44. package/dist/types/bindings/react/hooks/util/index.d.ts +0 -3
  45. package/dist/types/bindings/react/hooks/util/index.d.ts.map +0 -1
  46. package/dist/types/bindings/react/hooks/util/useBookmarkActions.d.ts +0 -14
  47. package/dist/types/bindings/react/hooks/util/useBookmarkActions.d.ts.map +0 -1
  48. package/dist/types/bindings/react/hooks/util/useReactionActions.d.ts +0 -18
  49. package/dist/types/bindings/react/hooks/util/useReactionActions.d.ts.map +0 -1
  50. package/src/bindings/react/hooks/util/index.ts +0 -2
  51. package/src/bindings/react/hooks/util/useBookmarkActions.ts +0 -40
  52. package/src/bindings/react/hooks/util/useReactionActions.ts +0 -57
@@ -61,6 +61,13 @@ decoders.ActivityDeletedEvent = (input) => {
61
61
  };
62
62
  return decode(typeMappings, input);
63
63
  };
64
+ decoders.ActivityFeedbackEvent = (input) => {
65
+ const typeMappings = {
66
+ created_at: { type: "DatetimeType", isSingle: true },
67
+ received_at: { type: "DatetimeType", isSingle: true }
68
+ };
69
+ return decode(typeMappings, input);
70
+ };
64
71
  decoders.ActivityMarkEvent = (input) => {
65
72
  const typeMappings = {
66
73
  created_at: { type: "DatetimeType", isSingle: true },
@@ -655,6 +662,17 @@ decoders.FeedResponse = (input) => {
655
662
  };
656
663
  return decode(typeMappings, input);
657
664
  };
665
+ decoders.FeedSuggestionResponse = (input) => {
666
+ const typeMappings = {
667
+ created_at: { type: "DatetimeType", isSingle: true },
668
+ updated_at: { type: "DatetimeType", isSingle: true },
669
+ created_by: { type: "UserResponse", isSingle: true },
670
+ deleted_at: { type: "DatetimeType", isSingle: true },
671
+ own_follows: { type: "FollowResponse", isSingle: false },
672
+ own_membership: { type: "FeedMemberResponse", isSingle: true }
673
+ };
674
+ return decode(typeMappings, input);
675
+ };
658
676
  decoders.FeedUpdatedEvent = (input) => {
659
677
  const typeMappings = {
660
678
  created_at: { type: "DatetimeType", isSingle: true },
@@ -765,7 +783,7 @@ decoders.GetConfigResponse = (input) => {
765
783
  };
766
784
  decoders.GetFollowSuggestionsResponse = (input) => {
767
785
  const typeMappings = {
768
- suggestions: { type: "FeedResponse", isSingle: false }
786
+ suggestions: { type: "FeedSuggestionResponse", isSingle: false }
769
787
  };
770
788
  return decode(typeMappings, input);
771
789
  };
@@ -1706,9 +1724,6 @@ class FeedsApi {
1706
1724
  };
1707
1725
  const body = {
1708
1726
  hide: request?.hide,
1709
- mute_user: request?.mute_user,
1710
- reason: request?.reason,
1711
- report: request?.report,
1712
1727
  show_less: request?.show_less,
1713
1728
  show_more: request?.show_more
1714
1729
  };
@@ -3730,7 +3745,7 @@ const getRateLimitFromResponseHeader = (response_headers) => {
3730
3745
  };
3731
3746
  return result;
3732
3747
  };
3733
- const version = "0.2.21";
3748
+ const version = "0.3.1";
3734
3749
  class ApiClient {
3735
3750
  constructor(apiKey, tokenManager, connectionIdManager, options) {
3736
3751
  this.apiKey = apiKey;
@@ -3904,6 +3919,7 @@ const eventDecoderMapping = {
3904
3919
  "app.updated": (data) => decoders.AppUpdatedEvent(data),
3905
3920
  "feeds.activity.added": (data) => decoders.ActivityAddedEvent(data),
3906
3921
  "feeds.activity.deleted": (data) => decoders.ActivityDeletedEvent(data),
3922
+ "feeds.activity.feedback": (data) => decoders.ActivityFeedbackEvent(data),
3907
3923
  "feeds.activity.marked": (data) => decoders.ActivityMarkEvent(data),
3908
3924
  "feeds.activity.pinned": (data) => decoders.ActivityPinnedEvent(data),
3909
3925
  "feeds.activity.reaction.added": (data) => decoders.ActivityReactionAddedEvent(data),
@@ -5961,6 +5977,61 @@ function handleWatchStarted() {
5961
5977
  function handleWatchStopped() {
5962
5978
  this.state.partialNext({ watch: false });
5963
5979
  }
5980
+ const isPin = (entity) => {
5981
+ return "activity" in entity;
5982
+ };
5983
+ const updateActivityFromFeedback = (feedback, activities) => {
5984
+ if (!activities) {
5985
+ return {
5986
+ changed: false,
5987
+ entities: []
5988
+ };
5989
+ }
5990
+ return updateEntityInArray({
5991
+ entities: activities,
5992
+ matcher: (e) => isPin(e) ? e.activity.id === feedback.activity_id : e.id === feedback.activity_id,
5993
+ updater: (e) => {
5994
+ if (isPin(e)) {
5995
+ return {
5996
+ ...e,
5997
+ activity: {
5998
+ ...e.activity,
5999
+ hidden: feedback.value === "true"
6000
+ }
6001
+ };
6002
+ } else {
6003
+ return {
6004
+ ...e,
6005
+ hidden: feedback.value === "true"
6006
+ };
6007
+ }
6008
+ }
6009
+ });
6010
+ };
6011
+ function handleActivityFeedback(event) {
6012
+ const {
6013
+ activities: currentActivities,
6014
+ pinned_activities: currentPinnedActivities
6015
+ } = this.currentState;
6016
+ const { connected_user: connectedUser } = this.client.state.getLatestValue();
6017
+ const eventBelongsToCurrentUser = event.activity_feedback.user.id === connectedUser?.id;
6018
+ if (!eventBelongsToCurrentUser || event.activity_feedback.action !== "hide") {
6019
+ return;
6020
+ }
6021
+ const [result1, result2] = [
6022
+ updateActivityFromFeedback(event.activity_feedback, currentActivities),
6023
+ updateActivityFromFeedback(
6024
+ event.activity_feedback,
6025
+ currentPinnedActivities
6026
+ )
6027
+ ];
6028
+ if (result1.changed || result2.changed) {
6029
+ this.state.partialNext({
6030
+ activities: result1.entities,
6031
+ pinned_activities: result2.entities
6032
+ });
6033
+ }
6034
+ }
5964
6035
  const _Feed = class _Feed extends FeedApi {
5965
6036
  constructor(client, groupId, id, data, watch = false, addNewActivitiesTo = "start") {
5966
6037
  super(client, groupId, id);
@@ -6017,7 +6088,8 @@ const _Feed = class _Feed extends FeedApi {
6017
6088
  "user.deactivated": _Feed.noop,
6018
6089
  "user.muted": _Feed.noop,
6019
6090
  "user.reactivated": _Feed.noop,
6020
- "user.updated": _Feed.noop
6091
+ "user.updated": _Feed.noop,
6092
+ "feeds.activity.feedback": handleActivityFeedback.bind(this)
6021
6093
  };
6022
6094
  this.eventDispatcher = new EventDispatcher();
6023
6095
  this.on = this.eventDispatcher.on;
@@ -6080,7 +6152,10 @@ const _Feed = class _Feed extends FeedApi {
6080
6152
  currentActivityFeeds.push(activity.current_feed);
6081
6153
  }
6082
6154
  }
6083
- this.client.hydrateCapabilitiesCache([response.feed, ...currentActivityFeeds]);
6155
+ this.client.hydrateCapabilitiesCache([
6156
+ response.feed,
6157
+ ...currentActivityFeeds
6158
+ ]);
6084
6159
  if (request?.next) {
6085
6160
  const { activities: currentActivities = [] } = this.currentState;
6086
6161
  const result = addActivitiesToState.bind(this)(
@@ -7028,6 +7103,12 @@ class FeedsClient extends FeedsApi {
7028
7103
  feeds.forEach((f) => f.handleWSEvent(event));
7029
7104
  break;
7030
7105
  }
7106
+ case "feeds.activity.feedback": {
7107
+ const activityId = event.activity_feedback.activity_id;
7108
+ const feeds = this.findActiveFeedByActivityId(activityId);
7109
+ feeds.forEach((f) => f.handleWSEvent(event));
7110
+ break;
7111
+ }
7031
7112
  case "user.updated": {
7032
7113
  handleUserUpdated.call(this, event);
7033
7114
  break;
@@ -7193,4 +7274,4 @@ export {
7193
7274
  shouldUpdateState as s,
7194
7275
  uniqueArrayMerge as u
7195
7276
  };
7196
- //# sourceMappingURL=feeds-client-5nGcdeuG.mjs.map
7277
+ //# sourceMappingURL=feeds-client-DJG_rRVO.mjs.map