@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.browser.cjs
CHANGED
|
@@ -4,7 +4,7 @@ var axios = require('axios');
|
|
|
4
4
|
|
|
5
5
|
const decoders = {};
|
|
6
6
|
const decodeDatetimeType = (input) => typeof input === 'number'
|
|
7
|
-
? new Date(Math.floor(input /
|
|
7
|
+
? new Date(Math.floor(input / 1e6))
|
|
8
8
|
: new Date(input);
|
|
9
9
|
decoders.DatetimeType = decodeDatetimeType;
|
|
10
10
|
const decode = (typeMappings, input) => {
|
|
@@ -4520,20 +4520,29 @@ function handleCommentAdded(event) {
|
|
|
4520
4520
|
function handleCommentDeleted({ comment }) {
|
|
4521
4521
|
const entityId = comment.parent_id ?? comment.object_id;
|
|
4522
4522
|
this.state.next((currentState) => {
|
|
4523
|
-
|
|
4524
|
-
...currentState.comments_by_entity_id,
|
|
4525
|
-
[entityId]: {
|
|
4526
|
-
...currentState.comments_by_entity_id[entityId],
|
|
4527
|
-
},
|
|
4528
|
-
};
|
|
4523
|
+
let newCommentsByEntityId;
|
|
4529
4524
|
const index = this.getCommentIndex(comment, currentState);
|
|
4530
|
-
if (
|
|
4525
|
+
if (index !== -1) {
|
|
4526
|
+
newCommentsByEntityId ?? (newCommentsByEntityId = {
|
|
4527
|
+
...currentState.comments_by_entity_id,
|
|
4528
|
+
[entityId]: {
|
|
4529
|
+
...currentState.comments_by_entity_id[entityId],
|
|
4530
|
+
},
|
|
4531
|
+
});
|
|
4531
4532
|
newCommentsByEntityId[entityId].comments = [
|
|
4532
4533
|
...newCommentsByEntityId[entityId].comments,
|
|
4533
4534
|
];
|
|
4534
4535
|
newCommentsByEntityId[entityId]?.comments?.splice(index, 1);
|
|
4535
4536
|
}
|
|
4536
|
-
|
|
4537
|
+
if (typeof currentState.comments_by_entity_id[comment.id] !== 'undefined') {
|
|
4538
|
+
newCommentsByEntityId ?? (newCommentsByEntityId = {
|
|
4539
|
+
...currentState.comments_by_entity_id,
|
|
4540
|
+
});
|
|
4541
|
+
delete newCommentsByEntityId[comment.id];
|
|
4542
|
+
}
|
|
4543
|
+
if (!newCommentsByEntityId) {
|
|
4544
|
+
return currentState;
|
|
4545
|
+
}
|
|
4537
4546
|
return {
|
|
4538
4547
|
...currentState,
|
|
4539
4548
|
comments_by_entity_id: newCommentsByEntityId,
|
|
@@ -5088,13 +5097,80 @@ function handleActivityReactionDeleted(event) {
|
|
|
5088
5097
|
}
|
|
5089
5098
|
}
|
|
5090
5099
|
|
|
5100
|
+
const updateNotificationStatusFromActivityMarked = (event, currentNotificationStatus, aggregatedActivities = []) => {
|
|
5101
|
+
if (!currentNotificationStatus) {
|
|
5102
|
+
return {
|
|
5103
|
+
changed: false,
|
|
5104
|
+
};
|
|
5105
|
+
}
|
|
5106
|
+
const newState = {
|
|
5107
|
+
...currentNotificationStatus,
|
|
5108
|
+
};
|
|
5109
|
+
if (event.mark_all_read) {
|
|
5110
|
+
const allGroupIds = aggregatedActivities.map((activity) => activity.group);
|
|
5111
|
+
newState.read_activities = [
|
|
5112
|
+
...new Set([
|
|
5113
|
+
...(currentNotificationStatus.read_activities ?? []),
|
|
5114
|
+
...allGroupIds,
|
|
5115
|
+
]),
|
|
5116
|
+
];
|
|
5117
|
+
}
|
|
5118
|
+
if (event.mark_read && event.mark_read.length > 0) {
|
|
5119
|
+
newState.read_activities = [
|
|
5120
|
+
...new Set([
|
|
5121
|
+
...(currentNotificationStatus?.read_activities ?? []),
|
|
5122
|
+
...event.mark_read,
|
|
5123
|
+
]),
|
|
5124
|
+
];
|
|
5125
|
+
}
|
|
5126
|
+
if (event.mark_all_seen) {
|
|
5127
|
+
newState.last_seen_at = new Date();
|
|
5128
|
+
}
|
|
5129
|
+
return {
|
|
5130
|
+
changed: true,
|
|
5131
|
+
data: { notification_status: newState },
|
|
5132
|
+
};
|
|
5133
|
+
};
|
|
5134
|
+
function handleActivityMarked(event) {
|
|
5135
|
+
const result = updateNotificationStatusFromActivityMarked(event, this.currentState.notification_status, this.currentState.aggregated_activities);
|
|
5136
|
+
if (result.changed) {
|
|
5137
|
+
this.state.partialNext({
|
|
5138
|
+
notification_status: result.data?.notification_status,
|
|
5139
|
+
});
|
|
5140
|
+
}
|
|
5141
|
+
}
|
|
5142
|
+
|
|
5091
5143
|
function handleFeedUpdated(event) {
|
|
5092
5144
|
this.state.partialNext({ ...event.feed });
|
|
5093
5145
|
}
|
|
5094
5146
|
|
|
5147
|
+
const updateNotificationFeedFromEvent = (event) => {
|
|
5148
|
+
const updates = {};
|
|
5149
|
+
if (event.notification_status) {
|
|
5150
|
+
updates.notification_status = event.notification_status;
|
|
5151
|
+
}
|
|
5152
|
+
if (event.aggregated_activities) {
|
|
5153
|
+
updates.aggregated_activities = event.aggregated_activities;
|
|
5154
|
+
}
|
|
5155
|
+
// Only return changed if we have actual updates
|
|
5156
|
+
if (Object.keys(updates).length > 0) {
|
|
5157
|
+
return {
|
|
5158
|
+
changed: true,
|
|
5159
|
+
data: updates,
|
|
5160
|
+
};
|
|
5161
|
+
}
|
|
5162
|
+
return {
|
|
5163
|
+
changed: false,
|
|
5164
|
+
};
|
|
5165
|
+
};
|
|
5095
5166
|
function handleNotificationFeedUpdated(event) {
|
|
5096
|
-
|
|
5097
|
-
|
|
5167
|
+
const result = updateNotificationFeedFromEvent(event);
|
|
5168
|
+
if (result.changed) {
|
|
5169
|
+
this.state.partialNext({
|
|
5170
|
+
notification_status: result.data?.notification_status,
|
|
5171
|
+
aggregated_activities: result.data?.aggregated_activities,
|
|
5172
|
+
});
|
|
5173
|
+
}
|
|
5098
5174
|
}
|
|
5099
5175
|
|
|
5100
5176
|
function handleWatchStarted() {
|
|
@@ -5149,7 +5225,7 @@ class Feed extends FeedApi {
|
|
|
5149
5225
|
'feeds.poll.vote_removed': Feed.noop,
|
|
5150
5226
|
'feeds.activity.pinned': Feed.noop,
|
|
5151
5227
|
'feeds.activity.unpinned': Feed.noop,
|
|
5152
|
-
'feeds.activity.marked':
|
|
5228
|
+
'feeds.activity.marked': handleActivityMarked.bind(this),
|
|
5153
5229
|
'moderation.custom_action': Feed.noop,
|
|
5154
5230
|
'moderation.flagged': Feed.noop,
|
|
5155
5231
|
'moderation.mark_reviewed': Feed.noop,
|