@stream-io/feeds-client 0.3.7 → 0.3.8
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 +7 -0
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/react-bindings.js +76 -14
- package/dist/cjs/react-bindings.js.map +1 -1
- package/dist/es/index.mjs +3 -2
- package/dist/es/react-bindings.mjs +76 -14
- package/dist/es/react-bindings.mjs.map +1 -1
- package/dist/{feeds-client-DLiLkrA0.js → feeds-client-CwioZBvA.js} +274 -52
- package/dist/feeds-client-CwioZBvA.js.map +1 -0
- package/dist/{feeds-client-3aXF89xy.mjs → feeds-client-DVbsjKUf.mjs} +274 -52
- package/dist/feeds-client-DVbsjKUf.mjs.map +1 -0
- package/dist/types/activity-with-state-updates/activity-with-state-updates.d.ts +49 -0
- package/dist/types/activity-with-state-updates/activity-with-state-updates.d.ts.map +1 -0
- package/dist/types/activity-with-state-updates/get-feed.d.ts +3 -0
- package/dist/types/activity-with-state-updates/get-feed.d.ts.map +1 -0
- package/dist/types/bindings/react/hooks/feed-state-hooks/index.d.ts +1 -0
- package/dist/types/bindings/react/hooks/feed-state-hooks/index.d.ts.map +1 -1
- package/dist/types/bindings/react/hooks/feed-state-hooks/useActivityComments.d.ts +32 -0
- package/dist/types/bindings/react/hooks/feed-state-hooks/useActivityComments.d.ts.map +1 -0
- package/dist/types/bindings/react/hooks/feed-state-hooks/useComments.d.ts +4 -0
- package/dist/types/bindings/react/hooks/feed-state-hooks/useComments.d.ts.map +1 -1
- package/dist/types/bindings/react/hooks/feed-state-hooks/useOwnCapabilities.d.ts.map +1 -1
- package/dist/types/bindings/react/hooks/useCreateFeedsClient.d.ts.map +1 -1
- package/dist/types/common/real-time/event-models.d.ts +1 -0
- package/dist/types/common/real-time/event-models.d.ts.map +1 -1
- package/dist/types/feed/feed.d.ts +1 -1
- package/dist/types/feed/feed.d.ts.map +1 -1
- package/dist/types/feeds-client/active-activity.d.ts +8 -0
- package/dist/types/feeds-client/active-activity.d.ts.map +1 -0
- package/dist/types/feeds-client/feeds-client.d.ts +36 -3
- package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/activity-with-state-updates/activity-with-state-updates.ts +190 -0
- package/src/activity-with-state-updates/get-feed.ts +5 -0
- package/src/bindings/react/hooks/feed-state-hooks/index.ts +1 -0
- package/src/bindings/react/hooks/feed-state-hooks/useActivityComments.ts +113 -0
- package/src/bindings/react/hooks/feed-state-hooks/useComments.ts +4 -0
- package/src/bindings/react/hooks/feed-state-hooks/useOwnCapabilities.ts +12 -9
- package/src/bindings/react/hooks/useCreateFeedsClient.ts +0 -6
- package/src/common/real-time/event-models.ts +5 -1
- package/src/feed/feed.ts +16 -6
- package/src/feeds-client/active-activity.ts +42 -0
- package/src/feeds-client/feeds-client.ts +162 -53
- package/src/index.ts +1 -0
- package/src/test-utils/response-generators.ts +1 -0
- package/src/types.ts +8 -10
- package/dist/feeds-client-3aXF89xy.mjs.map +0 -1
- package/dist/feeds-client-DLiLkrA0.js.map +0 -1
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { StateStore } from '@stream-io/state-store';
|
|
2
|
+
import { Feed, FeedState } from '../feed';
|
|
3
|
+
import { FeedsClient } from '../feeds-client';
|
|
4
|
+
import { ActivityResponse } from '../gen/models';
|
|
5
|
+
import { GetCommentsRequest } from '..';
|
|
6
|
+
type GetActivityConfig = {
|
|
7
|
+
comments?: Partial<Omit<GetCommentsRequest, 'object_id' | 'object_type' | 'next'>>;
|
|
8
|
+
};
|
|
9
|
+
export type ActivityState = {
|
|
10
|
+
activity?: ActivityResponse;
|
|
11
|
+
} & Pick<FeedState, 'comments_by_entity_id'> & {
|
|
12
|
+
/**
|
|
13
|
+
* True when state is being fetched from API
|
|
14
|
+
*/
|
|
15
|
+
is_loading: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
last_get_request_config?: GetActivityConfig;
|
|
20
|
+
};
|
|
21
|
+
export declare class ActivityWithStateUpdates {
|
|
22
|
+
readonly id: string;
|
|
23
|
+
private readonly feedsClient;
|
|
24
|
+
readonly state: StateStore<ActivityState>;
|
|
25
|
+
protected feed: Feed | undefined;
|
|
26
|
+
private unsubscribeFromFeedState?;
|
|
27
|
+
private inProgressGet?;
|
|
28
|
+
constructor(id: string, feedsClient: FeedsClient);
|
|
29
|
+
get currentState(): ActivityState;
|
|
30
|
+
get feeds(): string[];
|
|
31
|
+
/**
|
|
32
|
+
* Fetch activity and load it into state
|
|
33
|
+
* @param watch - Whether to watch the feed the activity belongs to for real-time updates
|
|
34
|
+
* @param feed - The feed to watch. Use only if the activity belongs to multiple feeds and you want to specify the feed explicitly.
|
|
35
|
+
* @param feedSelector - A function to select the feed from the activity response. Use only if the activity belongs to multiple feeds and you want to specify the feed explicitly.
|
|
36
|
+
*/
|
|
37
|
+
get(request?: GetActivityConfig): Promise<ActivityResponse>;
|
|
38
|
+
loadNextPageActivityComments(request?: Partial<Omit<GetCommentsRequest, 'object_id' | 'object_type' | 'next'>>): Promise<void>;
|
|
39
|
+
loadNextPageCommentReplies(...params: Parameters<Feed['loadNextPageCommentReplies']>): Promise<void>;
|
|
40
|
+
dispose(): void;
|
|
41
|
+
/**
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
synchronize(): Promise<ActivityResponse | undefined>;
|
|
45
|
+
private setFeed;
|
|
46
|
+
private subscribeToFeedState;
|
|
47
|
+
}
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=activity-with-state-updates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-with-state-updates.d.ts","sourceRoot":"","sources":["../../../src/activity-with-state-updates/activity-with-state-updates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAGhD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,EAAE,OAAO,CAChB,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,aAAa,GAAG,MAAM,CAAC,CAC/D,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAAE,GAAG,IAAI,CAChE,SAAS,EACT,uBAAuB,CACxB,GAAG;IACA;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,uBAAuB,CAAC,EAAE,iBAAiB,CAAC;CAC7C,CAAC;AAEJ,qBAAa,wBAAwB;aAUjB,EAAE,EAAE,MAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAV9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;IAC1C,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,wBAAwB,CAAC,CAAa;IAC9C,OAAO,CAAC,aAAa,CAAC,CAGpB;gBAGgB,EAAE,EAAE,MAAM,EACT,WAAW,EAAE,WAAW;IAS3C,IAAI,YAAY,kBAEf;IAED,IAAI,KAAK,aAER;IAED;;;;;OAKG;IACG,GAAG,CAAC,OAAO,GAAE,iBAAsB;IA6CzC,4BAA4B,CAC1B,OAAO,CAAC,EAAE,OAAO,CACf,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,aAAa,GAAG,MAAM,CAAC,CAC/D;IAiBH,0BAA0B,CACxB,GAAG,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAQ3D,OAAO;IAKP;;OAEG;IACG,WAAW;IASjB,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,oBAAoB;CAkB7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-feed.d.ts","sourceRoot":"","sources":["../../../src/activity-with-state-updates/get-feed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE9E,wBAAgB,OAAO,CAAC,IAAI,EAAE,wBAAwB,iCAErD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/bindings/react/hooks/feed-state-hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/bindings/react/hooks/feed-state-hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ActivityResponse, CommentResponse, Feed, ActivityWithStateUpdates } from '../../../..';
|
|
2
|
+
export declare function useActivityComments({ feed: feedFromProps, parentComment, activity, }: {
|
|
3
|
+
feed?: Feed;
|
|
4
|
+
parentComment?: CommentResponse;
|
|
5
|
+
activity?: ActivityResponse | ActivityWithStateUpdates;
|
|
6
|
+
}): {
|
|
7
|
+
has_next_page: boolean;
|
|
8
|
+
is_loading_next_page: boolean;
|
|
9
|
+
loadNextPage: (request?: Partial<Omit<{
|
|
10
|
+
object_id: string;
|
|
11
|
+
object_type: string;
|
|
12
|
+
depth?: number;
|
|
13
|
+
sort?: string;
|
|
14
|
+
replies_limit?: number;
|
|
15
|
+
limit?: number;
|
|
16
|
+
prev?: string;
|
|
17
|
+
next?: string;
|
|
18
|
+
}, "next" | "object_id" | "object_type">> | Partial<Omit<{
|
|
19
|
+
id: string;
|
|
20
|
+
depth?: number;
|
|
21
|
+
sort?: string;
|
|
22
|
+
replies_limit?: number;
|
|
23
|
+
limit?: number;
|
|
24
|
+
prev?: string;
|
|
25
|
+
next?: string;
|
|
26
|
+
}, "next" | "comment_id">> | undefined) => Promise<void>;
|
|
27
|
+
comments: CommentResponse[] | undefined;
|
|
28
|
+
comments_pagination: (import('../../../..').PagerResponse & import('../../../..').LoadingStates & {
|
|
29
|
+
sort?: import('../../../..').QueryCommentsRequest["sort"] | (string & {});
|
|
30
|
+
}) | undefined;
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=useActivityComments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useActivityComments.d.ts","sourceRoot":"","sources":["../../../../../../src/bindings/react/hooks/feed-state-hooks/useActivityComments.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,IAAI,EAGT,KAAK,wBAAwB,EAG9B,MAAM,OAAO,CAAC;AA6Bf,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EAAE,aAAa,EACnB,aAAa,EACb,QAAQ,GACT,EAAE;IACD,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,wBAAwB,CAAC;CACxD;;;;;;;;;;;;;;;;;;;;+CAXM,OAAO,CAAC,IAAI,CAAC;;;;;EA4EnB"}
|
|
@@ -6,6 +6,10 @@ type UseCommentsReturnType<T extends ActivityResponse | CommentResponse> = {
|
|
|
6
6
|
is_loading_next_page: boolean;
|
|
7
7
|
loadNextPage: (request?: T extends CommentResponse ? Parameters<Feed['loadNextPageCommentReplies']>[1] : Parameters<Feed['loadNextPageActivityComments']>[1]) => Promise<void>;
|
|
8
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated Use `useActivityComments` instead.
|
|
11
|
+
* @param
|
|
12
|
+
*/
|
|
9
13
|
export declare function useComments<T extends CommentParent>(_: {
|
|
10
14
|
feed: Feed;
|
|
11
15
|
parent: T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useComments.d.ts","sourceRoot":"","sources":["../../../../../../src/bindings/react/hooks/feed-state-hooks/useComments.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,IAAI,EACT,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAIf,KAAK,qBAAqB,CAAC,CAAC,SAAS,gBAAgB,GAAG,eAAe,IAAI;IACzE,QAAQ,EAAE,WAAW,CACnB,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAC5C,CAAC,UAAU,CAAC,CAAC;IACd,mBAAmB,EAAE,WAAW,CAC9B,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAC5C,CAAC,YAAY,CAAC,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,CACZ,OAAO,CAAC,EAAE,CAAC,SAAS,eAAe,GAC/B,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,GACjD,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,KACpD,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB,CAAC;AAEF,wBAAgB,WAAW,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,EAAE;IACtD,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,CAAC,CAAC;CACX,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC7B,wBAAgB,WAAW,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,EAAE;IACtD,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,MAAM,EAAE,CAAC,CAAC;CACX,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"useComments.d.ts","sourceRoot":"","sources":["../../../../../../src/bindings/react/hooks/feed-state-hooks/useComments.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,IAAI,EACT,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAIf,KAAK,qBAAqB,CAAC,CAAC,SAAS,gBAAgB,GAAG,eAAe,IAAI;IACzE,QAAQ,EAAE,WAAW,CACnB,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAC5C,CAAC,UAAU,CAAC,CAAC;IACd,mBAAmB,EAAE,WAAW,CAC9B,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAC5C,CAAC,YAAY,CAAC,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,CACZ,OAAO,CAAC,EAAE,CAAC,SAAS,eAAe,GAC/B,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,GACjD,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,KACpD,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,EAAE;IACtD,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,CAAC,CAAC;CACX,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC7B,wBAAgB,WAAW,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,EAAE;IACtD,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,MAAM,EAAE,CAAC,CAAC;CACX,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOwnCapabilities.d.ts","sourceRoot":"","sources":["../../../../../../src/bindings/react/hooks/feed-state-hooks/useOwnCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAoB,MAAM,OAAO,CAAC;AAQvE,eAAO,MAAM,kBAAkB,GAAI,gBAAgB,IAAI,
|
|
1
|
+
{"version":3,"file":"useOwnCapabilities.d.ts","sourceRoot":"","sources":["../../../../../../src/bindings/react/hooks/feed-state-hooks/useOwnCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAoB,MAAM,OAAO,CAAC;AAQvE,eAAO,MAAM,kBAAkB,GAAI,gBAAgB,IAAI,iCA0BtD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCreateFeedsClient.d.ts","sourceRoot":"","sources":["../../../../../src/bindings/react/hooks/useCreateFeedsClient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,OAAO,CAAC;AAEf;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,iDAKlC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B,
|
|
1
|
+
{"version":3,"file":"useCreateFeedsClient.d.ts","sourceRoot":"","sources":["../../../../../src/bindings/react/hooks/useCreateFeedsClient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,OAAO,CAAC;AAEf;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,iDAKlC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B,uBA6CA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-models.d.ts","sourceRoot":"","sources":["../../../../src/common/real-time/event-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,EAAE,EAAE,OAAO,CAAC;IACZ;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,oBAAY,kBAAkB;IAC5B,0BAA0B,gCAAgC;IAC1D,oCAAoC,8CAA8C;CACnF;AAED,MAAM,MAAM,WAAW,GAAG;
|
|
1
|
+
{"version":3,"file":"event-models.d.ts","sourceRoot":"","sources":["../../../../src/common/real-time/event-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,EAAE,EAAE,OAAO,CAAC;IACZ;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,oBAAY,kBAAkB;IAC5B,0BAA0B,gCAAgC;IAC1D,oCAAoC,8CAA8C;CACnF;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,UAAU,EAAE,kBAAkB,CAAC;CAChC,GAAG,CACA;IACE,UAAU,EAAE,kBAAkB,CAAC,0BAA0B,CAAC;IAC1D,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB,GACD;IACE,UAAU,EAAE,kBAAkB,CAAC,oCAAoC,CAAC;IACpE,KAAK,EAAE,cAAc,CAAC;CACvB,CACJ,CAAC"}
|
|
@@ -102,7 +102,7 @@ export declare class Feed extends FeedApi {
|
|
|
102
102
|
*/
|
|
103
103
|
private loadCommentsIntoState;
|
|
104
104
|
private loadNextPageComments;
|
|
105
|
-
loadNextPageActivityComments(activity: ActivityResponse, request?: Partial<Omit<GetCommentsRequest, 'object_id' | 'object_type' | 'next'>>): Promise<void>;
|
|
105
|
+
loadNextPageActivityComments(activity: ActivityResponse | string, request?: Partial<Omit<GetCommentsRequest, 'object_id' | 'object_type' | 'next'>>): Promise<void>;
|
|
106
106
|
loadNextPageCommentReplies(comment: CommentResponse, request?: Partial<Omit<GetCommentsRepliesRequest, 'comment_id' | 'next'>>): Promise<void>;
|
|
107
107
|
private loadNextPageFollows;
|
|
108
108
|
loadNextPageFollowers(request: Pick<QueryFollowsRequest, 'limit' | 'sort'>): Promise<void>;
|
|
@@ -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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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Feed } from '../feed';
|
|
2
|
+
import { FeedsClient } from './feeds-client';
|
|
3
|
+
export declare function connectActivityToFeed(this: FeedsClient, { fid, }: {
|
|
4
|
+
fid: string;
|
|
5
|
+
}): Feed;
|
|
6
|
+
export declare function isAnyFeedWatched(this: FeedsClient, fids: string[]): boolean;
|
|
7
|
+
export declare function disconnectActivityFromFeed(this: FeedsClient, id: string): void;
|
|
8
|
+
//# sourceMappingURL=active-activity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-activity.d.ts","sourceRoot":"","sources":["../../../src/feeds-client/active-activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,WAAW,EACjB,EACE,GAAG,GACJ,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;CACb,QAcF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WASjE;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,QAKvE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FeedsApi } from '../gen/feeds/FeedsApi';
|
|
2
|
-
import { ActivityAddedEvent, ActivityResponse, AddCommentReactionRequest, AddCommentReactionResponse, AddCommentRequest, AddCommentResponse, AddReactionRequest, DeleteActivityReactionResponse, DeleteCommentReactionResponse, DeleteCommentResponse, FeedResponse, FileUploadRequest, FollowBatchRequest, FollowRequest, ImageUploadRequest, OwnCapabilitiesBatchRequest, OwnUser, PollResponse, PollVotesResponse, QueryFeedsRequest, QueryPollVotesRequest, UpdateActivityRequest, UpdateActivityResponse, UpdateCommentRequest, UpdateCommentResponse, UpdateFollowRequest, UserRequest } from '../gen/models';
|
|
2
|
+
import { ActivityAddedEvent, ActivityResponse, AddCommentReactionRequest, AddCommentReactionResponse, AddCommentRequest, AddCommentResponse, AddReactionRequest, DeleteActivityReactionResponse, DeleteCommentReactionResponse, DeleteCommentResponse, FeedResponse, FileUploadRequest, FollowBatchRequest, FollowRequest, GetOrCreateFeedRequest, ImageUploadRequest, OwnCapabilitiesBatchRequest, OwnUser, PollResponse, PollVotesResponse, QueryFeedsRequest, QueryPollVotesRequest, UpdateActivityRequest, UpdateActivityResponse, UpdateCommentRequest, UpdateCommentResponse, UpdateFollowRequest, UserRequest } from '../gen/models';
|
|
3
3
|
import { FeedsEvent, StreamFile, TokenOrProvider } from '../types';
|
|
4
4
|
import { StateStore } from '@stream-io/state-store';
|
|
5
5
|
import { FeedsClientOptions, StreamResponse } from '../common/types';
|
|
@@ -7,11 +7,14 @@ import { ModerationClient } from '../moderation-client';
|
|
|
7
7
|
import { StreamPoll } from '../common/Poll';
|
|
8
8
|
import { Feed } from '../feed';
|
|
9
9
|
import { ThrottledGetBatchedOwnCapabilities } from '../utils/throttling';
|
|
10
|
+
import { ActivityWithStateUpdates } from '../activity-with-state-updates/activity-with-state-updates';
|
|
10
11
|
export type FeedsClientState = {
|
|
11
12
|
connected_user: OwnUser | undefined;
|
|
12
13
|
is_ws_connection_healthy: boolean;
|
|
13
14
|
own_capabilities_by_fid: Record<string, FeedResponse['own_capabilities']>;
|
|
14
15
|
};
|
|
16
|
+
type FID = string;
|
|
17
|
+
type ActivityId = string;
|
|
15
18
|
export declare class FeedsClient extends FeedsApi {
|
|
16
19
|
readonly state: StateStore<FeedsClientState>;
|
|
17
20
|
readonly moderation: ModerationClient;
|
|
@@ -20,7 +23,8 @@ export declare class FeedsClient extends FeedsApi {
|
|
|
20
23
|
private readonly connectionIdManager;
|
|
21
24
|
private readonly eventDispatcher;
|
|
22
25
|
private readonly polls_by_id;
|
|
23
|
-
|
|
26
|
+
protected activeActivities: Record<ActivityId, ActivityWithStateUpdates>;
|
|
27
|
+
protected activeFeeds: Record<FID, Feed>;
|
|
24
28
|
private healthyConnectionChangedEventCount;
|
|
25
29
|
protected throttledGetBatchOwnCapabilities: ThrottledGetBatchedOwnCapabilities;
|
|
26
30
|
private cancelGetBatchOwnCapabilitiesTimer;
|
|
@@ -28,6 +32,7 @@ export declare class FeedsClient extends FeedsApi {
|
|
|
28
32
|
constructor(apiKey: string, options?: FeedsClientOptions);
|
|
29
33
|
private setGetBatchOwnCapabilitiesThrottlingInterval;
|
|
30
34
|
private recoverOnReconnect;
|
|
35
|
+
private get allActiveFeeds();
|
|
31
36
|
pollFromState: (id: string) => StreamPoll | undefined;
|
|
32
37
|
hydratePollCache(activities: ActivityResponse[]): void;
|
|
33
38
|
hydrateCapabilitiesCache(feedResponses: Array<Pick<FeedResponse, 'feed' | 'own_capabilities'>>): void;
|
|
@@ -104,6 +109,15 @@ export declare class FeedsClient extends FeedsApi {
|
|
|
104
109
|
addNewActivitiesTo?: "start" | "end";
|
|
105
110
|
activityAddedEventFilter?: (event: ActivityAddedEvent) => boolean;
|
|
106
111
|
}) => Feed;
|
|
112
|
+
/**
|
|
113
|
+
* If you want to get an activity with state updates outside of a feed, use this method.
|
|
114
|
+
*
|
|
115
|
+
* Usually it's used when you implement an activity details page.
|
|
116
|
+
*
|
|
117
|
+
* @param id - The id of the activity
|
|
118
|
+
* @returns The activity with state updates
|
|
119
|
+
*/
|
|
120
|
+
activityWithStateUpdates: (id: ActivityId) => ActivityWithStateUpdates;
|
|
107
121
|
queryFeeds(request?: QueryFeedsRequest): Promise<{
|
|
108
122
|
feeds: Feed[];
|
|
109
123
|
next: string | undefined;
|
|
@@ -123,7 +137,26 @@ export declare class FeedsClient extends FeedsApi {
|
|
|
123
137
|
feed_group_id: string;
|
|
124
138
|
feed_id: string;
|
|
125
139
|
}): Promise<StreamResponse<import('..').Response>>;
|
|
140
|
+
getOrCreateFeed(request: GetOrCreateFeedRequest & {
|
|
141
|
+
feed_group_id: string;
|
|
142
|
+
feed_id: string;
|
|
143
|
+
connection_id?: string;
|
|
144
|
+
}): Promise<StreamResponse<import('..').GetOrCreateFeedResponse>>;
|
|
126
145
|
private readonly getOrCreateActiveFeed;
|
|
127
|
-
private
|
|
146
|
+
private findAllActiveFeedsByActivityId;
|
|
147
|
+
private findAllActiveFeedsByFid;
|
|
148
|
+
/**
|
|
149
|
+
* When updating from WS events we need a special logic:
|
|
150
|
+
* - Find active feeds that match a given fid.
|
|
151
|
+
* - Find active feed from activities where fid matches any of the feeds the activity is posted to.
|
|
152
|
+
*
|
|
153
|
+
* This logic is different from `findAllActiveFeedsByFid` which only checks the first feed an activity is posted to.
|
|
154
|
+
*
|
|
155
|
+
* @param fid
|
|
156
|
+
* @param activityId
|
|
157
|
+
* @returns
|
|
158
|
+
*/
|
|
159
|
+
private findAllActiveFeedsFromWSEvent;
|
|
128
160
|
}
|
|
161
|
+
export {};
|
|
129
162
|
//# sourceMappingURL=feeds-client.d.ts.map
|
|
@@ -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,EACb,kBAAkB,EAClB,2BAA2B,EAC3B,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,WAAW,EAEZ,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACxE,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;
|
|
1
|
+
{"version":3,"file":"feeds-client.d.ts","sourceRoot":"","sources":["../../../src/feeds-client/feeds-client.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,2DAA2D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,sBAAsB,GACtB,mBAAmB,GACnB,mBAAmB,CAAC;AACxB,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE3C,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3E,MAAM,MAAM,yBAAyB,GAAG,UAAU,CAChD,WAAW,CAAC,mBAAmB,CAAC,CACjC,CAAC,CAAC,CAAC,CAAC;AAEL,MAAM,MAAM,8BAA8B,GAAG,aAAa,GAAG,aAAa,CAAC;AAE3E,MAAM,MAAM,aAAa,GAAG;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,aAAa,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5E,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,eAAe,CAAC"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { StateStore } from '@stream-io/state-store';
|
|
2
|
+
import type { Feed, FeedState } from '../feed';
|
|
3
|
+
import type { FeedsClient } from '../feeds-client';
|
|
4
|
+
import type { ActivityResponse } from '../gen/models';
|
|
5
|
+
import {
|
|
6
|
+
connectActivityToFeed,
|
|
7
|
+
disconnectActivityFromFeed,
|
|
8
|
+
isAnyFeedWatched,
|
|
9
|
+
} from '../feeds-client/active-activity';
|
|
10
|
+
import type { GetCommentsRequest } from '@self';
|
|
11
|
+
import { deepEqual } from '../utils/deep-equal';
|
|
12
|
+
|
|
13
|
+
type GetActivityConfig = {
|
|
14
|
+
comments?: Partial<
|
|
15
|
+
Omit<GetCommentsRequest, 'object_id' | 'object_type' | 'next'>
|
|
16
|
+
>;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export type ActivityState = { activity?: ActivityResponse } & Pick<
|
|
20
|
+
FeedState,
|
|
21
|
+
'comments_by_entity_id'
|
|
22
|
+
> & {
|
|
23
|
+
/**
|
|
24
|
+
* True when state is being fetched from API
|
|
25
|
+
*/
|
|
26
|
+
is_loading: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
last_get_request_config?: GetActivityConfig;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export class ActivityWithStateUpdates {
|
|
34
|
+
readonly state: StateStore<ActivityState>;
|
|
35
|
+
protected feed: Feed | undefined;
|
|
36
|
+
private unsubscribeFromFeedState?: () => void;
|
|
37
|
+
private inProgressGet?: {
|
|
38
|
+
request?: GetActivityConfig;
|
|
39
|
+
promise: Promise<ActivityResponse>;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
constructor(
|
|
43
|
+
public readonly id: string,
|
|
44
|
+
private readonly feedsClient: FeedsClient,
|
|
45
|
+
) {
|
|
46
|
+
this.state = new StateStore<ActivityState>({
|
|
47
|
+
activity: undefined,
|
|
48
|
+
comments_by_entity_id: {},
|
|
49
|
+
is_loading: false,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
get currentState() {
|
|
54
|
+
return this.state.getLatestValue();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
get feeds() {
|
|
58
|
+
return this.currentState.activity?.feeds ?? [];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Fetch activity and load it into state
|
|
63
|
+
* @param watch - Whether to watch the feed the activity belongs to for real-time updates
|
|
64
|
+
* @param feed - The feed to watch. Use only if the activity belongs to multiple feeds and you want to specify the feed explicitly.
|
|
65
|
+
* @param feedSelector - A function to select the feed from the activity response. Use only if the activity belongs to multiple feeds and you want to specify the feed explicitly.
|
|
66
|
+
*/
|
|
67
|
+
async get(request: GetActivityConfig = {}) {
|
|
68
|
+
if (this.inProgressGet && deepEqual(this.inProgressGet.request, request)) {
|
|
69
|
+
return this.inProgressGet.promise;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const { comments } = request;
|
|
73
|
+
|
|
74
|
+
this.state.partialNext({
|
|
75
|
+
is_loading: true,
|
|
76
|
+
last_get_request_config: request,
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
const getActivityRequest = this.feedsClient
|
|
80
|
+
.getActivity({
|
|
81
|
+
id: this.id,
|
|
82
|
+
})
|
|
83
|
+
.then((response) => response.activity);
|
|
84
|
+
this.inProgressGet = { request, promise: getActivityRequest };
|
|
85
|
+
const activityResponse = await getActivityRequest;
|
|
86
|
+
|
|
87
|
+
this.feedsClient.hydratePollCache([activityResponse]);
|
|
88
|
+
|
|
89
|
+
this.setFeed({
|
|
90
|
+
// We set feed to first containing feed
|
|
91
|
+
// But in WS event handler we match events by any of the containing feeds, so as long as any of the containing feeds are watched, we'll do a state update
|
|
92
|
+
// This is a bit hacky, proper solution would be to refactor all activity event handlers and detach them from feed instance
|
|
93
|
+
fid: activityResponse.feeds[0],
|
|
94
|
+
initialState: activityResponse,
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
if (this.feed) {
|
|
98
|
+
this.feed.activityAddedEventFilter = () => false;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (comments) {
|
|
102
|
+
await this.loadNextPageActivityComments(comments);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
this.subscribeToFeedState();
|
|
106
|
+
|
|
107
|
+
this.inProgressGet = undefined;
|
|
108
|
+
|
|
109
|
+
return activityResponse;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
loadNextPageActivityComments(
|
|
113
|
+
request?: Partial<
|
|
114
|
+
Omit<GetCommentsRequest, 'object_id' | 'object_type' | 'next'>
|
|
115
|
+
>,
|
|
116
|
+
) {
|
|
117
|
+
const activity = this.feed?.currentState.activities?.[0];
|
|
118
|
+
if (!activity || !this.feed) {
|
|
119
|
+
throw new Error('Initialize activity first');
|
|
120
|
+
}
|
|
121
|
+
if (!this.currentState.last_get_request_config?.comments) {
|
|
122
|
+
this.state.partialNext({
|
|
123
|
+
last_get_request_config: {
|
|
124
|
+
...this.currentState.last_get_request_config,
|
|
125
|
+
comments: request,
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
return this.feed.loadNextPageActivityComments(activity, request);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
loadNextPageCommentReplies(
|
|
133
|
+
...params: Parameters<Feed['loadNextPageCommentReplies']>
|
|
134
|
+
) {
|
|
135
|
+
if (!this.feed) {
|
|
136
|
+
throw new Error('Initialize activity first');
|
|
137
|
+
}
|
|
138
|
+
return this.feed.loadNextPageCommentReplies(...params);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
dispose() {
|
|
142
|
+
this.unsubscribeFromFeedState?.();
|
|
143
|
+
disconnectActivityFromFeed.call(this.feedsClient, this.id);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* @internal
|
|
148
|
+
*/
|
|
149
|
+
async synchronize() {
|
|
150
|
+
const allFids = this.currentState.activity?.feeds ?? [];
|
|
151
|
+
if (!isAnyFeedWatched.call(this.feedsClient, allFids)) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
this.inProgressGet = undefined;
|
|
155
|
+
return this.get(this.currentState.last_get_request_config);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
private setFeed({
|
|
159
|
+
fid,
|
|
160
|
+
initialState,
|
|
161
|
+
}: {
|
|
162
|
+
fid: string;
|
|
163
|
+
initialState: ActivityResponse;
|
|
164
|
+
}) {
|
|
165
|
+
this.feed = connectActivityToFeed.call(this.feedsClient, { fid });
|
|
166
|
+
|
|
167
|
+
this.feed.state.partialNext({
|
|
168
|
+
activities: [initialState],
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
private subscribeToFeedState() {
|
|
173
|
+
this.unsubscribeFromFeedState?.();
|
|
174
|
+
this.unsubscribeFromFeedState = this.feed?.state.subscribeWithSelector(
|
|
175
|
+
(state) => ({
|
|
176
|
+
activity: state.activities?.find((activity) => activity.id === this.id),
|
|
177
|
+
comments_by_entity_id: state.comments_by_entity_id,
|
|
178
|
+
}),
|
|
179
|
+
(state) => {
|
|
180
|
+
if (state.activity) {
|
|
181
|
+
this.state.partialNext({
|
|
182
|
+
activity: state.activity,
|
|
183
|
+
comments_by_entity_id: state.comments_by_entity_id,
|
|
184
|
+
is_loading: false,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
}
|