@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.
- package/CHANGELOG.md +49 -0
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/react-bindings.js +1 -1
- package/dist/es/index.mjs +3 -2
- package/dist/es/index.mjs.map +1 -1
- package/dist/es/react-bindings.mjs +1 -1
- package/dist/{feeds-client-DuLOUu6_.mjs → feeds-client-ZdWyhS1v.mjs} +113 -10
- package/dist/feeds-client-ZdWyhS1v.mjs.map +1 -0
- package/dist/{feeds-client-DmA8dntK.js → feeds-client-jZwPzici.js} +113 -10
- package/dist/feeds-client-jZwPzici.js.map +1 -0
- package/dist/types/common/real-time/StableWSConnection.d.ts +3 -3
- package/dist/types/common/real-time/StableWSConnection.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/activity/handle-activity-feedback.d.ts +4 -0
- package/dist/types/feed/event-handlers/activity/handle-activity-feedback.d.ts.map +1 -0
- package/dist/types/feed/event-handlers/activity-updater.d.ts +4 -1
- package/dist/types/feed/event-handlers/activity-updater.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/is-activity-pin.d.ts +3 -0
- package/dist/types/feed/event-handlers/is-activity-pin.d.ts.map +1 -0
- package/dist/types/feed/feed.d.ts +2 -2
- package/dist/types/feed/feed.d.ts.map +1 -1
- package/dist/types/feeds-client/feeds-client.d.ts +2 -2
- package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
- package/dist/types/gen/feeds/FeedsApi.d.ts.map +1 -1
- package/dist/types/gen/model-decoders/event-decoder-mapping.d.ts.map +1 -1
- package/dist/types/gen/models/index.d.ts +117 -12
- package/dist/types/gen/models/index.d.ts.map +1 -1
- package/dist/types/gen/moderation/ModerationApi.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/feed/event-handlers/activity/handle-activity-feedback.ts +78 -0
- package/src/feed/event-handlers/is-activity-pin.ts +7 -0
- package/src/feed/feed.ts +6 -1
- package/src/feeds-client/feeds-client.ts +7 -0
- package/src/gen/feeds/FeedsApi.ts +2 -3
- package/src/gen/model-decoders/decoders.ts +58 -3
- package/src/gen/model-decoders/event-decoder-mapping.ts +3 -0
- package/src/gen/models/index.ts +210 -17
- package/src/gen/moderation/ModerationApi.ts +3 -0
- package/dist/feeds-client-DmA8dntK.js.map +0 -1
- 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: "
|
|
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: "
|
|
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: "
|
|
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.
|
|
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([
|
|
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-
|
|
7315
|
+
//# sourceMappingURL=feeds-client-jZwPzici.js.map
|