@stream-io/feeds-client 0.2.13 → 0.2.15
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 +14 -0
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/react-bindings.js +2 -2
- package/dist/cjs/react-bindings.js.map +1 -1
- package/dist/es/index.mjs +3 -2
- package/dist/es/react-bindings.mjs +2 -2
- package/dist/es/react-bindings.mjs.map +1 -1
- package/dist/{index-gvcJhGPH.mjs → index-BSzSBlMh.mjs} +96 -15
- package/dist/index-BSzSBlMh.mjs.map +1 -0
- package/dist/{index-RzB4c4g6.js → index-DRX66SIx.js} +96 -15
- package/dist/index-DRX66SIx.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- 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/{notification-feed/handle-notification-feed-updated.d.ts → aggregated-feed/handle-aggregated-feed-updated.d.ts} +10 -4
- package/dist/types/feed/event-handlers/aggregated-feed/handle-aggregated-feed-updated.d.ts.map +1 -0
- package/dist/types/feed/event-handlers/aggregated-feed/index.d.ts +2 -0
- package/dist/types/feed/event-handlers/aggregated-feed/index.d.ts.map +1 -0
- package/dist/types/feed/event-handlers/index.d.ts +1 -1
- package/dist/types/feed/event-handlers/index.d.ts.map +1 -1
- 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 +8 -2
- package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
- package/dist/types/gen/feeds/FeedsApi.d.ts +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 +17 -1
- package/dist/types/gen/models/index.d.ts.map +1 -1
- package/dist/types/utils/unique-array-merge.d.ts +1 -0
- package/dist/types/utils/unique-array-merge.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/bindings/react/hooks/util/useReactionActions.ts +1 -1
- package/src/feed/event-handlers/{notification-feed/handle-notification-feed-updated.test.ts → aggregated-feed/handle-aggregated-feed-updated.test.ts} +227 -1
- package/src/feed/event-handlers/{notification-feed/handle-notification-feed-updated.ts → aggregated-feed/handle-aggregated-feed-updated.ts} +71 -15
- package/src/feed/event-handlers/aggregated-feed/index.ts +1 -0
- package/src/feed/event-handlers/index.ts +1 -1
- package/src/feed/feed.ts +2 -0
- package/src/feeds-client/feeds-client.ts +15 -7
- package/src/gen/feeds/FeedsApi.ts +2 -2
- package/src/gen/model-decoders/decoders.ts +14 -0
- package/src/gen/model-decoders/event-decoder-mapping.ts +3 -0
- package/src/gen/models/index.ts +26 -2
- package/src/utils/unique-array-merge.ts +30 -0
- package/dist/index-RzB4c4g6.js.map +0 -1
- package/dist/index-gvcJhGPH.mjs.map +0 -1
- package/dist/types/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts.map +0 -1
- package/dist/types/feed/event-handlers/notification-feed/index.d.ts +0 -2
- package/dist/types/feed/event-handlers/notification-feed/index.d.ts.map +0 -1
- package/src/feed/event-handlers/notification-feed/index.ts +0 -1
|
@@ -1264,6 +1264,17 @@ decoders.SingleFollowResponse = (input) => {
|
|
|
1264
1264
|
};
|
|
1265
1265
|
return decode(typeMappings, input);
|
|
1266
1266
|
};
|
|
1267
|
+
decoders.StoriesFeedUpdatedEvent = (input) => {
|
|
1268
|
+
const typeMappings = {
|
|
1269
|
+
created_at: { type: "DatetimeType", isSingle: true },
|
|
1270
|
+
received_at: { type: "DatetimeType", isSingle: true },
|
|
1271
|
+
aggregated_activities: {
|
|
1272
|
+
type: "AggregatedActivityResponse",
|
|
1273
|
+
isSingle: false
|
|
1274
|
+
}
|
|
1275
|
+
};
|
|
1276
|
+
return decode(typeMappings, input);
|
|
1277
|
+
};
|
|
1267
1278
|
decoders.SubmitActionResponse = (input) => {
|
|
1268
1279
|
const typeMappings = {
|
|
1269
1280
|
item: { type: "ReviewQueueItemResponse", isSingle: true }
|
|
@@ -1759,7 +1770,7 @@ class FeedsApi {
|
|
|
1759
1770
|
decoders.PollVoteResponse?.(response.body);
|
|
1760
1771
|
return { ...response.body, metadata: response.metadata };
|
|
1761
1772
|
}
|
|
1762
|
-
async
|
|
1773
|
+
async addActivityReaction(request) {
|
|
1763
1774
|
const pathParams = {
|
|
1764
1775
|
activity_id: request?.activity_id
|
|
1765
1776
|
};
|
|
@@ -1969,9 +1980,9 @@ class FeedsApi {
|
|
|
1969
1980
|
}
|
|
1970
1981
|
async addComment(request) {
|
|
1971
1982
|
const body = {
|
|
1972
|
-
comment: request?.comment,
|
|
1973
1983
|
object_id: request?.object_id,
|
|
1974
1984
|
object_type: request?.object_type,
|
|
1985
|
+
comment: request?.comment,
|
|
1975
1986
|
create_notification_activity: request?.create_notification_activity,
|
|
1976
1987
|
parent_id: request?.parent_id,
|
|
1977
1988
|
skip_push: request?.skip_push,
|
|
@@ -3711,7 +3722,7 @@ const getRateLimitFromResponseHeader = (response_headers) => {
|
|
|
3711
3722
|
};
|
|
3712
3723
|
return result;
|
|
3713
3724
|
};
|
|
3714
|
-
const version = "0.2.
|
|
3725
|
+
const version = "0.2.15";
|
|
3715
3726
|
class ApiClient {
|
|
3716
3727
|
constructor(apiKey, tokenManager, connectionIdManager, options) {
|
|
3717
3728
|
this.apiKey = apiKey;
|
|
@@ -3922,6 +3933,7 @@ const eventDecoderMapping = {
|
|
|
3922
3933
|
"feeds.poll.vote_casted": (data) => decoders.PollVoteCastedFeedEvent(data),
|
|
3923
3934
|
"feeds.poll.vote_changed": (data) => decoders.PollVoteChangedFeedEvent(data),
|
|
3924
3935
|
"feeds.poll.vote_removed": (data) => decoders.PollVoteRemovedFeedEvent(data),
|
|
3936
|
+
"feeds.stories_feed.updated": (data) => decoders.StoriesFeedUpdatedEvent(data),
|
|
3925
3937
|
"health.check": (data) => decoders.HealthCheckEvent(data),
|
|
3926
3938
|
"moderation.custom_action": (data) => decoders.ModerationCustomActionEvent(data),
|
|
3927
3939
|
"moderation.flagged": (data) => decoders.ModerationFlaggedEvent(data),
|
|
@@ -4450,6 +4462,27 @@ const uniqueArrayMerge = (existingArray, arrayToMerge, getKey) => {
|
|
|
4450
4462
|
});
|
|
4451
4463
|
return existingArray.concat(filteredArrayToMerge);
|
|
4452
4464
|
};
|
|
4465
|
+
const replaceUniqueArrayMerge = (existingArray, arrayToMerge, getKey) => {
|
|
4466
|
+
const existingMap = /* @__PURE__ */ new Map();
|
|
4467
|
+
(existingArray ?? []).forEach((item) => {
|
|
4468
|
+
existingMap.set(getKey(item), item);
|
|
4469
|
+
});
|
|
4470
|
+
const result = [];
|
|
4471
|
+
arrayToMerge.forEach((item) => {
|
|
4472
|
+
existingMap.set(getKey(item), item);
|
|
4473
|
+
});
|
|
4474
|
+
existingArray.forEach((originalItem) => {
|
|
4475
|
+
const updatedItem = existingMap.get(getKey(originalItem));
|
|
4476
|
+
if (updatedItem) {
|
|
4477
|
+
result.push(updatedItem);
|
|
4478
|
+
existingMap.delete(getKey(originalItem));
|
|
4479
|
+
}
|
|
4480
|
+
});
|
|
4481
|
+
existingMap.forEach((item) => {
|
|
4482
|
+
result.push(item);
|
|
4483
|
+
});
|
|
4484
|
+
return result;
|
|
4485
|
+
};
|
|
4453
4486
|
const Constants = {
|
|
4454
4487
|
DEFAULT_COMMENT_PAGINATION: "first"
|
|
4455
4488
|
};
|
|
@@ -5593,15 +5626,29 @@ const addAggregatedActivitiesToState = (newAggregatedActivities, aggregatedActiv
|
|
|
5593
5626
|
aggregated_activities: []
|
|
5594
5627
|
};
|
|
5595
5628
|
}
|
|
5596
|
-
|
|
5597
|
-
|
|
5598
|
-
|
|
5599
|
-
|
|
5600
|
-
|
|
5601
|
-
|
|
5602
|
-
|
|
5603
|
-
|
|
5604
|
-
|
|
5629
|
+
switch (position) {
|
|
5630
|
+
case "start":
|
|
5631
|
+
result.aggregated_activities = uniqueArrayMerge(
|
|
5632
|
+
newAggregatedActivities,
|
|
5633
|
+
aggregatedActivities ?? [],
|
|
5634
|
+
(a) => a.group
|
|
5635
|
+
);
|
|
5636
|
+
break;
|
|
5637
|
+
case "end":
|
|
5638
|
+
result.aggregated_activities = uniqueArrayMerge(
|
|
5639
|
+
aggregatedActivities ?? [],
|
|
5640
|
+
newAggregatedActivities,
|
|
5641
|
+
(a) => a.group
|
|
5642
|
+
);
|
|
5643
|
+
break;
|
|
5644
|
+
case "replace":
|
|
5645
|
+
result.aggregated_activities = replaceUniqueArrayMerge(
|
|
5646
|
+
aggregatedActivities ?? [],
|
|
5647
|
+
newAggregatedActivities,
|
|
5648
|
+
(a) => a.group
|
|
5649
|
+
);
|
|
5650
|
+
break;
|
|
5651
|
+
}
|
|
5605
5652
|
return result;
|
|
5606
5653
|
};
|
|
5607
5654
|
const updateNotificationStatus = (newNotificationStatus, currentNotificationStatus) => {
|
|
@@ -5668,6 +5715,35 @@ function handleNotificationFeedUpdated(event) {
|
|
|
5668
5715
|
});
|
|
5669
5716
|
}
|
|
5670
5717
|
}
|
|
5718
|
+
function updateStoriesFeedFromEvent(aggregatedActivities, event) {
|
|
5719
|
+
if (!aggregatedActivities) {
|
|
5720
|
+
return {
|
|
5721
|
+
changed: false
|
|
5722
|
+
};
|
|
5723
|
+
}
|
|
5724
|
+
if (event.aggregated_activities) {
|
|
5725
|
+
const result = addAggregatedActivitiesToState(
|
|
5726
|
+
event.aggregated_activities,
|
|
5727
|
+
aggregatedActivities,
|
|
5728
|
+
"replace"
|
|
5729
|
+
);
|
|
5730
|
+
return result;
|
|
5731
|
+
}
|
|
5732
|
+
return {
|
|
5733
|
+
changed: false
|
|
5734
|
+
};
|
|
5735
|
+
}
|
|
5736
|
+
function handleStoriesFeedUpdated(event) {
|
|
5737
|
+
const result = updateStoriesFeedFromEvent(
|
|
5738
|
+
this.currentState.aggregated_activities,
|
|
5739
|
+
event
|
|
5740
|
+
);
|
|
5741
|
+
if (result.changed) {
|
|
5742
|
+
this.state.partialNext({
|
|
5743
|
+
aggregated_activities: result.data?.aggregated_activities
|
|
5744
|
+
});
|
|
5745
|
+
}
|
|
5746
|
+
}
|
|
5671
5747
|
function handleWatchStarted() {
|
|
5672
5748
|
this.state.partialNext({ watch: true });
|
|
5673
5749
|
}
|
|
@@ -5710,6 +5786,7 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
5710
5786
|
"feeds.feed_member.removed": handleFeedMemberRemoved.bind(this),
|
|
5711
5787
|
"feeds.feed_member.updated": handleFeedMemberUpdated.bind(this),
|
|
5712
5788
|
"feeds.notification_feed.updated": handleNotificationFeedUpdated.bind(this),
|
|
5789
|
+
"feeds.stories_feed.updated": handleStoriesFeedUpdated.bind(this),
|
|
5713
5790
|
// the poll events should be removed from here
|
|
5714
5791
|
"feeds.poll.closed": _Feed.noop,
|
|
5715
5792
|
"feeds.poll.deleted": _Feed.noop,
|
|
@@ -6397,13 +6474,16 @@ class FeedsClient extends FeedsApi {
|
|
|
6397
6474
|
}
|
|
6398
6475
|
return response;
|
|
6399
6476
|
};
|
|
6400
|
-
this.
|
|
6401
|
-
const response = await super.
|
|
6477
|
+
this.addActivityReaction = async (request) => {
|
|
6478
|
+
const response = await super.addActivityReaction(request);
|
|
6402
6479
|
for (const feed of Object.values(this.activeFeeds)) {
|
|
6403
6480
|
handleActivityReactionAdded.bind(feed)(response, false);
|
|
6404
6481
|
}
|
|
6405
6482
|
return response;
|
|
6406
6483
|
};
|
|
6484
|
+
this.addReaction = (request) => {
|
|
6485
|
+
return this.addActivityReaction(request);
|
|
6486
|
+
};
|
|
6407
6487
|
this.deleteActivityReaction = async (request) => {
|
|
6408
6488
|
const response = await super.deleteActivityReaction(request);
|
|
6409
6489
|
for (const feed of Object.values(this.activeFeeds)) {
|
|
@@ -6778,7 +6858,8 @@ exports.isImageFile = isImageFile;
|
|
|
6778
6858
|
exports.isReactionResponse = isReactionResponse;
|
|
6779
6859
|
exports.isVideoFile = isVideoFile;
|
|
6780
6860
|
exports.isVoteAnswer = isVoteAnswer;
|
|
6861
|
+
exports.replaceUniqueArrayMerge = replaceUniqueArrayMerge;
|
|
6781
6862
|
exports.shouldUpdateState = shouldUpdateState;
|
|
6782
6863
|
exports.uniqueArrayMerge = uniqueArrayMerge;
|
|
6783
6864
|
exports.updateEntityInArray = updateEntityInArray;
|
|
6784
|
-
//# sourceMappingURL=index-
|
|
6865
|
+
//# sourceMappingURL=index-DRX66SIx.js.map
|