@stream-io/feeds-client 0.3.0 → 0.3.2

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 (40) hide show
  1. package/CHANGELOG.md +49 -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 +1 -1
  5. package/dist/es/index.mjs +3 -2
  6. package/dist/es/index.mjs.map +1 -1
  7. package/dist/es/react-bindings.mjs +1 -1
  8. package/dist/{feeds-client-DuLOUu6_.mjs → feeds-client-ZdWyhS1v.mjs} +113 -10
  9. package/dist/feeds-client-ZdWyhS1v.mjs.map +1 -0
  10. package/dist/{feeds-client-DmA8dntK.js → feeds-client-jZwPzici.js} +113 -10
  11. package/dist/feeds-client-jZwPzici.js.map +1 -0
  12. package/dist/types/common/real-time/StableWSConnection.d.ts +3 -3
  13. package/dist/types/common/real-time/StableWSConnection.d.ts.map +1 -1
  14. package/dist/types/feed/event-handlers/activity/handle-activity-feedback.d.ts +4 -0
  15. package/dist/types/feed/event-handlers/activity/handle-activity-feedback.d.ts.map +1 -0
  16. package/dist/types/feed/event-handlers/activity-updater.d.ts +4 -1
  17. package/dist/types/feed/event-handlers/activity-updater.d.ts.map +1 -1
  18. package/dist/types/feed/event-handlers/is-activity-pin.d.ts +3 -0
  19. package/dist/types/feed/event-handlers/is-activity-pin.d.ts.map +1 -0
  20. package/dist/types/feed/feed.d.ts +2 -2
  21. package/dist/types/feed/feed.d.ts.map +1 -1
  22. package/dist/types/feeds-client/feeds-client.d.ts +2 -2
  23. package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
  24. package/dist/types/gen/feeds/FeedsApi.d.ts.map +1 -1
  25. package/dist/types/gen/model-decoders/event-decoder-mapping.d.ts.map +1 -1
  26. package/dist/types/gen/models/index.d.ts +117 -12
  27. package/dist/types/gen/models/index.d.ts.map +1 -1
  28. package/dist/types/gen/moderation/ModerationApi.d.ts.map +1 -1
  29. package/package.json +1 -1
  30. package/src/feed/event-handlers/activity/handle-activity-feedback.ts +78 -0
  31. package/src/feed/event-handlers/is-activity-pin.ts +7 -0
  32. package/src/feed/feed.ts +6 -1
  33. package/src/feeds-client/feeds-client.ts +7 -0
  34. package/src/gen/feeds/FeedsApi.ts +2 -3
  35. package/src/gen/model-decoders/decoders.ts +58 -3
  36. package/src/gen/model-decoders/event-decoder-mapping.ts +3 -0
  37. package/src/gen/models/index.ts +210 -17
  38. package/src/gen/moderation/ModerationApi.ts +3 -0
  39. package/dist/feeds-client-DmA8dntK.js.map +0 -1
  40. package/dist/feeds-client-DuLOUu6_.mjs.map +0 -1
@@ -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 },
@@ -389,7 +396,7 @@ decoders.ChannelMember = (input) => {
389
396
  invite_accepted_at: { type: "DatetimeType", isSingle: true },
390
397
  invite_rejected_at: { type: "DatetimeType", isSingle: true },
391
398
  pinned_at: { type: "DatetimeType", isSingle: true },
392
- user: { type: "UserResponse", isSingle: true }
399
+ user: { type: "User", isSingle: true }
393
400
  };
394
401
  return decode(typeMappings, input);
395
402
  };
@@ -401,6 +408,20 @@ decoders.ChannelMemberLookup = (input) => {
401
408
  };
402
409
  return decode(typeMappings, input);
403
410
  };
