@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
@@ -1,6 +1,6 @@
1
1
  import require$$0, { useCallback, useMemo, useState, useEffect, createContext, useContext, useRef } from "react";
2
2
  import "@stream-io/state-store";
3
- import { F as FeedsClient, g as isCommentResponse, c as checkHasAnotherPage } from "../feeds-client-DuLOUu6_.mjs";
3
+ import { F as FeedsClient, g as isCommentResponse, c as checkHasAnotherPage } from "../feeds-client-ZdWyhS1v.mjs";
4
4
  import "@stream-io/logger";
5
5
  import "axios";
6
6
  var shim = { exports: {} };
@@ -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 },
@@ -371,7 +378,7 @@ decoders.ChannelMember = (input) => {
371
378
  invite_accepted_at: { type: "DatetimeType", isSingle: true },
372
379
  invite_rejected_at: { type: "DatetimeType", isSingle: true },
373
380
  pinned_at: { type: "DatetimeType", isSingle: true },
374
- user: { type: "UserResponse", isSingle: true }
381
+ user: { type: "User", isSingle: true }
375
382
  };
376
383
  return decode(typeMappings, input);
377
384
  };
@@ -383,6 +390,20 @@ decoders.ChannelMemberLookup = (input) => {
383
390
  };
384
391
  return decode(typeMappings, input);
385
392
  };
