@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/src/feed/feed.ts
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
SortParamRequest,
|
|
13
13
|
ThreadedCommentResponse,
|
|
14
14
|
FollowRequest,
|
|
15
|
+
QueryCommentsRequest,
|
|
15
16
|
} from '../gen/models';
|
|
16
17
|
import { StreamResponse } from '../gen-imports';
|
|
17
18
|
import { StateStore } from '../common/StateStore';
|
|
@@ -41,6 +42,7 @@ import {
|
|
|
41
42
|
handleActivityReactionAdded,
|
|
42
43
|
handleFeedUpdated,
|
|
43
44
|
handleNotificationFeedUpdated,
|
|
45
|
+
handleActivityMarked,
|
|
44
46
|
} from './event-handlers';
|
|
45
47
|
import { capitalize } from '../common/utils';
|
|
46
48
|
import type {
|
|
@@ -70,7 +72,7 @@ export type FeedState = Omit<
|
|
|
70
72
|
| {
|
|
71
73
|
pagination?: PagerResponseWithLoadingStates & {
|
|
72
74
|
// registered on first pagination attempt and then used for real-time updates & subsequent pagination calls
|
|
73
|
-
sort?: string;
|
|
75
|
+
sort?: QueryCommentsRequest['sort'] | (string & {});
|
|
74
76
|
};
|
|
75
77
|
/**
|
|
76
78
|
* Id of the "store" where the actual parent is stored in the comments array.
|
|
@@ -180,7 +182,7 @@ export class Feed extends FeedApi {
|
|
|
180
182
|
'feeds.poll.vote_removed': Feed.noop,
|
|
181
183
|
'feeds.activity.pinned': Feed.noop,
|
|
182
184
|
'feeds.activity.unpinned': Feed.noop,
|
|
183
|
-
'feeds.activity.marked':
|
|
185
|
+
'feeds.activity.marked': handleActivityMarked.bind(this),
|
|
184
186
|
'moderation.custom_action': Feed.noop,
|
|
185
187
|
'moderation.flagged': Feed.noop,
|
|
186
188
|
'moderation.mark_reviewed': Feed.noop,
|
|
@@ -6,7 +6,7 @@ export const decoders: Record<string, Decoder> = {};
|
|
|
6
6
|
|
|
7
7
|
const decodeDatetimeType = (input: number | string) =>
|
|
8
8
|
typeof input === 'number'
|
|
9
|
-
? new Date(Math.floor(input /
|
|
9
|
+
? new Date(Math.floor(input / 1e6))
|
|
10
10
|
: new Date(input);
|
|
11
11
|
|
|
12
12
|
decoders.DatetimeType = decodeDatetimeType;
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
ActivityResponse,
|
|
4
4
|
BookmarkFolderResponse,
|
|
5
5
|
BookmarkResponse,
|
|
6
|
+
CommentResponse,
|
|
6
7
|
FeedResponse,
|
|
7
8
|
FeedsReactionResponse,
|
|
8
9
|
FollowResponse,
|
|
@@ -157,6 +158,33 @@ export const generateFeedReactionResponse = (
|
|
|
157
158
|
};
|
|
158
159
|
};
|
|
159
160
|
|
|
161
|
+
export const generateCommentResponse = (
|
|
162
|
+
overrides: Omit<Partial<CommentResponse>, 'user'> & {
|
|
163
|
+
user?: Parameters<typeof generateUserResponse>[0];
|
|
164
|
+
} = {},
|
|
165
|
+
): CommentResponse => {
|
|
166
|
+
const user = generateUserResponse(overrides.user);
|
|
167
|
+
const sharedId = getHumanId();
|
|
168
|
+
return {
|
|
169
|
+
id: `comment-${sharedId}`,
|
|
170
|
+
object_id: `activity-${sharedId}`,
|
|
171
|
+
object_type: 'activity',
|
|
172
|
+
confidence_score: 1,
|
|
173
|
+
created_at: new Date(),
|
|
174
|
+
updated_at: new Date(),
|
|
175
|
+
score: 0,
|
|
176
|
+
reaction_count: 0,
|
|
177
|
+
reply_count: 0,
|
|
178
|
+
upvote_count: 0,
|
|
179
|
+
downvote_count: 0,
|
|
180
|
+
mentioned_users: [],
|
|
181
|
+
own_reactions: [],
|
|
182
|
+
status: '',
|
|
183
|
+
...overrides,
|
|
184
|
+
user,
|
|
185
|
+
};
|
|
186
|
+
};
|
|
187
|
+
|
|
160
188
|
export const generateActivityPinResponse = (
|
|
161
189
|
overrides: Omit<Partial<ActivityPinResponse>, 'activity' | 'user'> & {
|
|
162
190
|
activity?: Partial<ActivityResponse>;
|
|
@@ -330,6 +358,101 @@ export function generateBookmarkUpdatedEvent(
|
|
|
330
358
|
};
|
|
331
359
|
}
|
|
332
360
|
|
|
361
|
+
export function generateCommentAddedEvent(
|
|
362
|
+
overrides: Omit<
|
|
363
|
+
Partial<EventPayload<'feeds.comment.added'>>,
|
|
364
|
+
'comment' | 'type'
|
|
365
|
+
> & { comment?: Parameters<typeof generateCommentResponse>[0] } = {},
|
|
366
|
+
): EventPayload<'feeds.comment.added'> {
|
|
367
|
+
const comment = generateCommentResponse(overrides.comment);
|
|
368
|
+
return {
|
|
369
|
+
type: 'feeds.comment.added',
|
|
370
|
+
created_at: new Date(),
|
|
371
|
+
fid: '',
|
|
372
|
+
custom: {},
|
|
373
|
+
...overrides,
|
|
374
|
+
comment,
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
export function generateCommentDeletedEvent(
|
|
379
|
+
overrides: Omit<
|
|
380
|
+
Partial<EventPayload<'feeds.comment.deleted'>>,
|
|
381
|
+
'comment' | 'type'
|
|
382
|
+
> & { comment?: Parameters<typeof generateCommentResponse>[0] } = {},
|
|
383
|
+
): EventPayload<'feeds.comment.deleted'> {
|
|
384
|
+
const comment = generateCommentResponse(overrides.comment);
|
|
385
|
+
return {
|
|
386
|
+
type: 'feeds.comment.deleted',
|
|
387
|
+
created_at: new Date(),
|
|
388
|
+
fid: '',
|
|
389
|
+
custom: {},
|
|
390
|
+
...overrides,
|
|
391
|
+
comment,
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
export function generateCommentUpdatedEvent(
|
|
396
|
+
overrides: Omit<
|
|
397
|
+
Partial<EventPayload<'feeds.comment.updated'>>,
|
|
398
|
+
'comment' | 'type'
|
|
399
|
+
> & { comment?: Parameters<typeof generateCommentResponse>[0] } = {},
|
|
400
|
+
): EventPayload<'feeds.comment.updated'> {
|
|
401
|
+
const comment = generateCommentResponse(overrides.comment);
|
|
402
|
+
return {
|
|
403
|
+
type: 'feeds.comment.updated',
|
|
404
|
+
created_at: new Date(),
|
|
405
|
+
fid: '',
|
|
406
|
+
custom: {},
|
|
407
|
+
...overrides,
|
|
408
|
+
comment,
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
export function generateCommentReactionAddedEvent(
|
|
413
|
+
overrides: Omit<
|
|
414
|
+
Partial<EventPayload<'feeds.comment.reaction.added'>>,
|
|
415
|
+
'comment' | 'reaction' | 'type'
|
|
416
|
+
> & {
|
|
417
|
+
comment?: Parameters<typeof generateCommentResponse>[0];
|
|
418
|
+
reaction?: Parameters<typeof generateFeedReactionResponse>[0];
|
|
419
|
+
} = {},
|
|
420
|
+
): EventPayload<'feeds.comment.reaction.added'> {
|
|
421
|
+
const comment = generateCommentResponse(overrides.comment);
|
|
422
|
+
const reaction = generateFeedReactionResponse(overrides.reaction);
|
|
423
|
+
return {
|
|
424
|
+
type: 'feeds.comment.reaction.added',
|
|
425
|
+
created_at: new Date(),
|
|
426
|
+
fid: '',
|
|
427
|
+
custom: {},
|
|
428
|
+
...overrides,
|
|
429
|
+
comment,
|
|
430
|
+
reaction,
|
|
431
|
+
};
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
export function generateCommentReactionDeletedEvent(
|
|
435
|
+
overrides: Omit<
|
|
436
|
+
Partial<EventPayload<'feeds.comment.reaction.deleted'>>,
|
|
437
|
+
'comment' | 'reaction' | 'type'
|
|
438
|
+
> & {
|
|
439
|
+
comment?: Parameters<typeof generateCommentResponse>[0];
|
|
440
|
+
reaction?: Parameters<typeof generateFeedReactionResponse>[0];
|
|
441
|
+
} = {},
|
|
442
|
+
): EventPayload<'feeds.comment.reaction.deleted'> {
|
|
443
|
+
const comment = generateCommentResponse(overrides.comment);
|
|
444
|
+
const reaction = generateFeedReactionResponse(overrides.reaction);
|
|
445
|
+
return {
|
|
446
|
+
type: 'feeds.comment.reaction.deleted',
|
|
447
|
+
created_at: new Date(),
|
|
448
|
+
fid: '',
|
|
449
|
+
custom: {},
|
|
450
|
+
...overrides,
|
|
451
|
+
comment,
|
|
452
|
+
reaction,
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
|
|
333
456
|
export function generateActivityPinnedEvent(
|
|
334
457
|
overrides: Omit<
|
|
335
458
|
Partial<EventPayload<'feeds.activity.pinned'>>,
|