411
+ decoders.ChannelMemberResponse = (input) => {
412
+ const typeMappings = {
413
+ created_at: { type: "DatetimeType", isSingle: true },
414
+ updated_at: { type: "DatetimeType", isSingle: true },
415
+ archived_at: { type: "DatetimeType", isSingle: true },
416
+ ban_expires: { type: "DatetimeType", isSingle: true },
417
+ deleted_at: { type: "DatetimeType", isSingle: true },
418
+ invite_accepted_at: { type: "DatetimeType", isSingle: true },
419
+ invite_rejected_at: { type: "DatetimeType", isSingle: true },
420
+ pinned_at: { type: "DatetimeType", isSingle: true },
421
+ user: { type: "UserResponse", isSingle: true }
422
+ };
423
+ return decode(typeMappings, input);
424
+ };
404
425
  decoders.ChannelMute = (input) => {
405
426
  const typeMappings = {
406
427
  created_at: { type: "DatetimeType", isSingle: true },
@@ -420,7 +441,7 @@ decoders.ChannelResponse = (input) => {
420
441
  last_message_at: { type: "DatetimeType", isSingle: true },
421
442
  mute_expires_at: { type: "DatetimeType", isSingle: true },
422
443
  truncated_at: { type: "DatetimeType", isSingle: true },
423
- members: { type: "ChannelMember", isSingle: false },
444
+ members: { type: "ChannelMemberResponse", isSingle: false },
424
445
  config: { type: "ChannelConfigWithInfo", isSingle: true },
425
446
  created_by: { type: "UserResponse", isSingle: true },
426
447
  truncated_by: { type: "UserResponse", isSingle: true }
@@ -673,6 +694,17 @@ decoders.FeedResponse = (input) => {
673
694
  };
674
695
  return decode(typeMappings, input);
675
696
  };
697
+ decoders.FeedSuggestionResponse = (input) => {
698
+ const typeMappings = {
699
+ created_at: { type: "DatetimeType", isSingle: true },
700
+ updated_at: { type: "DatetimeType", isSingle: true },
701
+ created_by: { type: "UserResponse", isSingle: true },
702
+ deleted_at: { type: "DatetimeType", isSingle: true },
703
+ own_follows: { type: "FollowResponse", isSingle: false },
704
+ own_membership: { type: "FeedMemberResponse", isSingle: true }
705
+ };
706
+ return decode(typeMappings, input);
707
+ };
676
708
  decoders.FeedUpdatedEvent = (input) => {
677
709
  const typeMappings = {
678
710
  created_at: { type: "DatetimeType", isSingle: true },
@@ -783,7 +815,7 @@ decoders.GetConfigResponse = (input) => {
783
815
  };
784
816
  decoders.GetFollowSuggestionsResponse = (input) => {
785
817
  const typeMappings = {
786
- suggestions: { type: "FeedResponse", isSingle: false }
818
+ suggestions: { type: "FeedSuggestionResponse", isSingle: false }
787
819
  };
788
820
  return decode(typeMappings, input);
789
821
  };
@@ -877,6 +909,7 @@ decoders.MessageResponse = (input) => {
877
909
  pinned_at: { type: "DatetimeType", isSingle: true },
878
910
  thread_participants: { type: "UserResponse", isSingle: false },
879
911
  draft: { type: "DraftResponse", isSingle: true },
912
+ member: { type: "ChannelMemberResponse", isSingle: true },
880
913
  pinned_by: { type: "UserResponse", isSingle: true },
881
914
  poll: { type: "PollResponseData", isSingle: true },
882
915
  quoted_message: { type: "MessageResponse", isSingle: true },
@@ -1216,6 +1249,8 @@ decoders.ReviewQueueItemResponse = (input) => {
1216
1249
  call: { type: "CallResponse", isSingle: true },
1217
1250
  entity_creator: { type: "EntityCreatorResponse", isSingle: true },
1218
1251
  feeds_v2_reaction: { type: "Reaction", isSingle: true },
1252
+ feeds_v3_activity: { type: "ActivityResponse", isSingle: true },
1253
+ feeds_v3_comment: { type: "CommentResponse", isSingle: true },
1219
1254
  message: { type: "MessageResponse", isSingle: true },
1220
1255
  reaction: { type: "Reaction", isSingle: true }
1221
1256
  };
@@ -1589,6 +1624,7 @@ class FeedsApi {
1589
1624
  id: request?.id,
1590
1625
  parent_id: request?.parent_id,
1591
1626
  poll_id: request?.poll_id,
1627
+ restrict_replies: request?.restrict_replies,
1592
1628
  text: request?.text,
1593
1629
  visibility: request?.visibility,
1594
1630
  visibility_tag: request?.visibility_tag,
@@ -1724,9 +1760,6 @@ class FeedsApi {
1724
1760
  };
1725
1761
  const body = {
1726
1762
  hide: request?.hide,
1727
- mute_user: request?.mute_user,
1728
- reason: request?.reason,
1729
- report: request?.report,
1730
1763
  show_less: request?.show_less,
1731
1764
  show_more: request?.show_more
1732
1765
  };
@@ -1881,6 +1914,7 @@ class FeedsApi {
1881
1914
  const body = {
1882
1915
  expires_at: request?.expires_at,
1883
1916
  poll_id: request?.poll_id,
1917
+ restrict_replies: request?.restrict_replies,
1884
1918
  text: request?.text,
1885
1919
  visibility: request?.visibility,
1886
1920
  attachments: request?.attachments,
@@ -3748,7 +3782,7 @@ const getRateLimitFromResponseHeader = (response_headers) => {
3748
3782
  };
3749
3783
  return result;
3750
3784
  };
3751
- const version = "0.3.0";
3785
+ const version = "0.3.2";
3752
3786
  class ApiClient {
3753
3787
  constructor(apiKey, tokenManager, connectionIdManager, options) {
3754
3788
  this.apiKey = apiKey;
@@ -3922,6 +3956,7 @@ const eventDecoderMapping = {
3922
3956
  "app.updated": (data) => decoders.AppUpdatedEvent(data),
3923
3957
  "feeds.activity.added": (data) => decoders.ActivityAddedEvent(data),
3924
3958
  "feeds.activity.deleted": (data) => decoders.ActivityDeletedEvent(data),
3959
+ "feeds.activity.feedback": (data) => decoders.ActivityFeedbackEvent(data),
3925
3960
  "feeds.activity.marked": (data) => decoders.ActivityMarkEvent(data),
3926
3961
  "feeds.activity.pinned": (data) => decoders.ActivityPinnedEvent(data),
3927
3962
  "feeds.activity.reaction.added": (data) => decoders.ActivityReactionAddedEvent(data),
@@ -4140,12 +4175,15 @@ class ModerationApi {
4140
4175
  action_type: request?.action_type,
4141
4176
  item_id: request?.item_id,
4142
4177
  ban: request?.ban,
4178
+ block: request?.block,
4143
4179
  custom: request?.custom,
4144
4180
  delete_activity: request?.delete_activity,
4181
+ delete_comment: request?.delete_comment,
4145
4182
  delete_message: request?.delete_message,
4146
4183
  delete_reaction: request?.delete_reaction,
4147
4184
  delete_user: request?.delete_user,
4148
4185
  mark_reviewed: request?.mark_reviewed,
4186
+ shadow_block: request?.shadow_block,
4149
4187
  unban: request?.unban
4150
4188
  };
4151
4189
  const response = await this.apiClient.sendRequest(
@@ -5979,6 +6017,61 @@ function handleWatchStarted() {
5979
6017
  function handleWatchStopped() {
5980
6018
  this.state.partialNext({ watch: false });
5981
6019
  }
6020
+ const isPin = (entity) => {
6021
+ return "activity" in entity;
6022
+ };
6023
+ const updateActivityFromFeedback = (feedback, activities) => {
6024
+ if (!activities) {
6025
+ return {
6026
+ changed: false,
6027
+ entities: []
6028
+ };
6029
+ }
6030
+ return updateEntityInArray({
6031
+ entities: activities,
6032
+ matcher: (e) => isPin(e) ? e.activity.id === feedback.activity_id : e.id === feedback.activity_id,
6033
+ updater: (e) => {
6034
+ if (isPin(e)) {
6035
+ return {
6036
+ ...e,
6037
+ activity: {
6038
+ ...e.activity,
6039
+ hidden: feedback.value === "true"
6040
+ }
6041
+ };
6042
+ } else {
6043
+ return {
6044
+ ...e,
6045
+ hidden: feedback.value === "true"
6046
+ };
6047
+ }
6048
+ }
6049
+ });
6050
+ };
6051
+ function handleActivityFeedback(event) {
6052
+ const {
6053
+ activities: currentActivities,
6054
+ pinned_activities: currentPinnedActivities
6055
+ } = this.currentState;
6056
+ const { connected_user: connectedUser } = this.client.state.getLatestValue();
6057
+ const eventBelongsToCurrentUser = event.activity_feedback.user.id === connectedUser?.id;
6058
+ if (!eventBelongsToCurrentUser || event.activity_feedback.action !== "hide") {
6059
+ return;
6060
+ }
6061
+ const [result1, result2] = [
6062
+ updateActivityFromFeedback(event.activity_feedback, currentActivities),
6063
+ updateActivityFromFeedback(
6064
+ event.activity_feedback,
6065
+ currentPinnedActivities
6066
+ )
6067
+ ];
6068
+ if (result1.changed || result2.changed) {
6069
+ this.state.partialNext({
6070
+ activities: result1.entities,
6071
+ pinned_activities: result2.entities
6072
+ });
6073
+ }
6074
+ }
5982
6075
  const _Feed = class _Feed extends FeedApi {
5983
6076
  constructor(client, groupId, id, data, watch = false, addNewActivitiesTo = "start") {
5984
6077
  super(client, groupId, id);
@@ -6035,7 +6128,8 @@ const _Feed = class _Feed extends FeedApi {
6035
6128
  "user.deactivated": _Feed.noop,
6036
6129
  "user.muted": _Feed.noop,
6037
6130
  "user.reactivated": _Feed.noop,
6038
- "user.updated": _Feed.noop
6131
+ "user.updated": _Feed.noop,
6132
+ "feeds.activity.feedback": handleActivityFeedback.bind(this)
6039
6133
  };
6040
6134
  this.eventDispatcher = new EventDispatcher();
6041
6135
  this.on = this.eventDispatcher.on;
@@ -6098,7 +6192,10 @@ const _Feed = class _Feed extends FeedApi {
6098
6192
  currentActivityFeeds.push(activity.current_feed);
6099
6193
  }
6100
6194
  }
6101
- this.client.hydrateCapabilitiesCache([response.feed, ...currentActivityFeeds]);
6195
+ this.client.hydrateCapabilitiesCache([
6196
+ response.feed,
6197
+ ...currentActivityFeeds
6198
+ ]);
6102
6199
  if (request?.next) {
6103
6200
  const { activities: currentActivities = [] } = this.currentState;
6104
6201
  const result = addActivitiesToState.bind(this)(
@@ -7046,6 +7143,12 @@ class FeedsClient extends FeedsApi {
7046
7143
  feeds.forEach((f) => f.handleWSEvent(event));
7047
7144
  break;
7048
7145
  }
7146
+ case "feeds.activity.feedback": {
7147
+ const activityId = event.activity_feedback.activity_id;
7148
+ const feeds = this.findActiveFeedByActivityId(activityId);
7149
+ feeds.forEach((f) => f.handleWSEvent(event));
7150
+ break;
7151
+ }
7049
7152
  case "user.updated": {
7050
7153
  handleUserUpdated.call(this, event);
7051
7154
  break;
@@ -7209,4 +7312,4 @@ exports.replaceUniqueArrayMerge = replaceUniqueArrayMerge;
7209
7312
  exports.shouldUpdateState = shouldUpdateState;
7210
7313
  exports.uniqueArrayMerge = uniqueArrayMerge;
7211
7314
  exports.updateEntityInArray = updateEntityInArray;
7212
- //# sourceMappingURL=feeds-client-DmA8dntK.js.map
7315
+ //# sourceMappingURL=feeds-client-jZwPzici.js.map