393
+ decoders.ChannelMemberResponse = (input) => {
394
+ const typeMappings = {
395
+ created_at: { type: "DatetimeType", isSingle: true },
396
+ updated_at: { type: "DatetimeType", isSingle: true },
397
+ archived_at: { type: "DatetimeType", isSingle: true },
398
+ ban_expires: { type: "DatetimeType", isSingle: true },
399
+ deleted_at: { type: "DatetimeType", isSingle: true },
400
+ invite_accepted_at: { type: "DatetimeType", isSingle: true },
401
+ invite_rejected_at: { type: "DatetimeType", isSingle: true },
402
+ pinned_at: { type: "DatetimeType", isSingle: true },
403
+ user: { type: "UserResponse", isSingle: true }
404
+ };
405
+ return decode(typeMappings, input);
406
+ };
386
407
  decoders.ChannelMute = (input) => {
387
408
  const typeMappings = {
388
409
  created_at: { type: "DatetimeType", isSingle: true },
@@ -402,7 +423,7 @@ decoders.ChannelResponse = (input) => {
402
423
  last_message_at: { type: "DatetimeType", isSingle: true },
403
424
  mute_expires_at: { type: "DatetimeType", isSingle: true },
404
425
  truncated_at: { type: "DatetimeType", isSingle: true },
405
- members: { type: "ChannelMember", isSingle: false },
426
+ members: { type: "ChannelMemberResponse", isSingle: false },
406
427
  config: { type: "ChannelConfigWithInfo", isSingle: true },
407
428
  created_by: { type: "UserResponse", isSingle: true },
408
429
  truncated_by: { type: "UserResponse", isSingle: true }
@@ -655,6 +676,17 @@ decoders.FeedResponse = (input) => {
655
676
  };
656
677
  return decode(typeMappings, input);
657
678
  };
679
+ decoders.FeedSuggestionResponse = (input) => {
680
+ const typeMappings = {
681
+ created_at: { type: "DatetimeType", isSingle: true },
682
+ updated_at: { type: "DatetimeType", isSingle: true },
683
+ created_by: { type: "UserResponse", isSingle: true },
684
+ deleted_at: { type: "DatetimeType", isSingle: true },
685
+ own_follows: { type: "FollowResponse", isSingle: false },
686
+ own_membership: { type: "FeedMemberResponse", isSingle: true }
687
+ };
688
+ return decode(typeMappings, input);
689
+ };
658
690
  decoders.FeedUpdatedEvent = (input) => {
659
691
  const typeMappings = {
660
692
  created_at: { type: "DatetimeType", isSingle: true },
@@ -765,7 +797,7 @@ decoders.GetConfigResponse = (input) => {
765
797
  };
766
798
  decoders.GetFollowSuggestionsResponse = (input) => {
767
799
  const typeMappings = {
768
- suggestions: { type: "FeedResponse", isSingle: false }
800
+ suggestions: { type: "FeedSuggestionResponse", isSingle: false }
769
801
  };
770
802
  return decode(typeMappings, input);
771
803
  };
@@ -859,6 +891,7 @@ decoders.MessageResponse = (input) => {
859
891
  pinned_at: { type: "DatetimeType", isSingle: true },
860
892
  thread_participants: { type: "UserResponse", isSingle: false },
861
893
  draft: { type: "DraftResponse", isSingle: true },
894
+ member: { type: "ChannelMemberResponse", isSingle: true },
862
895
  pinned_by: { type: "UserResponse", isSingle: true },
863
896
  poll: { type: "PollResponseData", isSingle: true },
864
897
  quoted_message: { type: "MessageResponse", isSingle: true },
@@ -1198,6 +1231,8 @@ decoders.ReviewQueueItemResponse = (input) => {
1198
1231
  call: { type: "CallResponse", isSingle: true },
1199
1232
  entity_creator: { type: "EntityCreatorResponse", isSingle: true },
1200
1233
  feeds_v2_reaction: { type: "Reaction", isSingle: true },
1234
+ feeds_v3_activity: { type: "ActivityResponse", isSingle: true },
1235
+ feeds_v3_comment: { type: "CommentResponse", isSingle: true },
1201
1236
  message: { type: "MessageResponse", isSingle: true },
1202
1237
  reaction: { type: "Reaction", isSingle: true }
1203
1238
  };
@@ -1571,6 +1606,7 @@ class FeedsApi {
1571
1606
  id: request?.id,
1572
1607
  parent_id: request?.parent_id,
1573
1608
  poll_id: request?.poll_id,
1609
+ restrict_replies: request?.restrict_replies,
1574
1610
  text: request?.text,
1575
1611
  visibility: request?.visibility,
1576
1612
  visibility_tag: request?.visibility_tag,
@@ -1706,9 +1742,6 @@ class FeedsApi {
1706
1742
  };
1707
1743
  const body = {
1708
1744
  hide: request?.hide,
1709
- mute_user: request?.mute_user,
1710
- reason: request?.reason,
1711
- report: request?.report,
1712
1745
  show_less: request?.show_less,
1713
1746
  show_more: request?.show_more
1714
1747
  };
@@ -1863,6 +1896,7 @@ class FeedsApi {
1863
1896
  const body = {
1864
1897
  expires_at: request?.expires_at,
1865
1898
  poll_id: request?.poll_id,
1899
+ restrict_replies: request?.restrict_replies,
1866
1900
  text: request?.text,
1867
1901
  visibility: request?.visibility,
1868
1902
  attachments: request?.attachments,
@@ -3730,7 +3764,7 @@ const getRateLimitFromResponseHeader = (response_headers) => {
3730
3764
  };
3731
3765
  return result;
3732
3766
  };
3733
- const version = "0.3.0";
3767
+ const version = "0.3.2";
3734
3768
  class ApiClient {
3735
3769
  constructor(apiKey, tokenManager, connectionIdManager, options) {
3736
3770
  this.apiKey = apiKey;
@@ -3904,6 +3938,7 @@ const eventDecoderMapping = {
3904
3938
  "app.updated": (data) => decoders.AppUpdatedEvent(data),
3905
3939
  "feeds.activity.added": (data) => decoders.ActivityAddedEvent(data),
3906
3940
  "feeds.activity.deleted": (data) => decoders.ActivityDeletedEvent(data),
3941
+ "feeds.activity.feedback": (data) => decoders.ActivityFeedbackEvent(data),
3907
3942
  "feeds.activity.marked": (data) => decoders.ActivityMarkEvent(data),
3908
3943
  "feeds.activity.pinned": (data) => decoders.ActivityPinnedEvent(data),
3909
3944
  "feeds.activity.reaction.added": (data) => decoders.ActivityReactionAddedEvent(data),
@@ -4122,12 +4157,15 @@ class ModerationApi {
4122
4157
  action_type: request?.action_type,
4123
4158
  item_id: request?.item_id,
4124
4159
  ban: request?.ban,
4160
+ block: request?.block,
4125
4161
  custom: request?.custom,
4126
4162
  delete_activity: request?.delete_activity,
4163
+ delete_comment: request?.delete_comment,
4127
4164
  delete_message: request?.delete_message,
4128
4165
  delete_reaction: request?.delete_reaction,
4129
4166
  delete_user: request?.delete_user,
4130
4167
  mark_reviewed: request?.mark_reviewed,
4168
+ shadow_block: request?.shadow_block,
4131
4169
  unban: request?.unban
4132
4170
  };
4133
4171
  const response = await this.apiClient.sendRequest(
@@ -5961,6 +5999,61 @@ function handleWatchStarted() {
5961
5999
  function handleWatchStopped() {
5962
6000
  this.state.partialNext({ watch: false });
5963
6001
  }
6002
+ const isPin = (entity) => {
6003
+ return "activity" in entity;
6004
+ };
6005
+ const updateActivityFromFeedback = (feedback, activities) => {
6006
+ if (!activities) {
6007
+ return {
6008
+ changed: false,
6009
+ entities: []
6010
+ };
6011
+ }
6012
+ return updateEntityInArray({
6013
+ entities: activities,
6014
+ matcher: (e) => isPin(e) ? e.activity.id === feedback.activity_id : e.id === feedback.activity_id,
6015
+ updater: (e) => {
6016
+ if (isPin(e)) {
6017
+ return {
6018
+ ...e,
6019
+ activity: {
6020
+ ...e.activity,
6021
+ hidden: feedback.value === "true"
6022
+ }
6023
+ };
6024
+ } else {
6025
+ return {
6026
+ ...e,
6027
+ hidden: feedback.value === "true"
6028
+ };
6029
+ }
6030
+ }
6031
+ });
6032
+ };
6033
+ function handleActivityFeedback(event) {
6034
+ const {
6035
+ activities: currentActivities,
6036
+ pinned_activities: currentPinnedActivities
6037
+ } = this.currentState;
6038
+ const { connected_user: connectedUser } = this.client.state.getLatestValue();
6039
+ const eventBelongsToCurrentUser = event.activity_feedback.user.id === connectedUser?.id;
6040
+ if (!eventBelongsToCurrentUser || event.activity_feedback.action !== "hide") {
6041
+ return;
6042
+ }
6043
+ const [result1, result2] = [
6044
+ updateActivityFromFeedback(event.activity_feedback, currentActivities),
6045
+ updateActivityFromFeedback(
6046
+ event.activity_feedback,
6047
+ currentPinnedActivities
6048
+ )
6049
+ ];
6050
+ if (result1.changed || result2.changed) {
6051
+ this.state.partialNext({
6052
+ activities: result1.entities,
6053
+ pinned_activities: result2.entities
6054
+ });
6055
+ }
6056
+ }
5964
6057
  const _Feed = class _Feed extends FeedApi {
5965
6058
  constructor(client, groupId, id, data, watch = false, addNewActivitiesTo = "start") {
5966
6059
  super(client, groupId, id);
@@ -6017,7 +6110,8 @@ const _Feed = class _Feed extends FeedApi {
6017
6110
  "user.deactivated": _Feed.noop,
6018
6111
  "user.muted": _Feed.noop,
6019
6112
  "user.reactivated": _Feed.noop,
6020
- "user.updated": _Feed.noop
6113
+ "user.updated": _Feed.noop,
6114
+ "feeds.activity.feedback": handleActivityFeedback.bind(this)
6021
6115
  };
6022
6116
  this.eventDispatcher = new EventDispatcher();
6023
6117
  this.on = this.eventDispatcher.on;
@@ -6080,7 +6174,10 @@ const _Feed = class _Feed extends FeedApi {
6080
6174
  currentActivityFeeds.push(activity.current_feed);
6081
6175
  }
6082
6176
  }
6083
- this.client.hydrateCapabilitiesCache([response.feed, ...currentActivityFeeds]);
6177
+ this.client.hydrateCapabilitiesCache([
6178
+ response.feed,
6179
+ ...currentActivityFeeds
6180
+ ]);
6084
6181
  if (request?.next) {
6085
6182
  const { activities: currentActivities = [] } = this.currentState;
6086
6183
  const result = addActivitiesToState.bind(this)(
@@ -7028,6 +7125,12 @@ class FeedsClient extends FeedsApi {
7028
7125
  feeds.forEach((f) => f.handleWSEvent(event));
7029
7126
  break;
7030
7127
  }
7128
+ case "feeds.activity.feedback": {
7129
+ const activityId = event.activity_feedback.activity_id;
7130
+ const feeds = this.findActiveFeedByActivityId(activityId);
7131
+ feeds.forEach((f) => f.handleWSEvent(event));
7132
+ break;
7133
+ }
7031
7134
  case "user.updated": {
7032
7135
  handleUserUpdated.call(this, event);
7033
7136
  break;
@@ -7193,4 +7296,4 @@ export {
7193
7296
  shouldUpdateState as s,
7194
7297
  uniqueArrayMerge as u
7195
7298
  };
7196
- //# sourceMappingURL=feeds-client-DuLOUu6_.mjs.map
7299
+ //# sourceMappingURL=feeds-client-ZdWyhS1v.mjs.map