@stream-io/feeds-client 0.3.14 → 0.3.15
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 +1 -1
- package/dist/cjs/react-bindings.js +11 -5
- package/dist/cjs/react-bindings.js.map +1 -1
- package/dist/es/index.mjs +2 -2
- package/dist/es/react-bindings.mjs +11 -5
- package/dist/es/react-bindings.mjs.map +1 -1
- package/dist/{feeds-client-DoDAKYaV.mjs → feeds-client-B00fi-i4.mjs} +42 -9
- package/dist/feeds-client-B00fi-i4.mjs.map +1 -0
- package/dist/{feeds-client-YbhVg6cF.js → feeds-client-DTDDoiJL.js} +42 -9
- package/dist/feeds-client-DTDDoiJL.js.map +1 -0
- package/dist/types/bindings/react/hooks/useCreateFeedsClient.d.ts +3 -3
- package/dist/types/bindings/react/hooks/useCreateFeedsClient.d.ts.map +1 -1
- package/dist/types/common/ApiClient.d.ts.map +1 -1
- package/dist/types/common/ConnectionIdManager.d.ts +3 -3
- package/dist/types/common/ConnectionIdManager.d.ts.map +1 -1
- package/dist/types/common/TokenManager.d.ts +3 -3
- package/dist/types/common/TokenManager.d.ts.map +1 -1
- package/dist/types/feeds-client/feeds-client.d.ts +5 -1
- package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/bindings/react/hooks/useCreateFeedsClient.ts +23 -12
- package/src/common/ApiClient.ts +4 -2
- package/src/common/ConnectionIdManager.ts +9 -7
- package/src/common/TokenManager.ts +19 -3
- package/src/common/real-time/StableWSConnection.ts +1 -1
- package/src/feeds-client/feeds-client.ts +22 -1
- package/dist/feeds-client-DoDAKYaV.mjs.map +0 -1
- package/dist/feeds-client-YbhVg6cF.js.map +0 -1
|
@@ -2,10 +2,10 @@ import { FeedsClient, FeedsClientOptions, UserRequest, TokenOrProvider } from '.
|
|
|
2
2
|
/**
|
|
3
3
|
* A React hook to create, connect and return an instance of `FeedsClient`.
|
|
4
4
|
*/
|
|
5
|
-
export declare const useCreateFeedsClient: ({ apiKey, tokenOrProvider, userData, options, }: {
|
|
5
|
+
export declare const useCreateFeedsClient: ({ apiKey, tokenOrProvider, userData: userDataOrAnonymous, options, }: {
|
|
6
6
|
apiKey: string;
|
|
7
|
-
tokenOrProvider
|
|
8
|
-
userData: UserRequest;
|
|
7
|
+
tokenOrProvider?: TokenOrProvider;
|
|
8
|
+
userData: UserRequest | "anonymous";
|
|
9
9
|
options?: FeedsClientOptions;
|
|
10
10
|
}) => FeedsClient | null;
|
|
11
11
|
//# sourceMappingURL=useCreateFeedsClient.d.ts.map
|
|
@@ -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,
|
|
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,sEAKlC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,EAAE,WAAW,GAAG,WAAW,CAAC;IACpC,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B,uBAwDA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiClient.d.ts","sourceRoot":"","sources":["../../../src/common/ApiClient.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAInE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAKjE,KAAK,kBAAkB,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3D,CAAC,MAAM,CAAC,CAAC,CAAC;AAGX,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;IAC3C,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,gBAAgB,EAAE,kBAAkB,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE,CAAC,CAAC;AAEH,qBAAa,SAAS;aAQF,MAAM,EAAE,MAAM;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IATtC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,OAAO,CAAS;IACjB,sBAAsB,EAAE,sBAAsB,CAAM;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAGlD,MAAM,EAAE,MAAM,EACb,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,mBAAmB,EACzD,OAAO,CAAC,EAAE,kBAAkB;IAS9B,WAAW,GAAU,CAAC,EACpB,QAAQ,MAAM,EACd,KAAK,MAAM,EACX,aAAa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,cAAc,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,OAAO,GAAG,EACV,qBAAqB,MAAM,KAC1B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,QAAQ,EAAE,eAAe,CAAA;KAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"ApiClient.d.ts","sourceRoot":"","sources":["../../../src/common/ApiClient.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAInE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAKjE,KAAK,kBAAkB,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3D,CAAC,MAAM,CAAC,CAAC,CAAC;AAGX,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;IAC3C,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,gBAAgB,EAAE,kBAAkB,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE,CAAC,CAAC;AAEH,qBAAa,SAAS;aAQF,MAAM,EAAE,MAAM;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IATtC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,OAAO,CAAS;IACjB,sBAAsB,EAAE,sBAAsB,CAAM;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAGlD,MAAM,EAAE,MAAM,EACb,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,mBAAmB,EACzD,OAAO,CAAC,EAAE,kBAAkB;IAS9B,WAAW,GAAU,CAAC,EACpB,QAAQ,MAAM,EACd,KAAK,MAAM,EACX,aAAa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,cAAc,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,OAAO,GAAG,EACV,qBAAqB,MAAM,KAC1B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,QAAQ,EAAE,eAAe,CAAA;KAAE,CAAC,CAgHhD;IAEF,IAAI,gBAAgB,WAYnB;IAEM,0BAA0B;IA+BjC,OAAO,KAAK,aAAa,GAKxB;IAED,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAsBnC;IAEF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAWjC;CACH"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export declare class ConnectionIdManager {
|
|
2
|
-
loadConnectionIdPromise: Promise<string> | undefined;
|
|
2
|
+
loadConnectionIdPromise: Promise<string | undefined> | undefined;
|
|
3
3
|
connectionId?: string;
|
|
4
4
|
private resolve?;
|
|
5
5
|
private reject?;
|
|
6
6
|
reset: () => void;
|
|
7
7
|
resetConnectionIdPromise: () => void;
|
|
8
|
-
resolveConnectionidPromise: (connectionId
|
|
8
|
+
resolveConnectionidPromise: (connectionId?: string) => void;
|
|
9
9
|
rejectConnectionIdPromise: (reason: any) => void;
|
|
10
|
-
getConnectionId: () => string | Promise<string>;
|
|
10
|
+
getConnectionId: () => string | Promise<string | undefined>;
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=ConnectionIdManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionIdManager.d.ts","sourceRoot":"","sources":["../../../src/common/ConnectionIdManager.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAmB;IAC9B,uBAAuB,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ConnectionIdManager.d.ts","sourceRoot":"","sources":["../../../src/common/ConnectionIdManager.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAmB;IAC9B,uBAAuB,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,OAAO,CAAC,CAAkC;IAClD,OAAO,CAAC,MAAM,CAAC,CAAwB;IAEvC,KAAK,aAKH;IAEF,wBAAwB,aAQtB;IAEF,0BAA0B,GAAI,eAAe,MAAM,UAMjD;IAEF,yBAAyB,GAAI,QAAQ,GAAG,UAMtC;IAEF,eAAe,6CAYb;CACH"}
|
|
@@ -8,15 +8,15 @@ export declare class TokenManager {
|
|
|
8
8
|
type: 'static' | 'provider';
|
|
9
9
|
token?: string;
|
|
10
10
|
tokenProvider?: string | (() => Promise<string>);
|
|
11
|
+
private _isAnonymous;
|
|
11
12
|
private readonly logger;
|
|
12
13
|
constructor();
|
|
14
|
+
get isAnonymous(): boolean;
|
|
13
15
|
/**
|
|
14
16
|
* Set the static string token or token provider.
|
|
15
17
|
* Token provider should return a token string or a promise which resolves to string token.
|
|
16
18
|
*
|
|
17
|
-
* @param {TokenOrProvider} tokenOrProvider - the token or token provider.
|
|
18
|
-
* @param {UserResponse} user - the user object.
|
|
19
|
-
* @param {boolean} isAnonymous - whether the user is anonymous or not.
|
|
19
|
+
* @param {TokenOrProvider} tokenOrProvider - the token or token provider. Providing `undefined` will set the token manager to anonymous mode.
|
|
20
20
|
*/
|
|
21
21
|
setTokenOrProvider: (tokenOrProvider?: string | (() => Promise<string>)) => void;
|
|
22
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenManager.d.ts","sourceRoot":"","sources":["../../../src/common/TokenManager.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,qBAAa,YAAY;IACvB,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACzC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgD;;IAQvE
|
|
1
|
+
{"version":3,"file":"TokenManager.d.ts","sourceRoot":"","sources":["../../../src/common/TokenManager.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,qBAAa,YAAY;IACvB,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACzC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgD;;IAQvE,IAAI,WAAW,YAEd;IAED;;;;;OAKG;IACH,kBAAkB,GAAI,kBAAkB,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,UAiBtE;IAEF;;;OAGG;IACH,KAAK,aAKH;IAIF,SAAS,wBA0CP;IAGF,QAAQ,iCAkBN;IAEF,QAAQ,gBAAgC;CACzC"}
|
|
@@ -10,6 +10,7 @@ import { ThrottledGetBatchedOwnCapabilities } from '../utils/throttling';
|
|
|
10
10
|
import { ActivityWithStateUpdates } from '../activity-with-state-updates/activity-with-state-updates';
|
|
11
11
|
export type FeedsClientState = {
|
|
12
12
|
connected_user: ConnectedUser | undefined;
|
|
13
|
+
is_anonymous: boolean;
|
|
13
14
|
is_ws_connection_healthy: boolean;
|
|
14
15
|
own_capabilities_by_fid: Record<string, FeedResponse['own_capabilities']>;
|
|
15
16
|
};
|
|
@@ -36,7 +37,10 @@ export declare class FeedsClient extends FeedsApi {
|
|
|
36
37
|
pollFromState: (id: string) => StreamPoll | undefined;
|
|
37
38
|
hydratePollCache(activities: ActivityResponse[]): void;
|
|
38
39
|
hydrateCapabilitiesCache(feedResponses: Array<Pick<FeedResponse, 'feed' | 'own_capabilities'>>): void;
|
|
39
|
-
|
|
40
|
+
connectAnonymous: () => Promise<void>;
|
|
41
|
+
connectUser: (user: UserRequest | {
|
|
42
|
+
id: "!anon";
|
|
43
|
+
}, tokenProvider?: TokenOrProvider) => Promise<void>;
|
|
40
44
|
devToken: (userId: string) => string;
|
|
41
45
|
closePoll: (request: {
|
|
42
46
|
poll_id: string;
|
|
@@ -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,sBAAsB,EACtB,kBAAkB,EAClB,2BAA2B,EAC3B,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,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;AAGtG,MAAM,MAAM,gBAAgB,GAAG;IAC7B,cAAc,EAAE,aAAa,GAAG,SAAS,CAAC;IAC1C,wBAAwB,EAAE,OAAO,CAAC;IAClC,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC;CAC3E,CAAC;AAEF,KAAK,GAAG,GAAG,MAAM,CAAC;AAElB,KAAK,UAAU,GAAG,MAAM,CAAC;AAEzB,qBAAa,WAAY,SAAQ,QAAQ;IACvC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IAEtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,YAAY,CAAC,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG5B;IAEJ,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IAEtD,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAM;IAC9E,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAM;IAE9C,OAAO,CAAC,kCAAkC,CAAK;IAE/C,SAAS,CAAC,gCAAgC,EAAG,kCAAkC,CAAC;IAChF,OAAO,CAAC,kCAAkC,CAAc;IACxD,OAAO,CAAC,+CAA+C,CAAU;gBAErD,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB;
|
|
1
|
+
{"version":3,"file":"feeds-client.d.ts","sourceRoot":"","sources":["../../../src/feeds-client/feeds-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -12,14 +12,23 @@ import {
|
|
|
12
12
|
export const useCreateFeedsClient = ({
|
|
13
13
|
apiKey,
|
|
14
14
|
tokenOrProvider,
|
|
15
|
-
userData,
|
|
15
|
+
userData: userDataOrAnonymous,
|
|
16
16
|
options,
|
|
17
17
|
}: {
|
|
18
18
|
apiKey: string;
|
|
19
|
-
tokenOrProvider
|
|
20
|
-
userData: UserRequest;
|
|
19
|
+
tokenOrProvider?: TokenOrProvider;
|
|
20
|
+
userData: UserRequest | 'anonymous';
|
|
21
21
|
options?: FeedsClientOptions;
|
|
22
22
|
}) => {
|
|
23
|
+
const userData =
|
|
24
|
+
userDataOrAnonymous === 'anonymous' ? undefined : userDataOrAnonymous;
|
|
25
|
+
|
|
26
|
+
if (userDataOrAnonymous === 'anonymous' && !tokenOrProvider) {
|
|
27
|
+
throw new Error(
|
|
28
|
+
'Token provider can only be emitted when connecting anonymous user',
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
|
|
23
32
|
const [client, setClient] = useState<FeedsClient | null>(
|
|
24
33
|
() => new FeedsClient(apiKey, options),
|
|
25
34
|
);
|
|
@@ -32,21 +41,23 @@ export const useCreateFeedsClient = ({
|
|
|
32
41
|
throw error;
|
|
33
42
|
}
|
|
34
43
|
|
|
35
|
-
if (userData
|
|
44
|
+
if (userData?.id !== cachedUserData?.id) {
|
|
36
45
|
setCachedUserData(userData);
|
|
37
46
|
}
|
|
38
47
|
|
|
39
48
|
useEffect(() => {
|
|
40
49
|
const _client = new FeedsClient(apiKey, cachedOptions);
|
|
41
50
|
|
|
42
|
-
const connectionPromise =
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
const connectionPromise = cachedUserData
|
|
52
|
+
? _client
|
|
53
|
+
.connectUser(cachedUserData, tokenOrProvider)
|
|
54
|
+
.then(() => {
|
|
55
|
+
setError(null);
|
|
56
|
+
})
|
|
57
|
+
.catch((err) => {
|
|
58
|
+
setError(err);
|
|
59
|
+
})
|
|
60
|
+
: _client.connectAnonymous();
|
|
50
61
|
|
|
51
62
|
setClient(_client);
|
|
52
63
|
|
package/src/common/ApiClient.ts
CHANGED
|
@@ -66,7 +66,9 @@ export class ApiClient {
|
|
|
66
66
|
) {
|
|
67
67
|
this.logger.info('Getting connection_id for watch or presence request');
|
|
68
68
|
const connectionId = await this.connectionIdManager.getConnectionId();
|
|
69
|
-
|
|
69
|
+
if (connectionId) {
|
|
70
|
+
queryParams.connection_id = connectionId;
|
|
71
|
+
}
|
|
70
72
|
}
|
|
71
73
|
|
|
72
74
|
let requestUrl = url;
|
|
@@ -211,7 +213,7 @@ export class ApiClient {
|
|
|
211
213
|
|
|
212
214
|
private get commonHeaders(): Record<string, string> {
|
|
213
215
|
return {
|
|
214
|
-
'stream-auth-type': 'jwt',
|
|
216
|
+
'stream-auth-type': this.tokenManager.isAnonymous ? 'anonymous' : 'jwt',
|
|
215
217
|
'X-Stream-Client': this.generateStreamClientHeader(),
|
|
216
218
|
};
|
|
217
219
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export class ConnectionIdManager {
|
|
2
|
-
loadConnectionIdPromise: Promise<string> | undefined;
|
|
2
|
+
loadConnectionIdPromise: Promise<string | undefined> | undefined;
|
|
3
3
|
connectionId?: string;
|
|
4
|
-
private resolve?: (connectionId
|
|
4
|
+
private resolve?: (connectionId?: string) => void;
|
|
5
5
|
private reject?: (reason: any) => void;
|
|
6
6
|
|
|
7
7
|
reset = () => {
|
|
@@ -13,13 +13,15 @@ export class ConnectionIdManager {
|
|
|
13
13
|
|
|
14
14
|
resetConnectionIdPromise = () => {
|
|
15
15
|
this.connectionId = undefined;
|
|
16
|
-
this.loadConnectionIdPromise = new Promise<string>(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
this.loadConnectionIdPromise = new Promise<string | undefined>(
|
|
17
|
+
(resolve, reject) => {
|
|
18
|
+
this.resolve = resolve;
|
|
19
|
+
this.reject = reject;
|
|
20
|
+
},
|
|
21
|
+
);
|
|
20
22
|
};
|
|
21
23
|
|
|
22
|
-
resolveConnectionidPromise = (connectionId
|
|
24
|
+
resolveConnectionidPromise = (connectionId?: string) => {
|
|
23
25
|
this.connectionId = connectionId;
|
|
24
26
|
this.resolve?.(connectionId);
|
|
25
27
|
this.loadConnectionIdPromise = undefined;
|
|
@@ -11,6 +11,7 @@ export class TokenManager {
|
|
|
11
11
|
type: 'static' | 'provider';
|
|
12
12
|
token?: string;
|
|
13
13
|
tokenProvider?: string | (() => Promise<string>);
|
|
14
|
+
private _isAnonymous: boolean = false;
|
|
14
15
|
private readonly logger = feedsLoggerSystem.getLogger('token-manager');
|
|
15
16
|
|
|
16
17
|
constructor() {
|
|
@@ -19,15 +20,24 @@ export class TokenManager {
|
|
|
19
20
|
this.type = 'static';
|
|
20
21
|
}
|
|
21
22
|
|
|
23
|
+
get isAnonymous() {
|
|
24
|
+
return this._isAnonymous;
|
|
25
|
+
}
|
|
26
|
+
|
|
22
27
|
/**
|
|
23
28
|
* Set the static string token or token provider.
|
|
24
29
|
* Token provider should return a token string or a promise which resolves to string token.
|
|
25
30
|
*
|
|
26
|
-
* @param {TokenOrProvider} tokenOrProvider - the token or token provider.
|
|
27
|
-
* @param {UserResponse} user - the user object.
|
|
28
|
-
* @param {boolean} isAnonymous - whether the user is anonymous or not.
|
|
31
|
+
* @param {TokenOrProvider} tokenOrProvider - the token or token provider. Providing `undefined` will set the token manager to anonymous mode.
|
|
29
32
|
*/
|
|
30
33
|
setTokenOrProvider = (tokenOrProvider?: string | (() => Promise<string>)) => {
|
|
34
|
+
if (tokenOrProvider === undefined) {
|
|
35
|
+
this._isAnonymous = true;
|
|
36
|
+
tokenOrProvider = '';
|
|
37
|
+
} else {
|
|
38
|
+
this._isAnonymous = false;
|
|
39
|
+
}
|
|
40
|
+
|
|
31
41
|
if (isFunction(tokenOrProvider)) {
|
|
32
42
|
this.tokenProvider = tokenOrProvider;
|
|
33
43
|
this.type = 'provider';
|
|
@@ -44,7 +54,9 @@ export class TokenManager {
|
|
|
44
54
|
* Useful for client disconnection or switching user.
|
|
45
55
|
*/
|
|
46
56
|
reset = () => {
|
|
57
|
+
this._isAnonymous = false;
|
|
47
58
|
this.token = undefined;
|
|
59
|
+
this.tokenProvider = undefined;
|
|
48
60
|
this.loadTokenPromise = null;
|
|
49
61
|
};
|
|
50
62
|
|
|
@@ -96,6 +108,10 @@ export class TokenManager {
|
|
|
96
108
|
|
|
97
109
|
// Returns the current token, or fetches in a new one if there is no current token
|
|
98
110
|
getToken = () => {
|
|
111
|
+
if (this._isAnonymous) {
|
|
112
|
+
return '';
|
|
113
|
+
}
|
|
114
|
+
|
|
99
115
|
if (this.token) {
|
|
100
116
|
return this.token;
|
|
101
117
|
}
|
|
@@ -93,6 +93,7 @@ import { getFeed } from '../activity-with-state-updates/get-feed';
|
|
|
93
93
|
|
|
94
94
|
export type FeedsClientState = {
|
|
95
95
|
connected_user: ConnectedUser | undefined;
|
|
96
|
+
is_anonymous: boolean;
|
|
96
97
|
is_ws_connection_healthy: boolean;
|
|
97
98
|
own_capabilities_by_fid: Record<string, FeedResponse['own_capabilities']>;
|
|
98
99
|
};
|
|
@@ -136,6 +137,7 @@ export class FeedsClient extends FeedsApi {
|
|
|
136
137
|
super(apiClient);
|
|
137
138
|
this.state = new StateStore<FeedsClientState>({
|
|
138
139
|
connected_user: undefined,
|
|
140
|
+
is_anonymous: false,
|
|
139
141
|
is_ws_connection_healthy: false,
|
|
140
142
|
own_capabilities_by_fid: {},
|
|
141
143
|
});
|
|
@@ -391,7 +393,25 @@ export class FeedsClient extends FeedsApi {
|
|
|
391
393
|
this.state.partialNext({ own_capabilities_by_fid: ownCapabilitiesCache });
|
|
392
394
|
}
|
|
393
395
|
|
|
394
|
-
|
|
396
|
+
connectAnonymous = () => {
|
|
397
|
+
this.connectionIdManager.resolveConnectionidPromise();
|
|
398
|
+
this.tokenManager.setTokenOrProvider(undefined);
|
|
399
|
+
this.setGetBatchOwnCapabilitiesThrottlingInterval(
|
|
400
|
+
this.query_batch_own_capabilties_throttling_interval,
|
|
401
|
+
);
|
|
402
|
+
this.state.partialNext({
|
|
403
|
+
connected_user: undefined,
|
|
404
|
+
is_anonymous: true,
|
|
405
|
+
is_ws_connection_healthy: false,
|
|
406
|
+
});
|
|
407
|
+
|
|
408
|
+
return Promise.resolve();
|
|
409
|
+
};
|
|
410
|
+
|
|
411
|
+
connectUser = async (
|
|
412
|
+
user: UserRequest | { id: '!anon' },
|
|
413
|
+
tokenProvider?: TokenOrProvider,
|
|
414
|
+
) => {
|
|
395
415
|
if (
|
|
396
416
|
this.state.getLatestValue().connected_user !== undefined ||
|
|
397
417
|
this.wsConnection
|
|
@@ -631,6 +651,7 @@ export class FeedsClient extends FeedsApi {
|
|
|
631
651
|
await this.wsConnection?.disconnect();
|
|
632
652
|
this.wsConnection = undefined;
|
|
633
653
|
}
|
|
654
|
+
|
|
634
655
|
removeConnectionEventListeners(this.updateNetworkConnectionStatus);
|
|
635
656
|
|
|
636
657
|
this.connectionIdManager.reset();
|