@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
@@ -79,6 +79,13 @@ decoders.ActivityDeletedEvent = (input) => {
79
79
  };
80
80
  return decode(typeMappings, input);
81
81
  };
82
+ decoders.ActivityFeedbackEvent = (input) => {
83
+ const typeMappings = {
84
+ created_at: { type: "DatetimeType", isSingle: true },
85
+ received_at: { type: "DatetimeType", isSingle: true }
86
+ };
87
+ return decode(typeMappings, input);
88
+ };
82
89
  decoders.ActivityMarkEvent = (input) => {
83
90
  const typeMappings = {
84
91
  created_at: { type: "DatetimeType", isSingle: true },
@@ -673,6 +680,17 @@ decoders.FeedResponse = (input) => {
673
680
  };
674
681
  return decode(typeMappings, input);
675
682
  };
683
+ decoders.FeedSuggestionResponse = (input) => {
684
+ const typeMappings = {
685
+ created_at: { type: "DatetimeType", isSingle: true },
686
+ updated_at: { type: "DatetimeType", isSingle: true },
687
+ created_by: { type: "UserResponse", isSingle: true },
688
+ deleted_at: { type: "DatetimeType", isSingle: true },
689
+ own_follows: { type: "FollowResponse", isSingle: false },
690
+ own_membership: { type: "FeedMemberResponse", isSingle: true }
691
+ };
692
+ return decode(typeMappings, input);
693
+ };
676
694
  decoders.FeedUpdatedEvent = (input) => {
677
695
  const typeMappings = {
678
696
  created_at: { type: "DatetimeType", isSingle: true },
@@ -783,7 +801,7 @@ decoders.GetConfigResponse = (input) => {
783
801
  };
784
802
  decoders.GetFollowSuggestionsResponse = (input) => {
785
803
  const typeMappings = {
786
- suggestions: { type: "FeedResponse", isSingle: false }
804
+ suggestions: { type: "FeedSuggestionResponse", isSingle: false }
787
805
  };
788
806
  return decode(typeMappings, input);
789
807
  };
@@ -1724,9 +1742,6 @@ class FeedsApi {
1724
1742
  };
1725
1743
  const body = {
1726
1744
  hide: request?.hide,
1727
- mute_user: request?.mute_user,
1728
- reason: request?.reason,
1729
- report: request?.report,
1730
1745
  show_less: request?.show_less,
1731
1746
  show_more: request?.show_more
1732
1747
  };
@@ -3748,7 +3763,7 @@ const getRateLimitFromResponseHeader = (response_headers) => {
3748
3763
  };
3749
3764
  return result;
3750
3765
  };
3751
- const version = "0.2.21";
3766
+ const version = "0.3.1";
3752
3767
  class ApiClient {
3753
3768
  constructor(apiKey, tokenManager, connectionIdManager, options) {
3754
3769
  this.apiKey = apiKey;
@@ -3922,6 +3937,7 @@ const eventDecoderMapping = {
3922
3937
  "app.updated": (data) => decoders.AppUpdatedEvent(data),
3923
3938
  "feeds.activity.added": (data) => decoders.ActivityAddedEvent(data),
3924
3939
  "feeds.activity.deleted": (data) => decoders.ActivityDeletedEvent(data),
3940
+ "feeds.activity.feedback": (data) => decoders.ActivityFeedbackEvent(data),
3925
3941
  "feeds.activity.marked": (data) => decoders.ActivityMarkEvent(data),
3926
3942
  "feeds.activity.pinned": (data) => decoders.ActivityPinnedEvent(data),
3927
3943
  "feeds.activity.reaction.added": (data) => decoders.ActivityReactionAddedEvent(data),
@@ -5979,6 +5995,61 @@ function handleWatchStarted() {
5979
5995
  function handleWatchStopped() {
5980
5996
  this.state.partialNext({ watch: false });
5981
5997
  }
5998
+ const isPin = (entity) => {
5999
+ return "activity" in entity;
6000
+ };
6001
+ const updateActivityFromFeedback = (feedback, activities) => {
6002
+ if (!activities) {
6003
+ return {
6004
+ changed: false,
6005
+ entities: []
6006
+ };
6007
+ }
6008
+ return updateEntityInArray({
6009
+ entities: activities,
6010
+ matcher: (e) => isPin(e) ? e.activity.id === feedback.activity_id : e.id === feedback.activity_id,
6011
+ updater: (e) => {
6012
+ if (isPin(e)) {
6013
+ return {
6014
+ ...e,
6015
+ activity: {
6016
+ ...e.activity,
6017
+ hidden: feedback.value === "true"
6018
+ }
6019
+ };
6020
+ } else {
6021
+ return {
6022
+ ...e,
6023
+ hidden: feedback.value === "true"
6024
+ };
6025
+ }
6026
+ }
6027
+ });
6028
+ };
6029
+ function handleActivityFeedback(event) {
6030
+ const {
6031
+ activities: currentActivities,
6032
+ pinned_activities: currentPinnedActivities
6033
+ } = this.currentState;
6034
+ const { connected_user: connectedUser } = this.client.state.getLatestValue();
6035
+ const eventBelongsToCurrentUser = event.activity_feedback.user.id === connectedUser?.id;
6036
+ if (!eventBelongsToCurrentUser || event.activity_feedback.action !== "hide") {
6037
+ return;
6038
+ }
6039
+ const [result1, result2] = [
6040
+ updateActivityFromFeedback(event.activity_feedback, currentActivities),
6041
+ updateActivityFromFeedback(
6042
+ event.activity_feedback,
6043
+ currentPinnedActivities
6044
+ )
6045
+ ];
6046
+ if (result1.changed || result2.changed) {
6047
+ this.state.partialNext({
6048
+ activities: result1.entities,
6049
+ pinned_activities: result2.entities
6050
+ });
6051
+ }
6052
+ }
5982
6053
  const _Feed = class _Feed extends FeedApi {
5983
6054
  constructor(client, groupId, id, data, watch = false, addNewActivitiesTo = "start") {
5984
6055
  super(client, groupId, id);
@@ -6035,7 +6106,8 @@ const _Feed = class _Feed extends FeedApi {
6035
6106
  "user.deactivated": _Feed.noop,
6036
6107
  "user.muted": _Feed.noop,
6037
6108
  "user.reactivated": _Feed.noop,
6038
- "user.updated": _Feed.noop
6109
+ "user.updated": _Feed.noop,
6110
+ "feeds.activity.feedback": handleActivityFeedback.bind(this)
6039
6111
  };
6040
6112
  this.eventDispatcher = new EventDispatcher();
6041
6113
  this.on = this.eventDispatcher.on;
@@ -6098,7 +6170,10 @@ const _Feed = class _Feed extends FeedApi {
6098
6170
  currentActivityFeeds.push(activity.current_feed);
6099
6171
  }
6100
6172
  }
6101
- this.client.hydrateCapabilitiesCache([response.feed, ...currentActivityFeeds]);
6173
+ this.client.hydrateCapabilitiesCache([
6174
+ response.feed,
6175
+ ...currentActivityFeeds
6176
+ ]);
6102
6177
  if (request?.next) {
6103
6178
  const { activities: currentActivities = [] } = this.currentState;
6104
6179
  const result = addActivitiesToState.bind(this)(
@@ -7046,6 +7121,12 @@ class FeedsClient extends FeedsApi {
7046
7121
  feeds.forEach((f) => f.handleWSEvent(event));
7047
7122
  break;
7048
7123
  }
7124
+ case "feeds.activity.feedback": {
7125
+ const activityId = event.activity_feedback.activity_id;
7126
+ const feeds = this.findActiveFeedByActivityId(activityId);
7127
+ feeds.forEach((f) => f.handleWSEvent(event));
7128
+ break;
7129
+ }
7049
7130
  case "user.updated": {
7050
7131
  handleUserUpdated.call(this, event);
7051
7132
  break;
@@ -7209,4 +7290,4 @@ exports.replaceUniqueArrayMerge = replaceUniqueArrayMerge;
7209
7290
  exports.shouldUpdateState = shouldUpdateState;
7210
7291
  exports.uniqueArrayMerge = uniqueArrayMerge;
7211
7292
  exports.updateEntityInArray = updateEntityInArray;
7212
- //# sourceMappingURL=feeds-client--EbdwYrY.js.map
7293
+ //# sourceMappingURL=feeds-client-CttWroOS.js.map