@stream-io/feeds-client 0.2.1 → 0.2.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/@react-bindings/hooks/feed-state-hooks/index.ts +4 -0
- package/CHANGELOG.md +8 -0
- package/dist/@react-bindings/hooks/feed-state-hooks/index.d.ts +4 -0
- package/dist/@react-bindings/hooks/feed-state-hooks/useAggregatedActivities.d.ts +11 -0
- package/dist/@react-bindings/hooks/feed-state-hooks/useIsAggregatedActivityRead.d.ts +6 -0
- package/dist/@react-bindings/hooks/feed-state-hooks/useIsAggregatedActivitySeen.d.ts +6 -0
- package/dist/@react-bindings/hooks/feed-state-hooks/useNotificationStatus.d.ts +13 -0
- package/dist/@react-bindings/wrappers/StreamFeed.d.ts +1 -1
- package/dist/index-react-bindings.browser.cjs +154 -29
- package/dist/index-react-bindings.browser.cjs.map +1 -1
- package/dist/index-react-bindings.browser.js +151 -30
- package/dist/index-react-bindings.browser.js.map +1 -1
- package/dist/index-react-bindings.node.cjs +154 -29
- package/dist/index-react-bindings.node.cjs.map +1 -1
- package/dist/index-react-bindings.node.js +151 -30
- package/dist/index-react-bindings.node.js.map +1 -1
- package/dist/index.browser.cjs +88 -12
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.js +88 -12
- package/dist/index.browser.js.map +1 -1
- package/dist/index.node.cjs +88 -12
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.js +88 -12
- package/dist/index.node.js.map +1 -1
- package/dist/src/feed/event-handlers/activity/handle-activity-marked.d.ts +11 -0
- package/dist/src/feed/event-handlers/activity/index.d.ts +1 -0
- package/dist/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts +8 -1
- package/dist/src/feed/feed.d.ts +2 -2
- package/dist/src/test-utils/response-generators.d.ts +21 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/feed/event-handlers/activity/activity-marked-utils.test.ts +208 -0
- package/src/feed/event-handlers/activity/handle-activity-marked.ts +68 -0
- package/src/feed/event-handlers/activity/handle-activity-reaction-added.test.ts +15 -15
- package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.test.ts +14 -14
- package/src/feed/event-handlers/activity/handle-activity-unpinned.test.ts +4 -3
- package/src/feed/event-handlers/activity/handle-activity-updated.test.ts +4 -4
- package/src/feed/event-handlers/activity/index.ts +2 -1
- package/src/feed/event-handlers/bookmark/handle-bookmark-added.test.ts +14 -14
- package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.test.ts +14 -14
- package/src/feed/event-handlers/bookmark/handle-bookmark-updated.test.ts +16 -16
- package/src/feed/event-handlers/comment/handle-comment-added.test.ts +147 -0
- package/src/feed/event-handlers/comment/handle-comment-deleted.test.ts +133 -0
- package/src/feed/event-handlers/comment/handle-comment-deleted.ts +24 -10
- package/src/feed/event-handlers/comment/handle-comment-reaction.test.ts +315 -0
- package/src/feed/event-handlers/comment/handle-comment-updated.test.ts +131 -0
- package/src/feed/event-handlers/follow/handle-follow-created.test.ts +7 -7
- package/src/feed/event-handlers/follow/handle-follow-deleted.test.ts +2 -2
- package/src/feed/event-handlers/follow/handle-follow-updated.test.ts +1 -1
- package/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.test.ts +120 -0
- package/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.ts +47 -3
- package/src/feed/feed.ts +4 -2
- package/src/gen/model-decoders/decoders.ts +1 -1
- package/src/test-utils/response-generators.ts +123 -0
package/dist/index.node.js
CHANGED
|
@@ -2,7 +2,7 @@ import axios from 'axios';
|
|
|
2
2
|
|
|
3
3
|
const decoders = {};
|
|
4
4
|
const decodeDatetimeType = (input) => typeof input === 'number'
|
|
5
|
-
? new Date(Math.floor(input /
|
|
5
|
+
? new Date(Math.floor(input / 1e6))
|
|
6
6
|
: new Date(input);
|
|
7
7
|
decoders.DatetimeType = decodeDatetimeType;
|
|
8
8
|
const decode = (typeMappings, input) => {
|
|
@@ -4518,20 +4518,29 @@ function handleCommentAdded(event) {
|
|
|
4518
4518
|
function handleCommentDeleted({ comment }) {
|
|
4519
4519
|
const entityId = comment.parent_id ?? comment.object_id;
|
|
4520
4520
|
this.state.next((currentState) => {
|
|
4521
|
-
|
|
4522
|
-
...currentState.comments_by_entity_id,
|
|
4523
|
-
[entityId]: {
|
|
4524
|
-
...currentState.comments_by_entity_id[entityId],
|
|
4525
|
-
},
|
|
4526
|
-
};
|
|
4521
|
+
let newCommentsByEntityId;
|
|
4527
4522
|
const index = this.getCommentIndex(comment, currentState);
|
|
4528
|
-
if (
|
|
4523
|
+
if (index !== -1) {
|
|
4524
|
+
newCommentsByEntityId ?? (newCommentsByEntityId = {
|
|
4525
|
+
...currentState.comments_by_entity_id,
|
|
4526
|
+
[entityId]: {
|
|
4527
|
+
...currentState.comments_by_entity_id[entityId],
|
|
4528
|
+
},
|
|
4529
|
+
});
|
|
4529
4530
|
newCommentsByEntityId[entityId].comments = [
|
|
4530
4531
|
...newCommentsByEntityId[entityId].comments,
|
|
4531
4532
|
];
|
|
4532
4533
|
newCommentsByEntityId[entityId]?.comments?.splice(index, 1);
|
|
4533
4534
|
}
|
|
4534
|
-
|
|
4535
|
+
if (typeof currentState.comments_by_entity_id[comment.id] !== 'undefined') {
|
|
4536
|
+
newCommentsByEntityId ?? (newCommentsByEntityId = {
|
|
4537
|
+
...currentState.comments_by_entity_id,
|
|
4538
|
+
});
|
|
4539
|
+
delete newCommentsByEntityId[comment.id];
|
|
4540
|
+
}
|
|
4541
|
+
if (!newCommentsByEntityId) {
|
|
4542
|
+
return currentState;
|
|
4543
|
+
}
|
|
4535
4544
|
return {
|
|
4536
4545
|
...currentState,
|
|
4537
4546
|
comments_by_entity_id: newCommentsByEntityId,
|
|
@@ -5086,13 +5095,80 @@ function handleActivityReactionDeleted(event) {
|
|
|
5086
5095
|
}
|
|
5087
5096
|
}
|
|
5088
5097
|
|
|
5098
|
+
const updateNotificationStatusFromActivityMarked = (event, currentNotificationStatus, aggregatedActivities = []) => {
|
|
5099
|
+
if (!currentNotificationStatus) {
|
|
5100
|
+
return {
|
|
5101
|
+
changed: false,
|
|
5102
|
+
};
|
|
5103
|
+
}
|
|
5104
|
+
const newState = {
|
|
5105
|
+
...currentNotificationStatus,
|
|
5106
|
+
};
|
|
5107
|
+
if (event.mark_all_read) {
|
|
5108
|
+
const allGroupIds = aggregatedActivities.map((activity) => activity.group);
|
|
5109
|
+
newState.read_activities = [
|
|
5110
|
+
...new Set([
|
|
5111
|
+
...(currentNotificationStatus.read_activities ?? []),
|
|
5112
|
+
...allGroupIds,
|
|
5113
|
+
]),
|
|
5114
|
+
];
|
|
5115
|
+
}
|
|
5116
|
+
if (event.mark_read && event.mark_read.length > 0) {
|
|
5117
|
+
newState.read_activities = [
|
|
5118
|
+
...new Set([
|
|
5119
|
+
...(currentNotificationStatus?.read_activities ?? []),
|
|
5120
|
+
...event.mark_read,
|
|
5121
|
+
]),
|
|
5122
|
+
];
|
|
5123
|
+
}
|
|
5124
|
+
if (event.mark_all_seen) {
|
|
5125
|
+
newState.last_seen_at = new Date();
|
|
5126
|
+
}
|
|
5127
|
+
return {
|
|
5128
|
+
changed: true,
|
|
5129
|
+
data: { notification_status: newState },
|
|
5130
|
+
};
|
|
5131
|
+
};
|
|
5132
|
+
function handleActivityMarked(event) {
|
|
5133
|
+
const result = updateNotificationStatusFromActivityMarked(event, this.currentState.notification_status, this.currentState.aggregated_activities);
|
|
5134
|
+
if (result.changed) {
|
|
5135
|
+
this.state.partialNext({
|
|
5136
|
+
notification_status: result.data?.notification_status,
|
|
5137
|
+
});
|
|
5138
|
+
}
|
|
5139
|
+
}
|
|
5140
|
+
|
|
5089
5141
|
function handleFeedUpdated(event) {
|
|
5090
5142
|
this.state.partialNext({ ...event.feed });
|
|
5091
5143
|
}
|
|
5092
5144
|
|
|
5145
|
+
const updateNotificationFeedFromEvent = (event) => {
|
|
5146
|
+
const updates = {};
|
|
5147
|
+
if (event.notification_status) {
|
|
5148
|
+
updates.notification_status = event.notification_status;
|
|
5149
|
+
}
|
|
5150
|
+
if (event.aggregated_activities) {
|
|
5151
|
+
updates.aggregated_activities = event.aggregated_activities;
|
|
5152
|
+
}
|
|
5153
|
+
// Only return changed if we have actual updates
|
|
5154
|
+
if (Object.keys(updates).length > 0) {
|
|
5155
|
+
return {
|
|
5156
|
+
changed: true,
|
|
5157
|
+
data: updates,
|
|
5158
|
+
};
|
|
5159
|
+
}
|
|
5160
|
+
return {
|
|
5161
|
+
changed: false,
|
|
5162
|
+
};
|
|
5163
|
+
};
|
|
5093
5164
|
function handleNotificationFeedUpdated(event) {
|
|
5094
|
-
|
|
5095
|
-
|
|
5165
|
+
const result = updateNotificationFeedFromEvent(event);
|
|
5166
|
+
if (result.changed) {
|
|
5167
|
+
this.state.partialNext({
|
|
5168
|
+
notification_status: result.data?.notification_status,
|
|
5169
|
+
aggregated_activities: result.data?.aggregated_activities,
|
|
5170
|
+
});
|
|
5171
|
+
}
|
|
5096
5172
|
}
|
|
5097
5173
|
|
|
5098
5174
|
function handleWatchStarted() {
|
|
@@ -5147,7 +5223,7 @@ class Feed extends FeedApi {
|
|
|
5147
5223
|
'feeds.poll.vote_removed': Feed.noop,
|
|
5148
5224
|
'feeds.activity.pinned': Feed.noop,
|
|
5149
5225
|
'feeds.activity.unpinned': Feed.noop,
|
|
5150
|
-
'feeds.activity.marked':
|
|
5226
|
+
'feeds.activity.marked': handleActivityMarked.bind(this),
|
|
5151
5227
|
'moderation.custom_action': Feed.noop,
|
|
5152
5228
|
'moderation.flagged': Feed.noop,
|
|
5153
5229
|
'moderation.mark_reviewed': Feed.noop,
|