@stream-io/feeds-client 0.1.10 → 0.2.0
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 +30 -0
- package/dist/@react-bindings/contexts/StreamFeedContext.d.ts +1 -1
- package/dist/@react-bindings/contexts/StreamFeedsContext.d.ts +1 -1
- package/dist/@react-bindings/hooks/feed-state-hooks/useComments.d.ts +1 -1
- package/dist/@react-bindings/hooks/feed-state-hooks/useFeedActivities.d.ts +1 -1
- package/dist/@react-bindings/hooks/feed-state-hooks/useFeedMetadata.d.ts +1 -1
- package/dist/@react-bindings/hooks/feed-state-hooks/useFollowers.d.ts +1 -1
- package/dist/@react-bindings/hooks/feed-state-hooks/useFollowing.d.ts +1 -1
- package/dist/@react-bindings/hooks/feed-state-hooks/useOwnCapabilities.d.ts +1 -1
- package/dist/@react-bindings/hooks/feed-state-hooks/useOwnFollows.d.ts +1 -1
- package/dist/@react-bindings/hooks/useCreateFeedsClient.d.ts +1 -1
- package/dist/@react-bindings/wrappers/StreamFeed.d.ts +1 -1
- package/dist/index-react-bindings.browser.cjs +1720 -1601
- package/dist/index-react-bindings.browser.cjs.map +1 -1
- package/dist/index-react-bindings.browser.js +1720 -1601
- package/dist/index-react-bindings.browser.js.map +1 -1
- package/dist/index-react-bindings.node.cjs +1720 -1601
- package/dist/index-react-bindings.node.cjs.map +1 -1
- package/dist/index-react-bindings.node.js +1720 -1601
- package/dist/index-react-bindings.node.js.map +1 -1
- package/dist/index.browser.cjs +1724 -1602
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.js +1722 -1603
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.node.cjs +1724 -1602
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.js +1722 -1603
- package/dist/index.node.js.map +1 -1
- package/dist/src/common/ActivitySearchSource.d.ts +1 -1
- package/dist/src/common/FeedSearchSource.d.ts +2 -2
- package/dist/src/common/Poll.d.ts +1 -1
- package/dist/src/common/UserSearchSource.d.ts +1 -1
- package/dist/src/common/real-time/StableWSConnection.d.ts +3 -3
- package/dist/src/feed/event-handlers/activity/handle-activity-added.d.ts +7 -0
- package/dist/src/feed/event-handlers/activity/handle-activity-deleted.d.ts +8 -0
- package/dist/src/feed/event-handlers/activity/handle-activity-reaction-added.d.ts +8 -0
- package/dist/src/feed/event-handlers/activity/handle-activity-reaction-deleted.d.ts +8 -0
- package/dist/src/feed/event-handlers/activity/handle-activity-removed-from-feed.d.ts +3 -0
- package/dist/src/feed/event-handlers/activity/handle-activity-updated.d.ts +8 -0
- package/dist/src/feed/event-handlers/activity/index.d.ts +6 -0
- package/dist/src/feed/event-handlers/bookmark/handle-bookmark-added.d.ts +8 -0
- package/dist/src/feed/event-handlers/bookmark/handle-bookmark-deleted.d.ts +9 -0
- package/dist/src/feed/event-handlers/bookmark/handle-bookmark-updated.d.ts +8 -0
- package/dist/src/feed/event-handlers/bookmark/index.d.ts +3 -0
- package/dist/src/feed/event-handlers/comment/handle-comment-added.d.ts +3 -0
- package/dist/src/feed/event-handlers/comment/handle-comment-deleted.d.ts +3 -0
- package/dist/src/feed/event-handlers/comment/handle-comment-reaction.d.ts +3 -0
- package/dist/src/feed/event-handlers/comment/handle-comment-updated.d.ts +3 -0
- package/dist/src/feed/event-handlers/comment/index.d.ts +4 -0
- package/dist/src/feed/event-handlers/feed/handle-feed-updated.d.ts +3 -0
- package/dist/src/feed/event-handlers/feed/index.d.ts +1 -0
- package/dist/src/feed/event-handlers/feed-member/handle-feed-member-added.d.ts +3 -0
- package/dist/src/feed/event-handlers/feed-member/handle-feed-member-removed.d.ts +3 -0
- package/dist/src/feed/event-handlers/feed-member/handle-feed-member-updated.d.ts +3 -0
- package/dist/src/feed/event-handlers/feed-member/index.d.ts +3 -0
- package/dist/src/feed/event-handlers/follow/handle-follow-created.d.ts +7 -0
- package/dist/src/feed/event-handlers/follow/handle-follow-deleted.d.ts +7 -0
- package/dist/src/feed/event-handlers/follow/handle-follow-updated.d.ts +3 -0
- package/dist/src/feed/event-handlers/follow/index.d.ts +3 -0
- package/dist/src/feed/event-handlers/index.d.ts +8 -0
- package/dist/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts +3 -0
- package/dist/src/feed/event-handlers/notification-feed/index.d.ts +1 -0
- package/dist/src/feed/event-handlers/watch/handle-watch-started.d.ts +2 -0
- package/dist/src/feed/event-handlers/watch/handle-watch-stopped.d.ts +2 -0
- package/dist/src/feed/event-handlers/watch/index.d.ts +2 -0
- package/dist/src/{Feed.d.ts → feed/feed.d.ts} +16 -43
- package/dist/src/feed/index.d.ts +2 -0
- package/dist/src/feeds-client/event-handlers/index.d.ts +1 -0
- package/dist/src/feeds-client/event-handlers/user/handle-user-updated.d.ts +3 -0
- package/dist/src/feeds-client/feeds-client.d.ts +76 -0
- package/dist/src/feeds-client/index.d.ts +2 -0
- package/dist/src/gen/feeds/FeedsApi.d.ts +27 -23
- package/dist/src/gen/models/index.d.ts +168 -23
- package/dist/src/gen-imports.d.ts +1 -1
- package/dist/src/test-utils/index.d.ts +1 -0
- package/dist/src/test-utils/response-generators.d.ts +9 -0
- package/dist/src/types-internal.d.ts +7 -0
- package/dist/src/types.d.ts +1 -1
- package/dist/src/utils/check-has-another-page.d.ts +1 -0
- package/dist/src/utils/constants.d.ts +3 -0
- package/dist/src/utils/index.d.ts +5 -0
- package/dist/src/utils/state-update-queue.d.ts +6 -0
- package/dist/src/utils/type-assertions.d.ts +7 -0
- package/dist/src/utils/unique-array-merge.d.ts +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/index.ts +2 -2
- package/package.json +3 -2
- package/src/common/ActivitySearchSource.ts +1 -1
- package/src/common/FeedSearchSource.ts +2 -2
- package/src/common/Poll.ts +1 -1
- package/src/common/UserSearchSource.ts +1 -1
- package/src/{state-updates → feed/event-handlers/activity}/activity-reaction-utils.test.ts +12 -2
- package/src/{state-updates → feed/event-handlers/activity}/activity-utils.test.ts +3 -2
- package/src/{state-updates/activity-utils.ts → feed/event-handlers/activity/handle-activity-added.ts} +16 -36
- package/src/feed/event-handlers/activity/handle-activity-deleted.ts +30 -0
- package/src/feed/event-handlers/activity/handle-activity-reaction-added.ts +67 -0
- package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.ts +75 -0
- package/src/feed/event-handlers/activity/handle-activity-removed-from-feed.ts +16 -0
- package/src/feed/event-handlers/activity/handle-activity-updated.ts +47 -0
- package/src/feed/event-handlers/activity/index.ts +6 -0
- package/src/{state-updates → feed/event-handlers/bookmark}/bookmark-utils.test.ts +2 -2
- package/src/feed/event-handlers/bookmark/handle-bookmark-added.ts +63 -0
- package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.ts +84 -0
- package/src/feed/event-handlers/bookmark/handle-bookmark-updated.ts +76 -0
- package/src/feed/event-handlers/bookmark/index.ts +3 -0
- package/src/feed/event-handlers/comment/handle-comment-added.ts +38 -0
- package/src/feed/event-handlers/comment/handle-comment-deleted.ts +35 -0
- package/src/feed/event-handlers/comment/handle-comment-reaction.ts +61 -0
- package/src/feed/event-handlers/comment/handle-comment-updated.ts +35 -0
- package/src/feed/event-handlers/comment/index.ts +4 -0
- package/src/feed/event-handlers/feed/handle-feed-updated.ts +9 -0
- package/src/feed/event-handlers/feed/index.ts +1 -0
- package/src/feed/event-handlers/feed-member/handle-feed-member-added.ts +31 -0
- package/src/feed/event-handlers/feed-member/handle-feed-member-removed.ts +24 -0
- package/src/feed/event-handlers/feed-member/handle-feed-member-updated.ts +40 -0
- package/src/feed/event-handlers/feed-member/index.ts +3 -0
- package/src/feed/event-handlers/follow/handle-follow-created.test.ts +250 -0
- package/src/feed/event-handlers/follow/handle-follow-created.ts +90 -0
- package/src/feed/event-handlers/follow/handle-follow-deleted.test.ts +268 -0
- package/src/feed/event-handlers/follow/handle-follow-deleted.ts +95 -0
- package/src/feed/event-handlers/follow/handle-follow-updated.test.ts +174 -0
- package/src/feed/event-handlers/follow/handle-follow-updated.ts +85 -0
- package/src/feed/event-handlers/follow/index.ts +3 -0
- package/src/feed/event-handlers/index.ts +8 -0
- package/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.ts +10 -0
- package/src/feed/event-handlers/notification-feed/index.ts +1 -0
- package/src/feed/event-handlers/watch/handle-watch-started.ts +5 -0
- package/src/feed/event-handlers/watch/handle-watch-stopped.ts +5 -0
- package/src/feed/event-handlers/watch/index.ts +2 -0
- package/src/{Feed.ts → feed/feed.ts} +87 -516
- package/src/feed/index.ts +2 -0
- package/src/feeds-client/event-handlers/index.ts +1 -0
- package/src/feeds-client/event-handlers/user/handle-user-updated.test.ts +53 -0
- package/src/feeds-client/event-handlers/user/handle-user-updated.ts +28 -0
- package/src/{FeedsClient.ts → feeds-client/feeds-client.ts} +63 -36
- package/src/feeds-client/index.ts +2 -0
- package/src/gen/feeds/FeedsApi.ts +164 -138
- package/src/gen/model-decoders/decoders.ts +22 -0
- package/src/gen/models/index.ts +288 -29
- package/src/gen-imports.ts +1 -1
- package/src/test-utils/index.ts +1 -0
- package/src/test-utils/response-generators.ts +101 -0
- package/src/types-internal.ts +11 -0
- package/src/types.ts +1 -1
- package/src/utils/check-has-another-page.ts +6 -0
- package/src/utils/constants.ts +3 -0
- package/src/utils/index.ts +5 -0
- package/src/{state-updates → utils}/state-update-queue.test.ts +6 -6
- package/src/utils/state-update-queue.ts +42 -0
- package/src/utils/type-assertions.ts +22 -0
- package/src/{utils.test.ts → utils/unique-array-merge.test.ts} +7 -3
- package/src/utils/unique-array-merge.ts +19 -0
- package/dist/src/FeedsClient.d.ts +0 -75
- package/dist/src/state-updates/activity-reaction-utils.d.ts +0 -10
- package/dist/src/state-updates/activity-utils.d.ts +0 -13
- package/dist/src/state-updates/bookmark-utils.d.ts +0 -14
- package/dist/src/state-updates/follow-utils.d.ts +0 -19
- package/dist/src/state-updates/state-update-queue.d.ts +0 -15
- package/dist/src/utils.d.ts +0 -10
- package/src/state-updates/activity-reaction-utils.ts +0 -107
- package/src/state-updates/bookmark-utils.ts +0 -167
- package/src/state-updates/follow-utils.test.ts +0 -552
- package/src/state-updates/follow-utils.ts +0 -126
- package/src/state-updates/state-update-queue.ts +0 -35
- package/src/utils.ts +0 -48
- /package/dist/src/{ModerationClient.d.ts → moderation-client.d.ts} +0 -0
- /package/src/{ModerationClient.ts → moderation-client.ts} +0 -0
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { FeedState } from '../Feed';
|
|
2
|
-
import { FollowResponse, FeedResponse } from '../gen/models';
|
|
3
|
-
import { UpdateStateResult } from '../types-internal';
|
|
4
|
-
|
|
5
|
-
const isFeedResponse = (
|
|
6
|
-
follow: FeedResponse | { fid: string },
|
|
7
|
-
): follow is FeedResponse => {
|
|
8
|
-
return 'created_by' in follow;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export const handleFollowCreated = (
|
|
12
|
-
follow: FollowResponse,
|
|
13
|
-
currentState: FeedState,
|
|
14
|
-
currentFeedId: string,
|
|
15
|
-
connectedUserId?: string,
|
|
16
|
-
): UpdateStateResult<{ data: FeedState }> => {
|
|
17
|
-
// filter non-accepted follows (the way getOrCreate does by default)
|
|
18
|
-
if (follow.status !== 'accepted') {
|
|
19
|
-
return { changed: false, data: currentState };
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
let newState: FeedState = { ...currentState };
|
|
23
|
-
|
|
24
|
-
// this feed followed someone
|
|
25
|
-
if (follow.source_feed.fid === currentFeedId) {
|
|
26
|
-
newState = {
|
|
27
|
-
...newState,
|
|
28
|
-
// Update FeedResponse fields, that has the new follower/following count
|
|
29
|
-
...follow.source_feed,
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
// Only update if following array already exists
|
|
33
|
-
if (currentState.following !== undefined) {
|
|
34
|
-
newState.following = [follow, ...currentState.following];
|
|
35
|
-
}
|
|
36
|
-
} else if (
|
|
37
|
-
// someone followed this feed
|
|
38
|
-
follow.target_feed.fid === currentFeedId
|
|
39
|
-
) {
|
|
40
|
-
const source = follow.source_feed;
|
|
41
|
-
|
|
42
|
-
newState = {
|
|
43
|
-
...newState,
|
|
44
|
-
// Update FeedResponse fields, that has the new follower/following count
|
|
45
|
-
...follow.target_feed,
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
if (source.created_by.id === connectedUserId) {
|
|
49
|
-
newState.own_follows = currentState.own_follows
|
|
50
|
-
? currentState.own_follows.concat(follow)
|
|
51
|
-
: [follow];
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Only update if followers array already exists
|
|
55
|
-
if (currentState.followers !== undefined) {
|
|
56
|
-
newState.followers = [follow, ...currentState.followers];
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return { changed: true, data: newState };
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
export const handleFollowDeleted = (
|
|
64
|
-
follow:
|
|
65
|
-
| FollowResponse
|
|
66
|
-
| { source_feed: { fid: string }; target_feed: { fid: string } },
|
|
67
|
-
currentState: FeedState,
|
|
68
|
-
currentFeedId: string,
|
|
69
|
-
connectedUserId?: string,
|
|
70
|
-
): UpdateStateResult<{ data: FeedState }> => {
|
|
71
|
-
let newState: FeedState = { ...currentState };
|
|
72
|
-
|
|
73
|
-
// this feed unfollowed someone
|
|
74
|
-
if (follow.source_feed.fid === currentFeedId) {
|
|
75
|
-
newState = {
|
|
76
|
-
...newState,
|
|
77
|
-
// Update FeedResponse fields, that has the new follower/following count
|
|
78
|
-
...follow.source_feed,
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
// Only update if following array already exists
|
|
82
|
-
if (currentState.following !== undefined) {
|
|
83
|
-
newState.following = currentState.following.filter(
|
|
84
|
-
(followItem) => followItem.target_feed.fid !== follow.target_feed.fid,
|
|
85
|
-
);
|
|
86
|
-
}
|
|
87
|
-
} else if (
|
|
88
|
-
// someone unfollowed this feed
|
|
89
|
-
follow.target_feed.fid === currentFeedId
|
|
90
|
-
) {
|
|
91
|
-
const source = follow.source_feed;
|
|
92
|
-
|
|
93
|
-
newState = {
|
|
94
|
-
...newState,
|
|
95
|
-
// Update FeedResponse fields, that has the new follower/following count
|
|
96
|
-
...follow.target_feed,
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
if (
|
|
100
|
-
isFeedResponse(source) &&
|
|
101
|
-
source.created_by.id === connectedUserId &&
|
|
102
|
-
currentState.own_follows !== undefined
|
|
103
|
-
) {
|
|
104
|
-
newState.own_follows = currentState.own_follows.filter(
|
|
105
|
-
(followItem) => followItem.source_feed.fid !== follow.source_feed.fid,
|
|
106
|
-
);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// Only update if followers array already exists
|
|
110
|
-
if (currentState.followers !== undefined) {
|
|
111
|
-
newState.followers = currentState.followers.filter(
|
|
112
|
-
(followItem) => followItem.source_feed.fid !== follow.source_feed.fid,
|
|
113
|
-
);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
return { changed: true, data: newState };
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
export const handleFollowUpdated = (
|
|
121
|
-
currentState: FeedState,
|
|
122
|
-
): UpdateStateResult<{ data: FeedState }> => {
|
|
123
|
-
// For now, we'll treat follow updates as no-ops since the current implementation does
|
|
124
|
-
// This can be enhanced later if needed
|
|
125
|
-
return { changed: false, data: currentState };
|
|
126
|
-
};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { FollowResponse } from '../gen/models';
|
|
2
|
-
|
|
3
|
-
export const shouldUpdateState = ({
|
|
4
|
-
stateUpdateId,
|
|
5
|
-
stateUpdateQueue,
|
|
6
|
-
watch,
|
|
7
|
-
}: {
|
|
8
|
-
stateUpdateId: string;
|
|
9
|
-
stateUpdateQueue: Set<string>;
|
|
10
|
-
watch: boolean;
|
|
11
|
-
}) => {
|
|
12
|
-
if (!watch) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
if (watch && stateUpdateQueue.has(stateUpdateId)) {
|
|
17
|
-
stateUpdateQueue.delete(stateUpdateId);
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
stateUpdateQueue.add(stateUpdateId);
|
|
22
|
-
return true;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
export const getStateUpdateQueueIdForFollow = (follow: FollowResponse) => {
|
|
26
|
-
return `follow${follow.source_feed.fid}-${follow.target_feed.fid}`;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export const getStateUpdateQueueIdForUnfollow = (
|
|
30
|
-
follow:
|
|
31
|
-
| FollowResponse
|
|
32
|
-
| { source_feed: { fid: string }; target_feed: { fid: string } },
|
|
33
|
-
) => {
|
|
34
|
-
return `unfollow${follow.source_feed.fid}-${follow.target_feed.fid}`;
|
|
35
|
-
};
|
package/src/utils.ts
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { CommentParent, StreamFile } from './types';
|
|
2
|
-
import type { CommentResponse } from './gen/models';
|
|
3
|
-
|
|
4
|
-
export const isImageFile = (file: StreamFile) => {
|
|
5
|
-
// photoshop files begin with 'image/'
|
|
6
|
-
return file.type.startsWith('image/') && !file.type.endsWith('.photoshop');
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
export const isVideoFile = (file: StreamFile) => {
|
|
10
|
-
return file.type.startsWith('video/');
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export const checkHasAnotherPage = <T extends unknown | undefined>(
|
|
14
|
-
v: T,
|
|
15
|
-
cursor: string | undefined,
|
|
16
|
-
) =>
|
|
17
|
-
(typeof v === 'undefined' && typeof cursor === 'undefined') ||
|
|
18
|
-
typeof cursor === 'string';
|
|
19
|
-
|
|
20
|
-
export const isCommentResponse = (
|
|
21
|
-
entity: CommentParent,
|
|
22
|
-
): entity is CommentResponse => {
|
|
23
|
-
return typeof (entity as CommentResponse)?.object_id === 'string';
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export const Constants = {
|
|
27
|
-
DEFAULT_COMMENT_PAGINATION: 'first',
|
|
28
|
-
} as const;
|
|
29
|
-
|
|
30
|
-
export const uniqueArrayMerge = <T>(
|
|
31
|
-
existingArray: T[],
|
|
32
|
-
arrayToMerge: T[],
|
|
33
|
-
getKey: (v: T) => string,
|
|
34
|
-
) => {
|
|
35
|
-
const existing = new Set<string>();
|
|
36
|
-
|
|
37
|
-
existingArray.forEach((value) => {
|
|
38
|
-
const key = getKey(value);
|
|
39
|
-
existing.add(key);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
const filteredArrayToMerge = arrayToMerge.filter((value) => {
|
|
43
|
-
const key = getKey(value);
|
|
44
|
-
return !existing.has(key);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
return existingArray.concat(filteredArrayToMerge);
|
|
48
|
-
};
|
|
File without changes
|
|
File without changes
|