@stream-io/feeds-client 0.3.24 → 0.3.26
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 +1 -1
- package/dist/es/index.mjs +3 -2
- package/dist/es/react-bindings.mjs +1 -1
- package/dist/{feeds-client-DljxtRSI.mjs → feeds-client-BNiazJbH.mjs} +114 -44
- package/dist/feeds-client-BNiazJbH.mjs.map +1 -0
- package/dist/{feeds-client-CuCL126K.js → feeds-client-K0WzrfH-.js} +114 -44
- package/dist/feeds-client-K0WzrfH-.js.map +1 -0
- package/dist/types/feed/event-handlers/activity/handle-activity-added.d.ts +3 -1
- package/dist/types/feed/event-handlers/activity/handle-activity-added.d.ts.map +1 -1
- package/dist/types/feed/feed.d.ts +4 -1
- package/dist/types/feed/feed.d.ts.map +1 -1
- package/dist/types/feeds-client/feeds-client.d.ts +10 -3
- package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
- package/dist/types/feeds-client/get-or-create-active-feed.d.ts +1 -2
- package/dist/types/feeds-client/get-or-create-active-feed.d.ts.map +1 -1
- package/dist/types/utils/check-own-fields-equality.d.ts +5 -0
- package/dist/types/utils/check-own-fields-equality.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/own-feed-fields.d.ts +3 -0
- package/dist/types/utils/own-feed-fields.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/feed/event-handlers/activity/handle-activity-added.ts +3 -1
- package/src/feed/feed.ts +49 -16
- package/src/feeds-client/feeds-client.ts +69 -30
- package/src/feeds-client/get-or-create-active-feed.ts +2 -6
- package/src/test-utils/response-generators.ts +2 -1
- package/src/utils/check-own-fields-equality.ts +40 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/own-feed-fields.ts +6 -0
- package/dist/feeds-client-CuCL126K.js.map +0 -1
- package/dist/feeds-client-DljxtRSI.mjs.map +0 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Feed } from '../../feed';
|
|
2
2
|
import { ActivityResponse } from '../../../gen/models';
|
|
3
3
|
import { EventPayload } from '../../../types-internal';
|
|
4
|
-
export declare function addActivitiesToState(this: Feed, newActivities: ActivityResponse[], activities: ActivityResponse[] | undefined, position: 'start' | 'end'
|
|
4
|
+
export declare function addActivitiesToState(this: Feed, newActivities: ActivityResponse[], activities: ActivityResponse[] | undefined, position: 'start' | 'end', { fromWebSocket }?: {
|
|
5
|
+
fromWebSocket: boolean;
|
|
6
|
+
}): {
|
|
5
7
|
changed: boolean;
|
|
6
8
|
activities: ActivityResponse[];
|
|
7
9
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-activity-added.d.ts","sourceRoot":"","sources":["../../../../../src/feed/event-handlers/activity/handle-activity-added.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,gBAAgB,EAAE,EACjC,UAAU,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAC1C,QAAQ,EAAE,OAAO,GAAG,KAAK;;;
|
|
1
|
+
{"version":3,"file":"handle-activity-added.d.ts","sourceRoot":"","sources":["../../../../../src/feed/event-handlers/activity/handle-activity-added.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,gBAAgB,EAAE,EACjC,UAAU,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAC1C,QAAQ,EAAE,OAAO,GAAG,KAAK,EACzB,EAAE,aAAa,EAAE,GAAE;IAAE,aAAa,EAAE,OAAO,CAAA;CAA6B;;;EAiCzE;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,YAAY,CAAC,sBAAsB,CAAC,QA0B5C"}
|
|
@@ -131,6 +131,9 @@ export declare class Feed extends FeedApi {
|
|
|
131
131
|
on: (eventName: "all" | "app.updated" | "feeds.activity.added" | "feeds.activity.deleted" | "feeds.activity.feedback" | "feeds.activity.marked" | "feeds.activity.pinned" | "feeds.activity.reaction.added" | "feeds.activity.reaction.deleted" | "feeds.activity.reaction.updated" | "feeds.activity.removed_from_feed" | "feeds.activity.unpinned" | "feeds.activity.updated" | "feeds.bookmark.added" | "feeds.bookmark.deleted" | "feeds.bookmark.updated" | "feeds.bookmark_folder.deleted" | "feeds.bookmark_folder.updated" | "feeds.comment.added" | "feeds.comment.deleted" | "feeds.comment.reaction.added" | "feeds.comment.reaction.deleted" | "feeds.comment.reaction.updated" | "feeds.comment.updated" | "feeds.feed.created" | "feeds.feed.deleted" | "feeds.feed.updated" | "feeds.feed_group.changed" | "feeds.feed_group.deleted" | "feeds.feed_member.added" | "feeds.feed_member.removed" | "feeds.feed_member.updated" | "feeds.follow.created" | "feeds.follow.deleted" | "feeds.follow.updated" | "feeds.notification_feed.updated" | "feeds.poll.closed" | "feeds.poll.deleted" | "feeds.poll.updated" | "feeds.poll.vote_casted" | "feeds.poll.vote_changed" | "feeds.poll.vote_removed" | "feeds.stories_feed.updated" | "health.check" | "moderation.custom_action" | "moderation.mark_reviewed" | "user.updated" | "moderation.flagged" | "user.banned" | "user.deactivated" | "user.muted" | "user.reactivated", handler: (event: WSEvent) => void) => () => void;
|
|
132
132
|
off: (eventName: "all" | "app.updated" | "feeds.activity.added" | "feeds.activity.deleted" | "feeds.activity.feedback" | "feeds.activity.marked" | "feeds.activity.pinned" | "feeds.activity.reaction.added" | "feeds.activity.reaction.deleted" | "feeds.activity.reaction.updated" | "feeds.activity.removed_from_feed" | "feeds.activity.unpinned" | "feeds.activity.updated" | "feeds.bookmark.added" | "feeds.bookmark.deleted" | "feeds.bookmark.updated" | "feeds.bookmark_folder.deleted" | "feeds.bookmark_folder.updated" | "feeds.comment.added" | "feeds.comment.deleted" | "feeds.comment.reaction.added" | "feeds.comment.reaction.deleted" | "feeds.comment.reaction.updated" | "feeds.comment.updated" | "feeds.feed.created" | "feeds.feed.deleted" | "feeds.feed.updated" | "feeds.feed_group.changed" | "feeds.feed_group.deleted" | "feeds.feed_member.added" | "feeds.feed_member.removed" | "feeds.feed_member.updated" | "feeds.follow.created" | "feeds.follow.deleted" | "feeds.follow.updated" | "feeds.notification_feed.updated" | "feeds.poll.closed" | "feeds.poll.deleted" | "feeds.poll.updated" | "feeds.poll.vote_casted" | "feeds.poll.vote_changed" | "feeds.poll.vote_removed" | "feeds.stories_feed.updated" | "health.check" | "moderation.custom_action" | "moderation.mark_reviewed" | "user.updated" | "moderation.flagged" | "user.banned" | "user.deactivated" | "user.muted" | "user.reactivated", handler: (event: WSEvent) => void) => void;
|
|
133
133
|
handleWSEvent(event: WSEvent): void;
|
|
134
|
-
protected newActivitiesAdded(activities: ActivityResponse[]
|
|
134
|
+
protected newActivitiesAdded(activities: ActivityResponse[], options?: {
|
|
135
|
+
fromWebSocket: boolean;
|
|
136
|
+
}): void;
|
|
137
|
+
private getOrCreateFeeds;
|
|
135
138
|
}
|
|
136
139
|
//# sourceMappingURL=feed.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../../src/feed/feed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,OAAO,EACP,gBAAgB,EAChB,eAAe,EAEf,uBAAuB,EACvB,gBAAgB,EAEhB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiCnD,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,aAAa,EACb,8BAA8B,EAC/B,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../../src/feed/feed.ts"],"names":[],"mappings":"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"}
|
|
@@ -153,9 +153,16 @@ export declare class FeedsClient extends FeedsApi {
|
|
|
153
153
|
connection_id?: string;
|
|
154
154
|
}): Promise<StreamResponse<import('..').GetOrCreateFeedResponse>>;
|
|
155
155
|
getFollowSuggestions(...params: Parameters<FeedsApi['getFollowSuggestions']>): Promise<StreamResponse<GetFollowSuggestionsResponse>>;
|
|
156
|
-
protected readonly getOrCreateActiveFeed: (group
|
|
157
|
-
|
|
158
|
-
|
|
156
|
+
protected readonly getOrCreateActiveFeed: ({ group, id, data, watch, options, fromWebSocket, }: {
|
|
157
|
+
group: string;
|
|
158
|
+
id: string;
|
|
159
|
+
data?: FeedResponse;
|
|
160
|
+
watch?: boolean;
|
|
161
|
+
options?: {
|
|
162
|
+
addNewActivitiesTo?: "start" | "end";
|
|
163
|
+
activityAddedEventFilter?: (event: ActivityAddedEvent) => boolean;
|
|
164
|
+
};
|
|
165
|
+
fromWebSocket?: boolean;
|
|
159
166
|
}) => Feed;
|
|
160
167
|
private findAllActiveFeedsByActivityId;
|
|
161
168
|
private findAllActiveFeedsByFid;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feeds-client.d.ts","sourceRoot":"","sources":["../../../src/feeds-client/feeds-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,8BAA8B,EAC9B,6BAA6B,EAC7B,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EAEb,4BAA4B,EAC5B,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,WAAW,EAEZ,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,UAAU,EACV,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAYpD,OAAO,KAAK,EACV,kBAAkB,EAElB,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EACL,IAAI,EAgBL,MAAM,SAAS,CAAC;AASjB,OAAO,EAKL,KAAK,kCAAkC,EAExC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4DAA4D,CAAC;
|
|
1
|
+
{"version":3,"file":"feeds-client.d.ts","sourceRoot":"","sources":["../../../src/feeds-client/feeds-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { FeedResponse } from '../gen/models';
|
|
2
1
|
import { FeedsClient } from './feeds-client';
|
|
3
|
-
export declare function getOrCreateActiveFeed(this: FeedsClient,
|
|
2
|
+
export declare function getOrCreateActiveFeed(this: FeedsClient, ...args: Parameters<FeedsClient['getOrCreateActiveFeed']>): import('..').Feed;
|
|
4
3
|
//# sourceMappingURL=get-or-create-active-feed.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-or-create-active-feed.d.ts","sourceRoot":"","sources":["../../../src/feeds-client/get-or-create-active-feed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"get-or-create-active-feed.d.ts","sourceRoot":"","sources":["../../../src/feeds-client/get-or-create-active-feed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,WAAW,EACjB,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,qBAG1D"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { FeedState } from '../feed';
|
|
2
|
+
import { FeedResponse } from '../gen/models';
|
|
3
|
+
export declare const isOwnFollowsEqual: (currentState: FeedState, newState: FeedResponse) => boolean;
|
|
4
|
+
export declare const isOwnMembershipEqual: (currentState: FeedState, newState: FeedResponse) => boolean;
|
|
5
|
+
//# sourceMappingURL=check-own-fields-equality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-own-fields-equality.d.ts","sourceRoot":"","sources":["../../../src/utils/check-own-fields-equality.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,eAAO,MAAM,iBAAiB,GAC5B,cAAc,SAAS,EACvB,UAAU,YAAY,YAwBvB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,cAAc,SAAS,EACvB,UAAU,YAAY,YAMvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"own-feed-fields.d.ts","sourceRoot":"","sources":["../../../src/utils/own-feed-fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,MAAM,IAAI,CAC1C,YAAY,EACZ,kBAAkB,GAAG,aAAa,GAAG,gBAAgB,CACtD,CAAyD,CAAC"}
|
package/package.json
CHANGED
|
@@ -7,6 +7,7 @@ export function addActivitiesToState(
|
|
|
7
7
|
newActivities: ActivityResponse[],
|
|
8
8
|
activities: ActivityResponse[] | undefined,
|
|
9
9
|
position: 'start' | 'end',
|
|
10
|
+
{ fromWebSocket }: { fromWebSocket: boolean } = { fromWebSocket: false },
|
|
10
11
|
) {
|
|
11
12
|
if (activities === undefined) {
|
|
12
13
|
return {
|
|
@@ -33,7 +34,7 @@ export function addActivitiesToState(
|
|
|
33
34
|
...activities,
|
|
34
35
|
...(position === 'end' ? newActivitiesDeduplicated : []),
|
|
35
36
|
];
|
|
36
|
-
this.newActivitiesAdded(newActivitiesDeduplicated);
|
|
37
|
+
this.newActivitiesAdded(newActivitiesDeduplicated, { fromWebSocket });
|
|
37
38
|
|
|
38
39
|
result = { changed: true, activities: updatedActivities };
|
|
39
40
|
}
|
|
@@ -55,6 +56,7 @@ export function handleActivityAdded(
|
|
|
55
56
|
[event.activity],
|
|
56
57
|
currentActivities,
|
|
57
58
|
this.currentState.addNewActivitiesTo,
|
|
59
|
+
{ fromWebSocket: true },
|
|
58
60
|
);
|
|
59
61
|
if (result.changed) {
|
|
60
62
|
const activity = event.activity;
|
package/src/feed/feed.ts
CHANGED
|
@@ -63,6 +63,7 @@ import {
|
|
|
63
63
|
checkHasAnotherPage,
|
|
64
64
|
Constants,
|
|
65
65
|
feedsLoggerSystem,
|
|
66
|
+
ownFeedFields,
|
|
66
67
|
uniqueArrayMerge,
|
|
67
68
|
} from '../utils';
|
|
68
69
|
import { handleActivityFeedback } from './event-handlers/activity/handle-activity-feedback';
|
|
@@ -953,12 +954,13 @@ export class Feed extends FeedApi {
|
|
|
953
954
|
event.activity.current_feed &&
|
|
954
955
|
currentActivity?.current_feed
|
|
955
956
|
) {
|
|
956
|
-
|
|
957
|
-
currentActivity.current_feed
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
957
|
+
ownFeedFields.forEach((field) => {
|
|
958
|
+
if (field in currentActivity.current_feed!) {
|
|
959
|
+
// @ts-expect-error TODO: fix this
|
|
960
|
+
event.activity.current_feed![field] =
|
|
961
|
+
currentActivity.current_feed![field];
|
|
962
|
+
}
|
|
963
|
+
});
|
|
962
964
|
}
|
|
963
965
|
}
|
|
964
966
|
// @ts-expect-error intersection of handler arguments results to never
|
|
@@ -974,17 +976,48 @@ export class Feed extends FeedApi {
|
|
|
974
976
|
this.eventDispatcher.dispatch(event);
|
|
975
977
|
}
|
|
976
978
|
|
|
977
|
-
protected newActivitiesAdded(
|
|
979
|
+
protected newActivitiesAdded(
|
|
980
|
+
activities: ActivityResponse[],
|
|
981
|
+
options: {
|
|
982
|
+
fromWebSocket: boolean;
|
|
983
|
+
} = { fromWebSocket: false },
|
|
984
|
+
) {
|
|
978
985
|
this.client.hydratePollCache(activities);
|
|
986
|
+
this.getOrCreateFeeds(activities, options);
|
|
987
|
+
}
|
|
979
988
|
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
+
private getOrCreateFeeds(
|
|
990
|
+
activities: ActivityResponse[],
|
|
991
|
+
options: {
|
|
992
|
+
fromWebSocket: boolean;
|
|
993
|
+
},
|
|
994
|
+
) {
|
|
995
|
+
const enrichmentOptions =
|
|
996
|
+
this.currentState.last_get_or_create_request_config?.enrichment_options;
|
|
997
|
+
if (
|
|
998
|
+
!enrichmentOptions?.skip_activity_current_feed &&
|
|
999
|
+
!enrichmentOptions?.skip_all
|
|
1000
|
+
) {
|
|
1001
|
+
const feedsToGetOrCreate = new Map<string, FeedResponse>();
|
|
1002
|
+
activities.forEach((activity) => {
|
|
1003
|
+
if (
|
|
1004
|
+
activity.current_feed &&
|
|
1005
|
+
!feedsToGetOrCreate.has(activity.current_feed.feed)
|
|
1006
|
+
) {
|
|
1007
|
+
feedsToGetOrCreate.set(
|
|
1008
|
+
activity.current_feed.feed,
|
|
1009
|
+
activity.current_feed,
|
|
1010
|
+
);
|
|
1011
|
+
}
|
|
1012
|
+
});
|
|
1013
|
+
Array.from(feedsToGetOrCreate.values()).forEach((feed) => {
|
|
1014
|
+
getOrCreateActiveFeed.bind(this.client)({
|
|
1015
|
+
group: feed.group_id,
|
|
1016
|
+
id: feed.id,
|
|
1017
|
+
data: feed,
|
|
1018
|
+
fromWebSocket: options.fromWebSocket,
|
|
1019
|
+
});
|
|
1020
|
+
});
|
|
1021
|
+
}
|
|
989
1022
|
}
|
|
990
1023
|
}
|
|
@@ -93,6 +93,10 @@ import {
|
|
|
93
93
|
} from '../utils/throttling';
|
|
94
94
|
import { ActivityWithStateUpdates } from '../activity-with-state-updates/activity-with-state-updates';
|
|
95
95
|
import { getFeed } from '../activity-with-state-updates/get-feed';
|
|
96
|
+
import {
|
|
97
|
+
isOwnFollowsEqual,
|
|
98
|
+
isOwnMembershipEqual,
|
|
99
|
+
} from '../utils/check-own-fields-equality';
|
|
96
100
|
|
|
97
101
|
export type FeedsClientState = {
|
|
98
102
|
connected_user: ConnectedUser | undefined;
|
|
@@ -175,11 +179,11 @@ export class FeedsClient extends FeedsApi {
|
|
|
175
179
|
case 'feeds.feed.created': {
|
|
176
180
|
if (this.activeFeeds[event.feed.id]) break;
|
|
177
181
|
|
|
178
|
-
this.getOrCreateActiveFeed(
|
|
179
|
-
event.feed.group_id,
|
|
180
|
-
event.feed.id,
|
|
181
|
-
event.feed,
|
|
182
|
-
);
|
|
182
|
+
this.getOrCreateActiveFeed({
|
|
183
|
+
group: event.feed.group_id,
|
|
184
|
+
id: event.feed.id,
|
|
185
|
+
data: event.feed,
|
|
186
|
+
});
|
|
183
187
|
|
|
184
188
|
break;
|
|
185
189
|
}
|
|
@@ -674,13 +678,11 @@ export class FeedsClient extends FeedsApi {
|
|
|
674
678
|
activityAddedEventFilter?: (event: ActivityAddedEvent) => boolean;
|
|
675
679
|
},
|
|
676
680
|
) => {
|
|
677
|
-
return this.getOrCreateActiveFeed(
|
|
678
|
-
groupId,
|
|
681
|
+
return this.getOrCreateActiveFeed({
|
|
682
|
+
group: groupId,
|
|
679
683
|
id,
|
|
680
|
-
undefined,
|
|
681
|
-
undefined,
|
|
682
684
|
options,
|
|
683
|
-
);
|
|
685
|
+
});
|
|
684
686
|
};
|
|
685
687
|
|
|
686
688
|
/**
|
|
@@ -706,12 +708,12 @@ export class FeedsClient extends FeedsApi {
|
|
|
706
708
|
const feedResponses = response.feeds;
|
|
707
709
|
|
|
708
710
|
const feeds = feedResponses.map((feedResponse) =>
|
|
709
|
-
this.getOrCreateActiveFeed(
|
|
710
|
-
feedResponse.group_id,
|
|
711
|
-
feedResponse.id,
|
|
712
|
-
feedResponse,
|
|
713
|
-
request?.watch,
|
|
714
|
-
),
|
|
711
|
+
this.getOrCreateActiveFeed({
|
|
712
|
+
group: feedResponse.group_id,
|
|
713
|
+
id: feedResponse.id,
|
|
714
|
+
data: feedResponse,
|
|
715
|
+
watch: request?.watch,
|
|
716
|
+
}),
|
|
715
717
|
);
|
|
716
718
|
|
|
717
719
|
this.hydrateCapabilitiesCache(feedResponses);
|
|
@@ -844,27 +846,35 @@ export class FeedsClient extends FeedsApi {
|
|
|
844
846
|
const response = await super.getFollowSuggestions(...params);
|
|
845
847
|
|
|
846
848
|
response.suggestions.forEach((suggestion) => {
|
|
847
|
-
this.getOrCreateActiveFeed(
|
|
848
|
-
suggestion.group_id,
|
|
849
|
-
suggestion.id,
|
|
850
|
-
suggestion,
|
|
851
|
-
);
|
|
849
|
+
this.getOrCreateActiveFeed({
|
|
850
|
+
group: suggestion.group_id,
|
|
851
|
+
id: suggestion.id,
|
|
852
|
+
data: suggestion,
|
|
853
|
+
});
|
|
852
854
|
});
|
|
853
855
|
|
|
854
856
|
// TODO: return feed instance here https://linear.app/stream/issue/REACT-669/return-feed-instance-from-followsuggestions-breaking
|
|
855
857
|
return response;
|
|
856
858
|
}
|
|
857
859
|
|
|
858
|
-
protected readonly getOrCreateActiveFeed = (
|
|
859
|
-
group
|
|
860
|
-
id
|
|
861
|
-
data
|
|
862
|
-
watch
|
|
860
|
+
protected readonly getOrCreateActiveFeed = ({
|
|
861
|
+
group,
|
|
862
|
+
id,
|
|
863
|
+
data,
|
|
864
|
+
watch,
|
|
865
|
+
options,
|
|
866
|
+
fromWebSocket = false,
|
|
867
|
+
}: {
|
|
868
|
+
group: string;
|
|
869
|
+
id: string;
|
|
870
|
+
data?: FeedResponse;
|
|
871
|
+
watch?: boolean;
|
|
863
872
|
options?: {
|
|
864
873
|
addNewActivitiesTo?: 'start' | 'end';
|
|
865
874
|
activityAddedEventFilter?: (event: ActivityAddedEvent) => boolean;
|
|
866
|
-
}
|
|
867
|
-
|
|
875
|
+
};
|
|
876
|
+
fromWebSocket?: boolean;
|
|
877
|
+
}) => {
|
|
868
878
|
const fid = `${group}:${id}`;
|
|
869
879
|
let isCreated = false;
|
|
870
880
|
|
|
@@ -893,8 +903,37 @@ export class FeedsClient extends FeedsApi {
|
|
|
893
903
|
}
|
|
894
904
|
|
|
895
905
|
if (!feed.currentState.watch) {
|
|
896
|
-
|
|
897
|
-
|
|
906
|
+
if (!isCreated && data) {
|
|
907
|
+
if (
|
|
908
|
+
(feed.currentState.updated_at?.getTime() ?? 0) <
|
|
909
|
+
data.updated_at.getTime()
|
|
910
|
+
) {
|
|
911
|
+
handleFeedUpdated.call(feed, { feed: data });
|
|
912
|
+
} else if (
|
|
913
|
+
(feed.currentState.updated_at?.getTime() ?? 0) ===
|
|
914
|
+
data.updated_at.getTime() &&
|
|
915
|
+
!fromWebSocket
|
|
916
|
+
) {
|
|
917
|
+
const fieldsToUpdate: Array<keyof FeedResponse> = [];
|
|
918
|
+
if (!isOwnFollowsEqual(feed.currentState, data)) {
|
|
919
|
+
fieldsToUpdate.push('own_follows');
|
|
920
|
+
}
|
|
921
|
+
if (!isOwnMembershipEqual(feed.currentState, data)) {
|
|
922
|
+
fieldsToUpdate.push('own_membership');
|
|
923
|
+
}
|
|
924
|
+
if (fieldsToUpdate.length > 0) {
|
|
925
|
+
const fieldsToUpdateData = fieldsToUpdate.reduce(
|
|
926
|
+
(acc: Partial<FeedResponse>, field) => {
|
|
927
|
+
// @ts-expect-error TODO: fix this
|
|
928
|
+
acc[field] = data[field];
|
|
929
|
+
return acc;
|
|
930
|
+
},
|
|
931
|
+
{},
|
|
932
|
+
);
|
|
933
|
+
feed.state.partialNext(fieldsToUpdateData);
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
}
|
|
898
937
|
if (watch) handleWatchStarted.call(feed);
|
|
899
938
|
}
|
|
900
939
|
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import type { FeedResponse } from '../gen/models';
|
|
2
1
|
import type { FeedsClient } from './feeds-client';
|
|
3
2
|
|
|
4
3
|
export function getOrCreateActiveFeed(
|
|
5
4
|
this: FeedsClient,
|
|
6
|
-
|
|
7
|
-
id: string,
|
|
8
|
-
data?: FeedResponse,
|
|
9
|
-
watch?: boolean,
|
|
5
|
+
...args: Parameters<FeedsClient['getOrCreateActiveFeed']>
|
|
10
6
|
) {
|
|
11
|
-
return this.getOrCreateActiveFeed(
|
|
7
|
+
return this.getOrCreateActiveFeed(...args);
|
|
12
8
|
}
|
|
@@ -106,9 +106,10 @@ export const generateFeedResponse = (
|
|
|
106
106
|
name: humanId({ separator: ' ' }),
|
|
107
107
|
pin_count: 0,
|
|
108
108
|
custom: {},
|
|
109
|
+
own_capabilities: [],
|
|
110
|
+
activity_count: 0,
|
|
109
111
|
...overrides,
|
|
110
112
|
feed,
|
|
111
|
-
own_capabilities: [],
|
|
112
113
|
created_by: generateUserResponse(overrides.created_by),
|
|
113
114
|
};
|
|
114
115
|
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { FeedState } from '../feed';
|
|
2
|
+
import type { FeedResponse } from '../gen/models';
|
|
3
|
+
|
|
4
|
+
export const isOwnFollowsEqual = (
|
|
5
|
+
currentState: FeedState,
|
|
6
|
+
newState: FeedResponse,
|
|
7
|
+
) => {
|
|
8
|
+
const existingFollows = new Set(
|
|
9
|
+
currentState.own_follows?.map(
|
|
10
|
+
(f) =>
|
|
11
|
+
`${f.source_feed.feed}:${f.target_feed.feed}:${f.updated_at.getTime()}`,
|
|
12
|
+
),
|
|
13
|
+
);
|
|
14
|
+
const newFollows = new Set(
|
|
15
|
+
newState.own_follows?.map(
|
|
16
|
+
(f) =>
|
|
17
|
+
`${f.source_feed.feed}:${f.target_feed.feed}:${f.updated_at.getTime()}`,
|
|
18
|
+
),
|
|
19
|
+
);
|
|
20
|
+
if (existingFollows.size === newFollows.size) {
|
|
21
|
+
const areEqual = Array.from(existingFollows).every((f) =>
|
|
22
|
+
newFollows.has(f),
|
|
23
|
+
);
|
|
24
|
+
if (areEqual) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return false;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const isOwnMembershipEqual = (
|
|
33
|
+
currentState: FeedState,
|
|
34
|
+
newState: FeedResponse,
|
|
35
|
+
) => {
|
|
36
|
+
return (
|
|
37
|
+
(currentState.own_membership?.updated_at.getTime() ?? 0) ===
|
|
38
|
+
(newState.own_membership?.updated_at.getTime() ?? 0)
|
|
39
|
+
);
|
|
40
|
+
};
|
package/src/utils/index.ts
CHANGED