@stream-io/feeds-client 0.2.12 → 0.2.14
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 +22 -14
- package/dist/cjs/react-bindings.js.map +1 -1
- package/dist/es/index.mjs +3 -2
- package/dist/es/react-bindings.mjs +22 -14
- package/dist/es/react-bindings.mjs.map +1 -1
- package/dist/{index-o7AeSkxa.js → index-B08vVRSZ.js} +159 -9
- package/dist/index-B08vVRSZ.js.map +1 -0
- package/dist/{index-D7QtnkUs.mjs → index-B3HHiF9S.mjs} +159 -9
- package/dist/index-B3HHiF9S.mjs.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/bindings/react/hooks/feed-state-hooks/useAggregatedActivities.d.ts +9 -4
- package/dist/types/bindings/react/hooks/feed-state-hooks/useAggregatedActivities.d.ts.map +1 -1
- package/dist/types/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivityRead.d.ts.map +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/aggregated-feed/handle-aggregated-feed-updated.d.ts +24 -0
- 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 +2 -2
- 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/feed-state-hooks/useAggregatedActivities.ts +28 -4
- package/src/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivityRead.ts +4 -5
- package/src/feed/event-handlers/aggregated-feed/handle-aggregated-feed-updated.test.ts +644 -0
- package/src/feed/event-handlers/aggregated-feed/handle-aggregated-feed-updated.ts +193 -0
- 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 +23 -1
- 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-D7QtnkUs.mjs.map +0 -1
- package/dist/index-o7AeSkxa.js.map +0 -1
- package/dist/types/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts +0 -11
- 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/handle-notification-feed-updated.test.ts +0 -120
- package/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.ts +0 -54
- 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 }
|
|
@@ -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.14";
|
|
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
|
};
|
|
@@ -5580,13 +5613,84 @@ function handleActivityMarked(event) {
|
|
|
5580
5613
|
function handleFeedUpdated(event) {
|
|
5581
5614
|
this.state.partialNext({ ...event.feed });
|
|
5582
5615
|
}
|
|
5583
|
-
const
|
|
5616
|
+
const addAggregatedActivitiesToState = (newAggregatedActivities, aggregatedActivities, position) => {
|
|
5617
|
+
let result;
|
|
5618
|
+
if (newAggregatedActivities.length === 0) {
|
|
5619
|
+
result = {
|
|
5620
|
+
changed: false,
|
|
5621
|
+
aggregated_activities: []
|
|
5622
|
+
};
|
|
5623
|
+
} else {
|
|
5624
|
+
result = {
|
|
5625
|
+
changed: true,
|
|
5626
|
+
aggregated_activities: []
|
|
5627
|
+
};
|
|
5628
|
+
}
|
|
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
|
+
}
|
|
5652
|
+
return result;
|
|
5653
|
+
};
|
|
5654
|
+
const updateNotificationStatus = (newNotificationStatus, currentNotificationStatus) => {
|
|
5655
|
+
if (!newNotificationStatus && !currentNotificationStatus) {
|
|
5656
|
+
return {
|
|
5657
|
+
changed: false,
|
|
5658
|
+
notification_status: void 0
|
|
5659
|
+
};
|
|
5660
|
+
} else if (!newNotificationStatus) {
|
|
5661
|
+
return {
|
|
5662
|
+
changed: false,
|
|
5663
|
+
notification_status: currentNotificationStatus
|
|
5664
|
+
};
|
|
5665
|
+
} else {
|
|
5666
|
+
return {
|
|
5667
|
+
changed: true,
|
|
5668
|
+
notification_status: {
|
|
5669
|
+
...newNotificationStatus
|
|
5670
|
+
}
|
|
5671
|
+
};
|
|
5672
|
+
}
|
|
5673
|
+
};
|
|
5674
|
+
const updateNotificationFeedFromEvent = (event, currentAggregatedActivities, currentNotificationStatus) => {
|
|
5584
5675
|
const updates = {};
|
|
5585
|
-
if (event.notification_status) {
|
|
5586
|
-
|
|
5676
|
+
if (event.notification_status && currentNotificationStatus) {
|
|
5677
|
+
const notificationStatusResult = updateNotificationStatus(
|
|
5678
|
+
event.notification_status,
|
|
5679
|
+
currentNotificationStatus
|
|
5680
|
+
);
|
|
5681
|
+
if (notificationStatusResult.changed) {
|
|
5682
|
+
updates.notification_status = notificationStatusResult.notification_status;
|
|
5683
|
+
}
|
|
5587
5684
|
}
|
|
5588
|
-
if (event.aggregated_activities) {
|
|
5589
|
-
|
|
5685
|
+
if (event.aggregated_activities && currentAggregatedActivities) {
|
|
5686
|
+
const aggregatedActivitiesResult = addAggregatedActivitiesToState(
|
|
5687
|
+
event.aggregated_activities,
|
|
5688
|
+
currentAggregatedActivities,
|
|
5689
|
+
"start"
|
|
5690
|
+
);
|
|
5691
|
+
if (aggregatedActivitiesResult.changed) {
|
|
5692
|
+
updates.aggregated_activities = aggregatedActivitiesResult.aggregated_activities;
|
|
5693
|
+
}
|
|
5590
5694
|
}
|
|
5591
5695
|
if (Object.keys(updates).length > 0) {
|
|
5592
5696
|
return {
|
|
@@ -5599,7 +5703,11 @@ const updateNotificationFeedFromEvent = (event) => {
|
|
|
5599
5703
|
};
|
|
5600
5704
|
};
|
|
5601
5705
|
function handleNotificationFeedUpdated(event) {
|
|
5602
|
-
const result = updateNotificationFeedFromEvent(
|
|
5706
|
+
const result = updateNotificationFeedFromEvent(
|
|
5707
|
+
event,
|
|
5708
|
+
this.currentState.aggregated_activities,
|
|
5709
|
+
this.currentState.notification_status
|
|
5710
|
+
);
|
|
5603
5711
|
if (result.changed) {
|
|
5604
5712
|
this.state.partialNext({
|
|
5605
5713
|
notification_status: result.data?.notification_status,
|
|
@@ -5607,6 +5715,35 @@ function handleNotificationFeedUpdated(event) {
|
|
|
5607
5715
|
});
|
|
5608
5716
|
}
|
|
5609
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
|
+
}
|
|
5610
5747
|
function handleWatchStarted() {
|
|
5611
5748
|
this.state.partialNext({ watch: true });
|
|
5612
5749
|
}
|
|
@@ -5649,6 +5786,7 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
5649
5786
|
"feeds.feed_member.removed": handleFeedMemberRemoved.bind(this),
|
|
5650
5787
|
"feeds.feed_member.updated": handleFeedMemberUpdated.bind(this),
|
|
5651
5788
|
"feeds.notification_feed.updated": handleNotificationFeedUpdated.bind(this),
|
|
5789
|
+
"feeds.stories_feed.updated": handleStoriesFeedUpdated.bind(this),
|
|
5652
5790
|
// the poll events should be removed from here
|
|
5653
5791
|
"feeds.poll.closed": _Feed.noop,
|
|
5654
5792
|
"feeds.poll.deleted": _Feed.noop,
|
|
@@ -5728,9 +5866,20 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
5728
5866
|
currentActivities,
|
|
5729
5867
|
"end"
|
|
5730
5868
|
);
|
|
5731
|
-
|
|
5869
|
+
const aggregatedActivitiesResult = addAggregatedActivitiesToState(
|
|
5870
|
+
response.aggregated_activities,
|
|
5871
|
+
this.currentState.aggregated_activities,
|
|
5872
|
+
"end"
|
|
5873
|
+
);
|
|
5874
|
+
const notificationStatusResult = updateNotificationStatus(
|
|
5875
|
+
response.notification_status,
|
|
5876
|
+
this.currentState.notification_status
|
|
5877
|
+
);
|
|
5878
|
+
if (result.changed || aggregatedActivitiesResult.changed || notificationStatusResult.changed) {
|
|
5732
5879
|
this.state.partialNext({
|
|
5733
5880
|
activities: result.activities,
|
|
5881
|
+
aggregated_activities: aggregatedActivitiesResult.aggregated_activities,
|
|
5882
|
+
notification_status: notificationStatusResult.notification_status,
|
|
5734
5883
|
next: response.next,
|
|
5735
5884
|
prev: response.prev
|
|
5736
5885
|
});
|
|
@@ -6706,7 +6855,8 @@ exports.isImageFile = isImageFile;
|
|
|
6706
6855
|
exports.isReactionResponse = isReactionResponse;
|
|
6707
6856
|
exports.isVideoFile = isVideoFile;
|
|
6708
6857
|
exports.isVoteAnswer = isVoteAnswer;
|
|
6858
|
+
exports.replaceUniqueArrayMerge = replaceUniqueArrayMerge;
|
|
6709
6859
|
exports.shouldUpdateState = shouldUpdateState;
|
|
6710
6860
|
exports.uniqueArrayMerge = uniqueArrayMerge;
|
|
6711
6861
|
exports.updateEntityInArray = updateEntityInArray;
|
|
6712
|
-
//# sourceMappingURL=index-
|
|
6862
|
+
//# sourceMappingURL=index-B08vVRSZ.js.map
|