@amityco/ts-sdk-react-native 7.8.3-e4f1111.0 → 7.8.3
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/.env +26 -26
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/@types/domains/client.d.ts +0 -2
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/@types/domains/client.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/@types/domains/client.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/createClient.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/createClient.js +1 -2
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/createClient.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/isConnected.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/isConnected.js +1 -5
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/isConnected.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/login.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/login.js +0 -6
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/login.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/logout.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/logout.js +2 -9
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/logout.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/resumeSession.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/resumeSession.js +0 -13
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/resumeSession.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/createClient.test.js +0 -4
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/createClient.test.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/login.test.js +1 -7
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/login.test.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/logout.test.js +0 -8
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/logout.test.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/resumeSession.test.js +1 -8
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/resumeSession.test.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/terminateClient.test.js +0 -3
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/terminateClient.test.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/utils/setClientToken.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/utils/setClientToken.js +0 -3
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/utils/setClientToken.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/events.d.ts +0 -11
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/events.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/events.js +0 -17
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/events.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/index.d.ts +0 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/index.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/index.js +0 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/index.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/utils/tests/client.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/utils/tests/client.js +1 -6
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/utils/tests/client.js.map +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/tsconfig.tsbuildinfo +1 -1
- package/dist/@types/domains/client.d.ts +0 -2
- package/dist/@types/domains/client.d.ts.map +1 -1
- package/dist/client/api/createClient.d.ts.map +1 -1
- package/dist/client/api/isConnected.d.ts.map +1 -1
- package/dist/client/api/login.d.ts.map +1 -1
- package/dist/client/api/logout.d.ts.map +1 -1
- package/dist/client/api/resumeSession.d.ts.map +1 -1
- package/dist/client/utils/setClientToken.d.ts.map +1 -1
- package/dist/core/events.d.ts +0 -11
- package/dist/core/events.d.ts.map +1 -1
- package/dist/core/transports/index.d.ts +0 -1
- package/dist/core/transports/index.d.ts.map +1 -1
- package/dist/index.cjs.js +6 -90
- package/dist/index.esm.js +6 -89
- package/dist/index.umd.js +3 -3
- package/dist/utils/tests/client.d.ts.map +1 -1
- package/package.json +1 -3
- package/src/@types/domains/client.ts +0 -1
- package/src/client/api/createClient.ts +0 -1
- package/src/client/api/isConnected.ts +1 -8
- package/src/client/api/login.ts +0 -6
- package/src/client/api/logout.ts +1 -8
- package/src/client/api/resumeSession.ts +0 -12
- package/src/client/api/tests/createClient.test.ts +0 -6
- package/src/client/api/tests/login.test.ts +42 -51
- package/src/client/api/tests/logout.test.ts +1 -12
- package/src/client/api/tests/resumeSession.test.ts +102 -111
- package/src/client/api/tests/terminateClient.test.ts +0 -6
- package/src/client/utils/setClientToken.ts +0 -3
- package/src/core/events.ts +0 -18
- package/src/core/transports/index.ts +0 -1
- package/src/utils/tests/client.ts +1 -7
- package/tsconfig.tsbuildinfo +1 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/ws.d.ts +0 -27
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/ws.d.ts.map +0 -1
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/ws.js +0 -53
- package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/ws.js.map +0 -1
- package/dist/core/transports/ws.d.ts +0 -27
- package/dist/core/transports/ws.d.ts.map +0 -1
- package/src/core/transports/ws.ts +0 -60
package/.env
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
LIVE_STREAM_KEY='-----BEGIN PRIVATE KEY-----
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
/
|
|
20
|
-
+
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
2
|
+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDHo80SecH7FuF2
|
|
3
|
+
hFYnb+l26/VN8UMLXAQFLnxciNTEwkGVFMpdezlH8rU2HtUJL4RETogbAOLVY0XM
|
|
4
|
+
js6sPn8G1nALmh9qeDpUtVqFOVtBHxEZ910TLOtQiunjqJKO5nWdqZ71EC3OFluR
|
|
5
|
+
iGQkO84BiIFbv37ub7xl3S8XarbtKoLcyVpkDHi+1wx1pgCAn6gtBUgckPL5NR8j
|
|
6
|
+
Lseabl3HAXQfhTCKo4tmOFM2Dxwl1IUMmIJrJg/aIU/U0tj/1Eoo7mG0JcNWX19l
|
|
7
|
+
W3EecCbi0ncCJOrkUdwlBrcjaMayaX/ubEwyUeTGiLdyc4L3GRLHjyK8xgVNXRMH
|
|
8
|
+
bZWJ2a5NAgMBAAECggEASxuE+35zTFO/XydKgmvIGcWL9FbgMlXb7Vcf0nBoG945
|
|
9
|
+
biz0NVc2paraIhJXc608xbYF3qLmtAE1MVBI0ORyRdBHNxY024l/6H6SH60Ed+uI
|
|
10
|
+
M4ysp5ourY6Vj+DLwpdRiI9YDjqYAQDIUmhNxJP7XPhOMoZI6st+xZQBM34ic/bv
|
|
11
|
+
AMSJm9OZphSp3+qXVkFZztr2mxD2EZSJJLYxi8BCdgM2qhazalbcJ6zDKHCZWVWm
|
|
12
|
+
8RRxDGldyMb/237JxETzP40tAlzOZDmBAbUgEnurDJ93RVDIE3rbZUshwgeQd18a
|
|
13
|
+
em096mWgvB1AIKYgsTAR3pw+V19YWAjq/glP6fz8wQKBgQD/oQq+ukKF0PRgBeM5
|
|
14
|
+
geTjSwsdGppQLmf5ndujvoiz/TpdjDEPu6R8kigQr1rG2t4K/yfdZoI8RdmJD1al
|
|
15
|
+
3Q7N9hofooSy4rj6E3txzWZCHJjHad2cnCp/O26HiReGAl7wTcfTmNdiFHhZQzm5
|
|
16
|
+
JBkvWAiwuvQMNfEbnXxw6/vIDwKBgQDH7fX8gsc77JLvAWgp1MaQN/sbqVb6JeT1
|
|
17
|
+
FQfR8E/WFCSmzQBtNzd5KgYuCeelwr/8DyYytvN2BzCYZXp73gI1jF3YlW5jVn74
|
|
18
|
+
OY6TwQ095digwo6Z0yuxopdIOApKgAkL9PRKgNrqAf3NAyMua6lOGifzjDojC3KU
|
|
19
|
+
fylQmxMn4wKBgHp2B9O/H0dEBw5JQ8W0+JX6yWQz7mEjGiR2/1W+XXb8hQ1zr709
|
|
20
|
+
w1r6Gb+EghRpnZ3fBpYGGbYOMFx8wKHM+N6qW3F0ReX8v2juFGE8aRSa5oYBrWzt
|
|
21
|
+
U16Idjbv8hj84cZ1PJmdyvDtpYn9rpWHOZl4rxEbPvbqkIsOMyNVqdT5AoGAOSge
|
|
22
|
+
mwIIU2le2FVeohbibXiToWTYKMuMmURZ5/r72AgKMmWJKbAPe+Q3wBG01/7FRBpQ
|
|
23
|
+
oU8Ma0HC8s6QJbliiEyIx9JwrJWd1vkdecBHONrtA4ibm/5zD2WcOllLF+FitLhi
|
|
24
|
+
3qnX6+6F0IaFGFBPJrTzlv0P4dTz/OAdv52V7GECgYEA2TttOKBAqWllgOaZOkql
|
|
25
|
+
LVMJVmgR7s6tLi1+cEP8ZcapV9aRbRzTAKXm4f8AEhtlG9F9kCOvHYCYGi6JaiWJ
|
|
26
|
+
ZkHjeex3T+eE6Di6y5Bm/Ift5jtVhJ4jCVwHOKTMej79NPUFTJfv8hCo29haBDv6
|
|
27
|
+
RXFrv+T21KCcw8k3sJeJWWQ=
|
|
28
28
|
-----END PRIVATE KEY-----'
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="socket.io-client" />
|
|
2
1
|
import { AxiosInstance } from 'axios';
|
|
3
2
|
import { Emitter } from 'mitt';
|
|
4
3
|
export declare const enum MembershipAcceptanceTypeEnum {
|
|
@@ -35,7 +34,6 @@ declare global {
|
|
|
35
34
|
http: AxiosInstance;
|
|
36
35
|
upload: AxiosInstance;
|
|
37
36
|
mqtt?: Amity.MqttClient;
|
|
38
|
-
ws?: SocketIOClient.Socket;
|
|
39
37
|
emitter: Emitter<Amity.Events>;
|
|
40
38
|
hasPermission: (permission: string) => Amity.PermissionChecker;
|
|
41
39
|
validateUrls: (urls: string[]) => Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/@types/domains/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/@types/domains/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/@types/domains/client.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAkB,4BAGjB;AAHD,WAAkB,4BAA4B;IAC5C,uDAAuB,CAAA;IACvB,yDAAyB,CAAA;AAC3B,CAAC,EAHiB,4BAA4B,KAA5B,4BAA4B,QAG7C","sourcesContent":["import { AxiosInstance } from 'axios';\nimport { Emitter } from 'mitt';\n\nexport const enum MembershipAcceptanceTypeEnum {\n AUTOMATIC = 'automatic',\n INVITATION = 'invitation',\n}\n\ndeclare global {\n namespace Amity {\n type Logger = (topic: string, ...args: any[]) => void;\n\n type MembershipAcceptanceType = MembershipAcceptanceTypeEnum;\n\n const enum TokenTerminationReason {\n GLOBAL_BAN = 'globalBan',\n USER_DELETED = 'userDeleted',\n UNAUTHORIZED = 'unauthorized',\n }\n\n const enum SessionStates {\n NOT_LOGGED_IN = 'notLoggedIn',\n\n ESTABLISHING = 'establishing',\n ESTABLISHED = 'established',\n\n TOKEN_EXPIRED = 'tokenExpired',\n /*\n * Terminated is slightly different from NOT_LOGGED_IN:\n *\n * After established, upon receiving the termination code, the SDK will move to terminated.\n * Unlike tokenExpired that users can regain SDK usability by giving an auth token.\n * This state represents unrecoverable failures. The app must manually re-login with a valid user.\n *\n * For more details, please check tech spec:\n * https://ekoapp.atlassian.net/wiki/spaces/UP/pages/2082537485/ASC+Core+-+Session+Management+3.0#terminated\n */\n TERMINATED = 'terminated',\n }\n\n const enum RTEConnectionStateEnum {\n CONNECTING = 'connecting', // actively establishing a connection (initial or reconnection)\n CONNECTED = 'connected', // connected to broker\n RECONNECTING = 'reconnecting', // lost connection and attempting to reconnect\n DISCONNECTED = 'disconnected', // disconnected (not currently connected, and not automatically reconnecting)\n DISCONNECTING = 'disconnecting', // disconnected (not currently connected, and not automatically reconnecting)\n }\n\n type RTEConnectionState = `${Amity.RTEConnectionStateEnum}`;\n\n type Client = {\n version: string;\n\n log: Logger;\n http: AxiosInstance;\n upload: AxiosInstance;\n mqtt?: Amity.MqttClient;\n
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/@types/domains/client.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAkB,4BAGjB;AAHD,WAAkB,4BAA4B;IAC5C,uDAAuB,CAAA;IACvB,yDAAyB,CAAA;AAC3B,CAAC,EAHiB,4BAA4B,KAA5B,4BAA4B,QAG7C","sourcesContent":["import { AxiosInstance } from 'axios';\nimport { Emitter } from 'mitt';\n\nexport const enum MembershipAcceptanceTypeEnum {\n AUTOMATIC = 'automatic',\n INVITATION = 'invitation',\n}\n\ndeclare global {\n namespace Amity {\n type Logger = (topic: string, ...args: any[]) => void;\n\n type MembershipAcceptanceType = MembershipAcceptanceTypeEnum;\n\n const enum TokenTerminationReason {\n GLOBAL_BAN = 'globalBan',\n USER_DELETED = 'userDeleted',\n UNAUTHORIZED = 'unauthorized',\n }\n\n const enum SessionStates {\n NOT_LOGGED_IN = 'notLoggedIn',\n\n ESTABLISHING = 'establishing',\n ESTABLISHED = 'established',\n\n TOKEN_EXPIRED = 'tokenExpired',\n /*\n * Terminated is slightly different from NOT_LOGGED_IN:\n *\n * After established, upon receiving the termination code, the SDK will move to terminated.\n * Unlike tokenExpired that users can regain SDK usability by giving an auth token.\n * This state represents unrecoverable failures. The app must manually re-login with a valid user.\n *\n * For more details, please check tech spec:\n * https://ekoapp.atlassian.net/wiki/spaces/UP/pages/2082537485/ASC+Core+-+Session+Management+3.0#terminated\n */\n TERMINATED = 'terminated',\n }\n\n const enum RTEConnectionStateEnum {\n CONNECTING = 'connecting', // actively establishing a connection (initial or reconnection)\n CONNECTED = 'connected', // connected to broker\n RECONNECTING = 'reconnecting', // lost connection and attempting to reconnect\n DISCONNECTED = 'disconnected', // disconnected (not currently connected, and not automatically reconnecting)\n DISCONNECTING = 'disconnecting', // disconnected (not currently connected, and not automatically reconnecting)\n }\n\n type RTEConnectionState = `${Amity.RTEConnectionStateEnum}`;\n\n type Client = {\n version: string;\n\n log: Logger;\n http: AxiosInstance;\n upload: AxiosInstance;\n mqtt?: Amity.MqttClient;\n emitter: Emitter<Amity.Events>;\n\n hasPermission: (permission: string) => Amity.PermissionChecker;\n validateUrls: (urls: string[]) => Promise<boolean>;\n validateTexts: (texts: string[]) => Promise<boolean>;\n\n sessionState: Amity.SessionStates;\n sessionHandler?: Amity.SessionHandler;\n\n cache?: Amity.Cache;\n\n apiKey?: string;\n userId?: string;\n\n token?: Amity.Tokens;\n\n isUnreadCountEnabled: boolean;\n\n useLegacyUnreadCount: boolean;\n\n use: () => void;\n\n accessTokenExpiryWatcher: (sessionHandler: Amity.SessionHandler) => Amity.Unsubscriber;\n\n onRTEConnectionStateChange: (\n callback: (state: Amity.RTEConnectionState) => void,\n ) => (() => void) | undefined;\n\n getFeedSettings: () => Promise<Amity.FeedSettings>;\n getSocialSettings: () => Promise<Amity.SocialSettings>;\n getMessagePreviewSetting: (refresh?: boolean) => Promise<Amity.MessagePreviewSetting>;\n\n getMarkerSyncConsistentMode: () => boolean;\n\n prefixDeviceIdKey?: string;\n };\n\n type Device = {\n deviceId: string;\n deviceInfo: {\n kind: 'node' | 'web';\n model?: string;\n sdkVersion: string;\n };\n };\n\n type Tokens = {\n accessToken: string;\n // issuedAt, expiresAt is in iso Date format\n issuedAt: string;\n expiresAt: string;\n };\n\n type AccessTokenRenewal = {\n renew: () => void;\n renewWithAuthToken: (authToken: string) => void;\n unableToRetrieveAuthToken: () => void;\n };\n\n interface SessionHandler {\n sessionWillRenewAccessToken(renewal: AccessTokenRenewal): void;\n }\n\n type ChatSettings = {\n enabled: boolean;\n mention: {\n isAllowMentionedChannelEnabled: boolean;\n };\n messagePreview: {\n enabled: boolean;\n isIncludeDeleted: boolean;\n };\n };\n\n type ShareableLinkConfiguration = {\n domain: string;\n patterns: Record<string, string>;\n };\n\n type FeedSettings = {\n [name in Amity.ContentFeedType]?: Amity.ContentSetting[];\n };\n\n type SocialSettings = {\n enabled: boolean;\n isAllowEditPostWhenReviewingEnabled: boolean;\n isFollowWithRequestEnabled: boolean;\n globalFeed: {\n showCommunityPost: boolean;\n showEveryonePost: boolean;\n showFollowingPost: boolean;\n showMyPost: boolean;\n showOnlyMyFeed: boolean;\n };\n story: {\n allowAllUserToCreateStory: boolean;\n expiryTimeMinutes: number;\n };\n userPrivacySetting: 'public' | 'private';\n membershipAcceptance: Amity.MembershipAcceptanceType;\n };\n\n type ConnectClientParams = {\n userId: Amity.InternalUser['userId'];\n displayName?: Amity.InternalUser['displayName'];\n authToken?: string;\n deviceId?: Amity.Device['deviceId'];\n };\n\n type ConnectClientConfig = {\n disableRTE: boolean;\n };\n\n type ActiveUser = Pick<Amity.InternalUser, '_id' | 'userId' | 'path' | 'displayName'>;\n\n type UserUnread = Pick<Amity.UserMarker, 'unreadCount'> & {\n isMentioned: boolean;\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createClient.d.ts","sourceRoot":"","sources":["../../../src/client/api/createClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAc,MAAM,0BAA0B,CAAC;AAuBnE;;;;;;;;;;;;;;;KAeK;AACL,eAAO,MAAM,YAAY,WACf,MAAM,cACH,CAAA,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;;;;;;;;;MAYtD,MAAM,
|
|
1
|
+
{"version":3,"file":"createClient.d.ts","sourceRoot":"","sources":["../../../src/client/api/createClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAc,MAAM,0BAA0B,CAAC;AAuBnE;;;;;;;;;;;;;;;KAeK;AACL,eAAO,MAAM,YAAY,WACf,MAAM,cACH,CAAA,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;;;;;;;;;MAYtD,MAAM,MA+FR,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VERSION } from '~/version';
|
|
2
2
|
import { createLogger } from '~/core/debug';
|
|
3
3
|
import { API_REGIONS, computeUrl } from '~/client/utils/endpoints';
|
|
4
|
-
import { createHttpTransport, createMqttTransport,
|
|
4
|
+
import { createHttpTransport, createMqttTransport, } from '~/core/transports';
|
|
5
5
|
import { createEventEmitter } from '~/core/events';
|
|
6
6
|
import { getMessagePreviewSetting } from '~/client/utils/messagePreviewEngine';
|
|
7
7
|
import { getSocialSettings } from '~/client/api/getSocialSettings';
|
|
@@ -45,7 +45,6 @@ export const createClient = (apiKey, apiRegion = API_REGIONS.SG, { debugSession
|
|
|
45
45
|
let ws;
|
|
46
46
|
let mqtt;
|
|
47
47
|
if (rteEnabled) {
|
|
48
|
-
ws = createWebsocketTransport(httpEndpoint);
|
|
49
48
|
mqtt = createMqttTransport(mqttEndpoint);
|
|
50
49
|
}
|
|
51
50
|
const emitter = createEventEmitter();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createClient.js","sourceRoot":"","sources":["../../../src/client/api/createClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"createClient.js","sourceRoot":"","sources":["../../../src/client/api/createClient.ts"],"names":[],"mappings":"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","sourcesContent":["import { VERSION } from '~/version';\n\nimport { createLogger } from '~/core/debug';\n\nimport { API_REGIONS, computeUrl } from '~/client/utils/endpoints';\nimport {\n createHttpTransport,\n createMqttTransport,\n createWebsocketTransport,\n} from '~/core/transports';\n\nimport { createEventEmitter } from '~/core/events';\n\nimport { getMessagePreviewSetting } from '~/client/utils/messagePreviewEngine';\nimport { getSocialSettings } from '~/client/api/getSocialSettings';\nimport { hasPermission } from '~/client/utils/hasPermission';\nimport { validateUrls } from './validateUrls';\nimport { validateTexts } from './validateTexts';\nimport { getActiveClient, setActiveClient } from './activeClient';\nimport { getFeedSettings } from './getFeedSettings';\n\nimport { accessTokenExpiryWatcher } from './accessTokenExpiryWatcher';\nimport { getMarkerSyncConsistentMode } from '../utils/markerSyncEngine';\nimport { onRTEConnectionStateChange } from './onRTEConnectionStateChange';\n\nconst DEFAULT_DEBUG_SESSION = 'amity';\n\n/**\n * ```js\n * import { createClient } from '@amityco/ts-sdk-react-native'\n * const client = createClient(apiKey, 'https://asc.server/', 'myClient')\n * ```\n *\n * Creates a new {@link Amity.Client} instance\n *\n * @param apiKey for the {@link Amity.Client} instance\n * @param apiRegion endpoint to connect to\n * @param apiEndpoint custom endpoint in case you don't want to use a preset endpoint\n * @param param.debugSession session's identifier for the client's logger instance\n * @returns A {@link Amity.Client} instance\n *\n * @category Client API\n * */\nexport const createClient = (\n apiKey: string,\n apiRegion: typeof API_REGIONS[keyof typeof API_REGIONS] = API_REGIONS.SG,\n {\n debugSession = DEFAULT_DEBUG_SESSION,\n apiEndpoint,\n prefixDeviceIdKey,\n rteEnabled = true,\n }: {\n debugSession?: string;\n apiEndpoint?: { http?: string; mqtt?: string; upload?: string };\n prefixDeviceIdKey?: string;\n rteEnabled?: boolean;\n } = {},\n): Amity.Client => {\n const log = createLogger(debugSession);\n\n log('client/api/createClient', {\n apiKey: apiKey.replace(/.{5}$/g, 'xxxxx'),\n apiRegion,\n });\n\n const httpEndpoint = apiEndpoint?.http ?? computeUrl('http', apiRegion);\n const uploadEndpoint = apiEndpoint?.upload ?? computeUrl('upload', apiRegion);\n const mqttEndpoint = apiEndpoint?.mqtt ?? computeUrl('mqtt', apiRegion);\n\n const http = createHttpTransport(httpEndpoint);\n const upload = createHttpTransport(uploadEndpoint);\n\n let ws;\n let mqtt;\n\n if (rteEnabled) {\n mqtt = createMqttTransport(mqttEndpoint);\n }\n\n const emitter = createEventEmitter();\n\n /*\n * Since v6 cache is enabled by default\n */\n const cache = { data: {} };\n\n const sessionState = Amity.SessionStates.NOT_LOGGED_IN;\n const sessionHandler = undefined;\n\n const isUnreadCountEnabled = false;\n // Legacy unread count is true by default\n const useLegacyUnreadCount = true;\n\n const client = {\n version: `${VERSION}`,\n apiKey,\n\n /*\n * SDK Components\n */\n log,\n cache,\n\n /*\n * Network components\n */\n http,\n ws,\n mqtt,\n upload,\n emitter,\n\n /*\n * Session Components\n */\n sessionState,\n accessTokenExpiryWatcher,\n sessionHandler,\n\n hasPermission,\n validateUrls,\n validateTexts,\n getFeedSettings,\n getSocialSettings,\n getMessagePreviewSetting,\n\n onRTEConnectionStateChange,\n\n use: () => setActiveClient(client),\n\n isUnreadCountEnabled,\n useLegacyUnreadCount,\n\n getMarkerSyncConsistentMode,\n\n /**\n * Prefix for the deviceId key in the local storage or async storage.\n * This is allow user to have multiple SDK client and Mqtt client within the same app.\n */\n prefixDeviceIdKey,\n };\n\n try {\n const activeClient = getActiveClient();\n if (activeClient.apiKey === apiKey) return activeClient;\n\n setActiveClient(client);\n } catch {\n setActiveClient(client);\n }\n\n return client;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isConnected.d.ts","sourceRoot":"","sources":["../../../src/client/api/isConnected.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,QAAO,
|
|
1
|
+
{"version":3,"file":"isConnected.d.ts","sourceRoot":"","sources":["../../../src/client/api/isConnected.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,QAAO,OAK9B,CAAC"}
|
|
@@ -15,10 +15,6 @@ export const isConnected = () => {
|
|
|
15
15
|
var _a, _b;
|
|
16
16
|
const client = getActiveClient();
|
|
17
17
|
client.log('client/api/isConnected', client);
|
|
18
|
-
|
|
19
|
-
const isWsConnected = (client.ws && client.ws.connected) || !!client.ws;
|
|
20
|
-
return !!(client.userId &&
|
|
21
|
-
((_b = String((_a = client.http.defaults.headers.common) === null || _a === void 0 ? void 0 : _a.Authorization)) === null || _b === void 0 ? void 0 : _b.length) &&
|
|
22
|
-
isWsConnected);
|
|
18
|
+
return !!(client.userId && ((_b = String((_a = client.http.defaults.headers.common) === null || _a === void 0 ? void 0 : _a.Authorization)) === null || _b === void 0 ? void 0 : _b.length));
|
|
23
19
|
};
|
|
24
20
|
//# sourceMappingURL=isConnected.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isConnected.js","sourceRoot":"","sources":["../../../src/client/api/isConnected.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAY,EAAE;;IACvC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;IAE7C,
|
|
1
|
+
{"version":3,"file":"isConnected.js","sourceRoot":"","sources":["../../../src/client/api/isConnected.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAY,EAAE;;IACvC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;IAE7C,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAI,MAAA,MAAM,CAAC,MAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,0CAAE,aAAa,CAAC,0CAAE,MAAM,CAAA,CAAC,CAAC;AACjG,CAAC,CAAC","sourcesContent":["import { getActiveClient } from './activeClient';\n\n/**\n * ```js\n * import { isConnected } from '@amityco/ts-sdk-react-native'\n * const connected = isConnected()\n * ```\n *\n * Checks if a {@link Amity.Client} instance is connected to ASC servers\n *\n * @returns a success boolean if connected\n *\n * @category Client API\n */\nexport const isConnected = (): boolean => {\n const client = getActiveClient();\n client.log('client/api/isConnected', client);\n\n return !!(client.userId && String(client.http.defaults.headers.common?.Authorization)?.length);\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/client/api/login.ts"],"names":[],"mappings":"AA8CA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,KAAK,WACR,MAAM,mBAAmB,kBACjB,MAAM,cAAc,WAC3B,MAAM,mBAAmB,KACjC,QAAQ,OAAO,
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/client/api/login.ts"],"names":[],"mappings":"AA8CA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,KAAK,WACR,MAAM,mBAAmB,kBACjB,MAAM,cAAc,WAC3B,MAAM,mBAAmB,KACjC,QAAQ,OAAO,CAyIjB,CAAC"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { modifyMqttConnection } from '~/client/utils/modifyMqttConnection';
|
|
3
3
|
/* eslint-disable require-atomic-updates */
|
|
4
4
|
import { getDeviceId } from '~/core/device';
|
|
5
|
-
import { proxyWebsocketEvents } from '~/core/events';
|
|
6
5
|
import { onChannelDeleted } from '~/channelRepository/events/onChannelDeleted';
|
|
7
6
|
import { onChannelMemberBanned } from '~/channelRepository/events/onChannelMemberBanned';
|
|
8
7
|
import { markReadEngineOnLoginHandler } from '~/subChannelRepository/utils/markReadEngine';
|
|
@@ -57,7 +56,6 @@ async function runMqtt() {
|
|
|
57
56
|
* @async
|
|
58
57
|
*/
|
|
59
58
|
export const login = async (params, sessionHandler, config) => {
|
|
60
|
-
var _a;
|
|
61
59
|
const client = getActiveClient();
|
|
62
60
|
let unsubWatcher;
|
|
63
61
|
client.log('client/api/connectClient', Object.assign({ apiKey: client.apiKey, sessionState: client.sessionState }, params));
|
|
@@ -89,10 +87,6 @@ export const login = async (params, sessionHandler, config) => {
|
|
|
89
87
|
terminateClient("globalBan" /* Amity.TokenTerminationReason.GLOBAL_BAN */);
|
|
90
88
|
return false;
|
|
91
89
|
}
|
|
92
|
-
// FIXME: events are duplicated if connectClient is called few times without disconnectClient
|
|
93
|
-
// wire websocket events to our event emitter
|
|
94
|
-
proxyWebsocketEvents(client.ws, client.emitter);
|
|
95
|
-
(_a = client.ws) === null || _a === void 0 ? void 0 : _a.open();
|
|
96
90
|
client.userId = user.userId;
|
|
97
91
|
client.sessionHandler = sessionHandler;
|
|
98
92
|
/*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/client/api/login.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-param-reassign */\nimport { modifyMqttConnection } from '~/client/utils/modifyMqttConnection';\n/* eslint-disable require-atomic-updates */\nimport { getDeviceId } from '~/core/device';\nimport { proxyWebsocketEvents } from '~/core/events';\nimport { onChannelDeleted } from '~/channelRepository/events/onChannelDeleted';\nimport { onChannelMemberBanned } from '~/channelRepository/events/onChannelMemberBanned';\n\nimport { markReadEngineOnLoginHandler } from '~/subChannelRepository/utils/markReadEngine';\nimport { onUserDeleted } from '~/userRepository/events/onUserDeleted';\n\nimport analyticsEngineOnLoginHandler from '~/analytic/utils/analyticsEngineOnLoginHandler';\nimport readReceiptSyncEngineOnLoginHandler from '~/client/utils/ReadReceiptSync/readReceiptSyncEngineOnLoginHandler';\nimport legacyReadReceiptSyncEngineOnLoginHandler from '~/client/utils/ReadReceiptSync/legacyReadReceiptSyncEngineOnLoginHandler';\nimport objectResolverEngineOnLoginHandler from '~/client/utils/ObjectResolver/objectResolverEngineOnLoginHandler';\nimport reactionSyncEngineOnLoginHandler from '~/liveReactionRepository/utils/ReactionSyncEngineOnLoginHandler';\nimport { logout } from './logout';\n\nimport { getActiveClient } from './activeClient';\nimport { terminateClient } from './terminateClient';\nimport { setActiveUser } from './activeUser';\n\nimport { onClientBanned } from '../events';\nimport { onTokenExpired } from '../events/onTokenExpired';\nimport { onTokenTerminated } from '../events/onTokenTerminated';\n\nimport { setClientToken } from '../utils/setClientToken';\nimport { removeChannelMarkerCache } from '../utils/removeChannelMarkerCache';\nimport { initializeMessagePreviewSetting } from '../utils/messagePreviewEngine';\nimport { ASCError } from '~/core/errors';\nimport SessionWatcher from '../utils/SessionWatcher';\n\n/*\n * declared earlier to accomodate case when logging in with a different user\n * than the one already connected, in which case the existing subscriptions need\n * to be cleared\n */\nlet subscriptions: Amity.Unsubscriber[] = [];\n\nasync function runMqtt() {\n await modifyMqttConnection();\n}\n\n/* begin_public_function\n id: client.login\n*/\n/**\n * ```js\n * import { login } from '@amityco/ts-sdk-react-native/client/api'\n * const success = await login({\n * userId: 'XYZ123456789',\n * })\n * ```\n *\n * Connects an {@link Amity.Client} instance to ASC servers\n *\n * @param params the connect parameters\n * @param params.userId the user ID for the current session\n * @param params.displayName the user's displayName for the current session\n * @param params.deviceId Manual override of the user's device id (for device management)\n * @param params.authToken The authentication token - necessary when network option is set to secure\n * @returns a success boolean if connected\n *\n * @category Client API\n * @async\n */\nexport const login = async (\n params: Amity.ConnectClientParams,\n sessionHandler: Amity.SessionHandler,\n config?: Amity.ConnectClientConfig,\n): Promise<boolean> => {\n const client = getActiveClient();\n let unsubWatcher: Amity.Unsubscriber;\n\n client.log('client/api/connectClient', {\n apiKey: client.apiKey,\n sessionState: client.sessionState,\n ...params,\n });\n\n // if connecting to a different userId than the one that is connected currently\n if (client.userId && client.userId !== params.userId) {\n await logout();\n\n // Remove subscription to ban and delete\n subscriptions.forEach(fn => fn());\n subscriptions = [];\n }\n\n // default values\n const defaultDeviceId = await getDeviceId();\n\n try {\n const { users } = await setClientToken({\n params: {\n ...params,\n displayName: params?.displayName,\n deviceId: params?.deviceId || defaultDeviceId,\n },\n options: {\n setAccessTokenCookie: true,\n },\n });\n\n const user = users.find(u => u.userId === params.userId);\n\n if (user == null) {\n throw new ASCError(\n `${params.userId} has not been founded`,\n Amity.ClientError.UNKNOWN_ERROR,\n Amity.ErrorLevel.ERROR,\n );\n }\n\n if (user.isDeleted) {\n terminateClient(Amity.TokenTerminationReason.USER_DELETED);\n return false;\n }\n\n if (user.isGlobalBanned) {\n terminateClient(Amity.TokenTerminationReason.GLOBAL_BAN);\n return false;\n }\n\n // FIXME: events are duplicated if connectClient is called few times without disconnectClient\n // wire websocket events to our event emitter\n proxyWebsocketEvents(client.ws, client.emitter);\n\n client.ws?.open();\n\n client.userId = user.userId;\n\n client.sessionHandler = sessionHandler;\n\n /*\n * Cannot push to subscriptions as watcher needs to continue working even if\n * token expires\n */\n unsubWatcher = client.accessTokenExpiryWatcher(sessionHandler);\n\n setActiveUser(user);\n } catch (error) {\n /*\n * if getting token failed session state reverts to initial state when app\n * is first launched\n */\n SessionWatcher.getInstance().setSessionState(Amity.SessionStates.NOT_LOGGED_IN);\n\n // pass error down tree so the calling function handle it\n throw error;\n }\n\n if (config?.disableRTE !== true) {\n runMqtt();\n }\n\n await initializeMessagePreviewSetting();\n\n if (subscriptions.length === 0) {\n subscriptions.push(\n // GLOBAL_BAN\n onClientBanned((_: Amity.UserPayload) => {\n terminateClient(Amity.TokenTerminationReason.GLOBAL_BAN);\n\n subscriptions.forEach(fn => fn());\n\n unsubWatcher();\n }),\n\n onTokenTerminated(_ => {\n terminateClient();\n\n subscriptions.forEach(fn => fn());\n\n unsubWatcher();\n }),\n\n onUserDeleted((user: Amity.InternalUser) => {\n if (user.userId === client.userId) {\n terminateClient(Amity.TokenTerminationReason.USER_DELETED);\n\n subscriptions.forEach(fn => fn());\n\n unsubWatcher();\n }\n }),\n\n onTokenExpired(state => {\n SessionWatcher.getInstance().setSessionState(state);\n\n logout();\n\n subscriptions.forEach(fn => fn());\n }),\n\n // NOTE: This is a temporary solution to handle the channel marker when the user is forced to leave\n // the channel because currently backend can't handle this, so every time a user is banned from\n // a channel or the channel is deleted the channel's unread count will not be reset to zero\n onChannelDeleted(removeChannelMarkerCache),\n onChannelMemberBanned(removeChannelMarkerCache),\n\n markReadEngineOnLoginHandler(),\n analyticsEngineOnLoginHandler(),\n objectResolverEngineOnLoginHandler(),\n reactionSyncEngineOnLoginHandler(),\n );\n\n if (client.useLegacyUnreadCount) {\n subscriptions.push(readReceiptSyncEngineOnLoginHandler());\n } else subscriptions.push(legacyReadReceiptSyncEngineOnLoginHandler());\n }\n\n return true;\n};\n/* end_public_function */\n"]}
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/client/api/login.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-param-reassign */\nimport { modifyMqttConnection } from '~/client/utils/modifyMqttConnection';\n/* eslint-disable require-atomic-updates */\nimport { getDeviceId } from '~/core/device';\nimport { proxyWebsocketEvents } from '~/core/events';\nimport { onChannelDeleted } from '~/channelRepository/events/onChannelDeleted';\nimport { onChannelMemberBanned } from '~/channelRepository/events/onChannelMemberBanned';\n\nimport { markReadEngineOnLoginHandler } from '~/subChannelRepository/utils/markReadEngine';\nimport { onUserDeleted } from '~/userRepository/events/onUserDeleted';\n\nimport analyticsEngineOnLoginHandler from '~/analytic/utils/analyticsEngineOnLoginHandler';\nimport readReceiptSyncEngineOnLoginHandler from '~/client/utils/ReadReceiptSync/readReceiptSyncEngineOnLoginHandler';\nimport legacyReadReceiptSyncEngineOnLoginHandler from '~/client/utils/ReadReceiptSync/legacyReadReceiptSyncEngineOnLoginHandler';\nimport objectResolverEngineOnLoginHandler from '~/client/utils/ObjectResolver/objectResolverEngineOnLoginHandler';\nimport reactionSyncEngineOnLoginHandler from '~/liveReactionRepository/utils/ReactionSyncEngineOnLoginHandler';\nimport { logout } from './logout';\n\nimport { getActiveClient } from './activeClient';\nimport { terminateClient } from './terminateClient';\nimport { setActiveUser } from './activeUser';\n\nimport { onClientBanned } from '../events';\nimport { onTokenExpired } from '../events/onTokenExpired';\nimport { onTokenTerminated } from '../events/onTokenTerminated';\n\nimport { setClientToken } from '../utils/setClientToken';\nimport { removeChannelMarkerCache } from '../utils/removeChannelMarkerCache';\nimport { initializeMessagePreviewSetting } from '../utils/messagePreviewEngine';\nimport { ASCError } from '~/core/errors';\nimport SessionWatcher from '../utils/SessionWatcher';\n\n/*\n * declared earlier to accomodate case when logging in with a different user\n * than the one already connected, in which case the existing subscriptions need\n * to be cleared\n */\nlet subscriptions: Amity.Unsubscriber[] = [];\n\nasync function runMqtt() {\n await modifyMqttConnection();\n}\n\n/* begin_public_function\n id: client.login\n*/\n/**\n * ```js\n * import { login } from '@amityco/ts-sdk-react-native/client/api'\n * const success = await login({\n * userId: 'XYZ123456789',\n * })\n * ```\n *\n * Connects an {@link Amity.Client} instance to ASC servers\n *\n * @param params the connect parameters\n * @param params.userId the user ID for the current session\n * @param params.displayName the user's displayName for the current session\n * @param params.deviceId Manual override of the user's device id (for device management)\n * @param params.authToken The authentication token - necessary when network option is set to secure\n * @returns a success boolean if connected\n *\n * @category Client API\n * @async\n */\nexport const login = async (\n params: Amity.ConnectClientParams,\n sessionHandler: Amity.SessionHandler,\n config?: Amity.ConnectClientConfig,\n): Promise<boolean> => {\n const client = getActiveClient();\n let unsubWatcher: Amity.Unsubscriber;\n\n client.log('client/api/connectClient', {\n apiKey: client.apiKey,\n sessionState: client.sessionState,\n ...params,\n });\n\n // if connecting to a different userId than the one that is connected currently\n if (client.userId && client.userId !== params.userId) {\n await logout();\n\n // Remove subscription to ban and delete\n subscriptions.forEach(fn => fn());\n subscriptions = [];\n }\n\n // default values\n const defaultDeviceId = await getDeviceId();\n\n try {\n const { users } = await setClientToken({\n params: {\n ...params,\n displayName: params?.displayName,\n deviceId: params?.deviceId || defaultDeviceId,\n },\n options: {\n setAccessTokenCookie: true,\n },\n });\n\n const user = users.find(u => u.userId === params.userId);\n\n if (user == null) {\n throw new ASCError(\n `${params.userId} has not been founded`,\n Amity.ClientError.UNKNOWN_ERROR,\n Amity.ErrorLevel.ERROR,\n );\n }\n\n if (user.isDeleted) {\n terminateClient(Amity.TokenTerminationReason.USER_DELETED);\n return false;\n }\n\n if (user.isGlobalBanned) {\n terminateClient(Amity.TokenTerminationReason.GLOBAL_BAN);\n return false;\n }\n\n client.userId = user.userId;\n\n client.sessionHandler = sessionHandler;\n\n /*\n * Cannot push to subscriptions as watcher needs to continue working even if\n * token expires\n */\n unsubWatcher = client.accessTokenExpiryWatcher(sessionHandler);\n\n setActiveUser(user);\n } catch (error) {\n /*\n * if getting token failed session state reverts to initial state when app\n * is first launched\n */\n SessionWatcher.getInstance().setSessionState(Amity.SessionStates.NOT_LOGGED_IN);\n\n // pass error down tree so the calling function handle it\n throw error;\n }\n\n if (config?.disableRTE !== true) {\n runMqtt();\n }\n\n await initializeMessagePreviewSetting();\n\n if (subscriptions.length === 0) {\n subscriptions.push(\n // GLOBAL_BAN\n onClientBanned((_: Amity.UserPayload) => {\n terminateClient(Amity.TokenTerminationReason.GLOBAL_BAN);\n\n subscriptions.forEach(fn => fn());\n\n unsubWatcher();\n }),\n\n onTokenTerminated(_ => {\n terminateClient();\n\n subscriptions.forEach(fn => fn());\n\n unsubWatcher();\n }),\n\n onUserDeleted((user: Amity.InternalUser) => {\n if (user.userId === client.userId) {\n terminateClient(Amity.TokenTerminationReason.USER_DELETED);\n\n subscriptions.forEach(fn => fn());\n\n unsubWatcher();\n }\n }),\n\n onTokenExpired(state => {\n SessionWatcher.getInstance().setSessionState(state);\n\n logout();\n\n subscriptions.forEach(fn => fn());\n }),\n\n // NOTE: This is a temporary solution to handle the channel marker when the user is forced to leave\n // the channel because currently backend can't handle this, so every time a user is banned from\n // a channel or the channel is deleted the channel's unread count will not be reset to zero\n onChannelDeleted(removeChannelMarkerCache),\n onChannelMemberBanned(removeChannelMarkerCache),\n\n markReadEngineOnLoginHandler(),\n analyticsEngineOnLoginHandler(),\n objectResolverEngineOnLoginHandler(),\n reactionSyncEngineOnLoginHandler(),\n );\n\n if (client.useLegacyUnreadCount) {\n subscriptions.push(readReceiptSyncEngineOnLoginHandler());\n } else subscriptions.push(legacyReadReceiptSyncEngineOnLoginHandler());\n }\n\n return true;\n};\n/* end_public_function */\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../src/client/api/logout.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,MAAM,QAAa,QAAQ,OAAO,
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../src/client/api/logout.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,MAAM,QAAa,QAAQ,OAAO,CAkD9C,CAAC"}
|
|
@@ -17,15 +17,12 @@ import { setSessionState } from './setSessionState';
|
|
|
17
17
|
* @async
|
|
18
18
|
*/
|
|
19
19
|
export const logout = async () => {
|
|
20
|
-
var _a
|
|
20
|
+
var _a;
|
|
21
21
|
const client = getActiveClient();
|
|
22
22
|
client.log('client/api/disconnectClient');
|
|
23
23
|
if (client.mqtt && client.mqtt.connected) {
|
|
24
24
|
client.mqtt.disconnect();
|
|
25
25
|
}
|
|
26
|
-
if (client.ws && client.ws.connected) {
|
|
27
|
-
client.ws.disconnect();
|
|
28
|
-
}
|
|
29
26
|
/*
|
|
30
27
|
* for cases when session state is terminated (example on ban) or token expired,
|
|
31
28
|
* the terminating block will set session state to terminated or for the or
|
|
@@ -41,9 +38,7 @@ export const logout = async () => {
|
|
|
41
38
|
if (client.sessionState === "established" /* Amity.SessionStates.ESTABLISHED */)
|
|
42
39
|
setSessionState("notLoggedIn" /* Amity.SessionStates.NOT_LOGGED_IN */);
|
|
43
40
|
client.emitter.all.clear();
|
|
44
|
-
|
|
45
|
-
(_a = client.ws) === null || _a === void 0 ? void 0 : _a.removeAllListeners();
|
|
46
|
-
(_b = client.mqtt) === null || _b === void 0 ? void 0 : _b.removeAllListeners();
|
|
41
|
+
(_a = client.mqtt) === null || _a === void 0 ? void 0 : _a.removeAllListeners();
|
|
47
42
|
client.userId = undefined;
|
|
48
43
|
client.token = undefined;
|
|
49
44
|
client.http.defaults.headers.common.Authorization = '';
|
|
@@ -52,8 +47,6 @@ export const logout = async () => {
|
|
|
52
47
|
isGlobalBanned: false,
|
|
53
48
|
isUserDeleted: false,
|
|
54
49
|
};
|
|
55
|
-
if (client.ws)
|
|
56
|
-
client.ws.io.opts.query = { token: '' };
|
|
57
50
|
if (typeof document !== 'undefined') {
|
|
58
51
|
document.cookie = '_ascSession=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
|
|
59
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/client/api/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;EAEE;AACF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,IAAsB,EAAE;;IACjD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IAEjC,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE1C,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;QACxC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;KAC1B;IAED
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/client/api/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;EAEE;AACF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,IAAsB,EAAE;;IACjD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IAEjC,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE1C,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;QACxC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;KAC1B;IAED;;;;;;;;;;;OAWG;IACH,IAAI,MAAM,CAAC,YAAY,wDAAoC;QACzD,eAAe,uDAAmC,CAAC;IAErD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAE3B,MAAA,MAAM,CAAC,IAAI,0CAAE,kBAAkB,EAAE,CAAC;IAClC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;IAEzB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC;IACvD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG;QAC9B,WAAW,EAAE,EAAE;QACf,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,KAAK;KACrB,CAAC;IAEF,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;QACnC,QAAQ,CAAC,MAAM,GAAG,8DAA8D,CAAC;KAClF;IAED;;;OAGG;IACH,IAAI,MAAM,CAAC,YAAY,2DAAsC,IAAI,MAAM,CAAC,KAAK,EAAE;QAC7E,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;KAC7B;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF,yBAAyB","sourcesContent":["import { getActiveClient } from './activeClient';\nimport { setSessionState } from './setSessionState';\n\n/* begin_public_function\n id: client.logout\n*/\n/**\n * ```js\n * import { Client } from '@amityco/ts-sdk-react-native';\n * const success = await Client.logout()\n * ```\n *\n * Disconnects an {@link Amity.Client} instance from ASC servers\n *\n * @returns a success boolean if disconnected\n *\n * @category Client API\n * @async\n */\nexport const logout = async (): Promise<boolean> => {\n const client = getActiveClient();\n\n client.log('client/api/disconnectClient');\n\n if (client.mqtt && client.mqtt.connected) {\n client.mqtt.disconnect();\n }\n\n /*\n * for cases when session state is terminated (example on ban) or token expired,\n * the terminating block will set session state to terminated or for the or\n * in the case of expired token the same happens\n *\n * establishing state also ignored in cases where accessTokenExpiryWatcher\n * calls renewal. There is a possibility that renewal will be called before\n * disconnectClient finishes execution\n *\n * IMPORTANT: call this before `emitter.all.clear()`, otherwise the session\n * event will never be triggered\n */\n if (client.sessionState === Amity.SessionStates.ESTABLISHED)\n setSessionState(Amity.SessionStates.NOT_LOGGED_IN);\n\n client.emitter.all.clear();\n\n client.mqtt?.removeAllListeners();\n client.userId = undefined;\n client.token = undefined;\n\n client.http.defaults.headers.common.Authorization = '';\n client.http.defaults.metadata = {\n tokenExpiry: '',\n isGlobalBanned: false,\n isUserDeleted: false,\n };\n\n if (typeof document !== 'undefined') {\n document.cookie = '_ascSession=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';\n }\n\n /*\n * Cache should be usable if tokenExpired\n * https://ekoapp.atlassian.net/wiki/spaces/UP/pages/2082537485/ASC+Core+-+Session+Management+3.0#SDK-usability-based-on-Session-State\n */\n if (client.sessionState !== Amity.SessionStates.TOKEN_EXPIRED && client.cache) {\n client.cache = { data: {} };\n }\n\n return true;\n};\n/* end_public_function */\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resumeSession.d.ts","sourceRoot":"","sources":["../../../src/client/api/resumeSession.ts"],"names":[],"mappings":"AA0CA,UAAU,MAAM;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;
|
|
1
|
+
{"version":3,"file":"resumeSession.d.ts","sourceRoot":"","sources":["../../../src/client/api/resumeSession.ts"],"names":[],"mappings":"AA0CA,UAAU,MAAM;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AA4DD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,aAAa,WAChB,MAAM,kBACE,MAAM,cAAc,WAC3B,MAAM,mBAAmB,KACjC,QAAQ,OAAO,CAsIjB,CAAC"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import jwtDecode from 'jwt-decode';
|
|
2
2
|
/* eslint-disable no-param-reassign */
|
|
3
3
|
import { modifyMqttConnection } from '~/client/utils/modifyMqttConnection';
|
|
4
|
-
/* eslint-disable require-atomic-updates */
|
|
5
|
-
import { proxyWebsocketEvents } from '~/core/events';
|
|
6
4
|
import { onChannelDeleted } from '~/channelRepository/events/onChannelDeleted';
|
|
7
5
|
import { onChannelMemberBanned } from '~/channelRepository/events/onChannelMemberBanned';
|
|
8
6
|
import { markReadEngineOnLoginHandler } from '~/subChannelRepository/utils/markReadEngine';
|
|
@@ -60,9 +58,6 @@ const validateAccessToken = async ({ token, userId }) => {
|
|
|
60
58
|
isGlobalBanned: false,
|
|
61
59
|
isUserDeleted: false,
|
|
62
60
|
};
|
|
63
|
-
// manually setup the token for ws transport
|
|
64
|
-
if (client.ws)
|
|
65
|
-
client.ws.io.opts.query = { token: token.accessToken };
|
|
66
61
|
client.token = token;
|
|
67
62
|
setSessionState("established" /* Amity.SessionStates.ESTABLISHED */);
|
|
68
63
|
return user;
|
|
@@ -92,7 +87,6 @@ const validateAccessToken = async ({ token, userId }) => {
|
|
|
92
87
|
* @async
|
|
93
88
|
*/
|
|
94
89
|
export const resumeSession = async (params, sessionHandler, config) => {
|
|
95
|
-
var _a;
|
|
96
90
|
const client = getActiveClient();
|
|
97
91
|
let unsubWatcher;
|
|
98
92
|
client.log('client/api/resumeSession', Object.assign({ apiKey: client.apiKey, sessionState: client.sessionState }, params));
|
|
@@ -103,9 +97,6 @@ export const resumeSession = async (params, sessionHandler, config) => {
|
|
|
103
97
|
if (client.mqtt && client.mqtt.connected) {
|
|
104
98
|
client.mqtt.disconnect();
|
|
105
99
|
}
|
|
106
|
-
if (client.ws && client.ws.connected) {
|
|
107
|
-
client.ws.disconnect();
|
|
108
|
-
}
|
|
109
100
|
// Clear existing subscriptions
|
|
110
101
|
subscriptions.forEach(fn => fn());
|
|
111
102
|
subscriptions = [];
|
|
@@ -131,10 +122,6 @@ export const resumeSession = async (params, sessionHandler, config) => {
|
|
|
131
122
|
terminateClient("globalBan" /* Amity.TokenTerminationReason.GLOBAL_BAN */);
|
|
132
123
|
return false;
|
|
133
124
|
}
|
|
134
|
-
// FIXME: events are duplicated if connectClient is called few times without disconnectClient
|
|
135
|
-
// wire websocket events to our event emitter
|
|
136
|
-
proxyWebsocketEvents(client.ws, client.emitter);
|
|
137
|
-
(_a = client.ws) === null || _a === void 0 ? void 0 : _a.open();
|
|
138
125
|
client.userId = user.userId;
|
|
139
126
|
client.sessionHandler = sessionHandler;
|
|
140
127
|
/*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resumeSession.js","sourceRoot":"","sources":["../../../src/client/api/resumeSession.ts"],"names":[],"mappings":"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","sourcesContent":["import jwtDecode from 'jwt-decode';\n/* eslint-disable no-param-reassign */\nimport { modifyMqttConnection } from '~/client/utils/modifyMqttConnection';\n/* eslint-disable require-atomic-updates */\nimport { proxyWebsocketEvents } from '~/core/events';\nimport { onChannelDeleted } from '~/channelRepository/events/onChannelDeleted';\nimport { onChannelMemberBanned } from '~/channelRepository/events/onChannelMemberBanned';\n\nimport { markReadEngineOnLoginHandler } from '~/subChannelRepository/utils/markReadEngine';\nimport { onUserDeleted } from '~/userRepository/events/onUserDeleted';\n\nimport analyticsEngineOnLoginHandler from '~/analytic/utils/analyticsEngineOnLoginHandler';\nimport readReceiptSyncEngineOnLoginHandler from '~/client/utils/ReadReceiptSync/readReceiptSyncEngineOnLoginHandler';\nimport legacyReadReceiptSyncEngineOnLoginHandler from '~/client/utils/ReadReceiptSync/legacyReadReceiptSyncEngineOnLoginHandler';\nimport objectResolverEngineOnLoginHandler from '~/client/utils/ObjectResolver/objectResolverEngineOnLoginHandler';\nimport { logout } from './logout';\n\nimport { getActiveClient } from './activeClient';\nimport { terminateClient } from './terminateClient';\nimport { setActiveUser } from './activeUser';\nimport { setSessionState } from './setSessionState';\n\nimport { onClientBanned } from '../events';\nimport { onTokenExpired } from '../events/onTokenExpired';\nimport { onTokenTerminated } from '../events/onTokenTerminated';\n\nimport { removeChannelMarkerCache } from '../utils/removeChannelMarkerCache';\nimport { initializeMessagePreviewSetting } from '../utils/messagePreviewEngine';\nimport { ASCError } from '~/core/errors';\nimport SessionWatcher from '../utils/SessionWatcher';\n\n/*\n * declared earlier to accomodate case when logging in with a different user\n * than the one already connected, in which case the existing subscriptions need\n * to be cleared\n */\nlet subscriptions: Amity.Unsubscriber[] = [];\n\nasync function runMqtt() {\n await modifyMqttConnection();\n}\n\ninterface Params {\n userId: string;\n token: {\n issuedAt: string;\n expiresAt: string;\n accessToken: string;\n };\n}\n\nconst isSameUserId = (token: Params['token']['accessToken']) => {\n const client = getActiveClient();\n\n const decoded = jwtDecode<{\n user: {\n userId: string;\n publicUserId: string;\n deviceInfo: Amity.Device['deviceInfo'];\n networkId: string;\n displayName: string;\n refreshToken: string;\n };\n }>(token);\n\n return decoded?.user?.publicUserId === client.userId;\n};\n\nconst validateAccessToken = async ({ token, userId }: Params) => {\n const client = getActiveClient();\n // begin establishing session\n setSessionState(Amity.SessionStates.ESTABLISHING);\n\n const {\n data: { users },\n } = await client.http.get(`/api/v3/users/${userId}`, {\n headers: {\n Authorization: `Bearer ${token.accessToken}`,\n },\n });\n\n const user = users.find((u: Amity.User) => u.userId === userId);\n\n client.http.defaults.headers.common.Authorization = `Bearer ${token.accessToken}`;\n\n client.http.defaults.metadata = {\n tokenExpiry: token.expiresAt,\n isGlobalBanned: false,\n isUserDeleted: false,\n };\n\n client.upload.defaults.headers.common.Authorization = `Bearer ${token.accessToken}`;\n\n client.upload.defaults.metadata = {\n tokenExpiry: token.expiresAt,\n isGlobalBanned: false,\n isUserDeleted: false,\n };\n\n // manually setup the token for ws transport\n if (client.ws) client.ws.io.opts.query = { token: token.accessToken };\n\n client.token = token;\n\n setSessionState(Amity.SessionStates.ESTABLISHED);\n\n return user;\n};\n\n/* begin_public_function\n id: client.resumeSession\n*/\n/**\n * ```js\n * import { resumeSession } from '@amityco/ts-sdk/client/api'\n * const success = await resumeSession({\n * userId: 'XYZ123456789',\n * token: { accessToken: 'abc123', issuedAt: '2023-01-01T00:00:00Z', expiresAt: '2023-01-02T00:00:00Z' }\n * })\n * ```\n *\n * Connects an {@link Amity.Client} instance to ASC servers using an existing access token\n *\n * @param params the connect parameters\n * @param params.userId the user ID for the current session\n * @param params.token the existing access token with its metadata\n * @param sessionHandler the session handler for token renewal\n * @param config optional configuration\n * @returns a success boolean if connected\n *\n * @category Client API\n * @async\n */\nexport const resumeSession = async (\n params: Params,\n sessionHandler: Amity.SessionHandler,\n config?: Amity.ConnectClientConfig,\n): Promise<boolean> => {\n const client = getActiveClient();\n let unsubWatcher: Amity.Unsubscriber;\n\n client.log('client/api/resumeSession', {\n apiKey: client.apiKey,\n sessionState: client.sessionState,\n ...params,\n });\n\n // Handle existing connected user\n if (client.userId) {\n if (client.userId === params.userId && isSameUserId(params.token.accessToken)) {\n // Clear connections and listeners but preserve cache\n if (client.mqtt && client.mqtt.connected) {\n client.mqtt.disconnect();\n }\n if (client.ws && client.ws.connected) {\n client.ws.disconnect();\n }\n\n // Clear existing subscriptions\n subscriptions.forEach(fn => fn());\n subscriptions = [];\n } else {\n // Different user - do full logout\n await logout();\n\n // Remove subscription to ban and delete\n subscriptions.forEach(fn => fn());\n subscriptions = [];\n }\n }\n\n try {\n const user = await validateAccessToken(params);\n\n if (user == null) {\n throw new ASCError(\n `${params.userId} has not been found`,\n Amity.ClientError.UNKNOWN_ERROR,\n Amity.ErrorLevel.ERROR,\n );\n }\n\n if (user.isDeleted) {\n terminateClient(Amity.TokenTerminationReason.USER_DELETED);\n return false;\n }\n\n if (user.isGlobalBanned) {\n terminateClient(Amity.TokenTerminationReason.GLOBAL_BAN);\n return false;\n }\n\n // FIXME: events are duplicated if connectClient is called few times without disconnectClient\n // wire websocket events to our event emitter\n proxyWebsocketEvents(client.ws, client.emitter);\n\n client.ws?.open();\n\n client.userId = user.userId;\n\n client.sessionHandler = sessionHandler;\n\n /*\n * Cannot push to subscriptions as watcher needs to continue working even if\n * token expires\n */\n unsubWatcher = client.accessTokenExpiryWatcher(sessionHandler);\n\n setActiveUser(user);\n } catch (error) {\n /*\n * if getting token failed session state reverts to initial state when app\n * is first launched\n */\n SessionWatcher.getInstance().setSessionState(Amity.SessionStates.NOT_LOGGED_IN);\n\n // pass error down tree so the calling function handle it\n throw error;\n }\n\n if (config?.disableRTE !== true) {\n runMqtt();\n }\n\n await initializeMessagePreviewSetting();\n\n if (subscriptions.length === 0) {\n subscriptions.push(\n // GLOBAL_BAN\n onClientBanned((_: Amity.UserPayload) => {\n terminateClient(Amity.TokenTerminationReason.GLOBAL_BAN);\n\n subscriptions.forEach(fn => fn());\n\n unsubWatcher();\n }),\n\n onTokenTerminated(_ => {\n terminateClient();\n\n subscriptions.forEach(fn => fn());\n\n unsubWatcher();\n }),\n\n onUserDeleted((user: Amity.InternalUser) => {\n if (user.userId === client.userId) {\n terminateClient(Amity.TokenTerminationReason.USER_DELETED);\n\n subscriptions.forEach(fn => fn());\n\n unsubWatcher();\n }\n }),\n\n onTokenExpired(state => {\n SessionWatcher.getInstance().setSessionState(state);\n\n logout();\n\n subscriptions.forEach(fn => fn());\n }),\n\n // NOTE: This is a temporary solution to handle the channel marker when the user is forced to leave\n // the channel because currently backend can't handle this, so every time a user is banned from\n // a channel or the channel is deleted the channel's unread count will not be reset to zero\n onChannelDeleted(removeChannelMarkerCache),\n onChannelMemberBanned(removeChannelMarkerCache),\n\n markReadEngineOnLoginHandler(),\n analyticsEngineOnLoginHandler(),\n objectResolverEngineOnLoginHandler(),\n );\n\n if (client.useLegacyUnreadCount) {\n subscriptions.push(readReceiptSyncEngineOnLoginHandler());\n } else subscriptions.push(legacyReadReceiptSyncEngineOnLoginHandler());\n }\n\n return true;\n};\n/* end_public_function */\n"]}
|
|
1
|
+
{"version":3,"file":"resumeSession.js","sourceRoot":"","sources":["../../../src/client/api/resumeSession.ts"],"names":[],"mappings":"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","sourcesContent":["import jwtDecode from 'jwt-decode';\n/* eslint-disable no-param-reassign */\nimport { modifyMqttConnection } from '~/client/utils/modifyMqttConnection';\n/* eslint-disable require-atomic-updates */\nimport { proxyWebsocketEvents } from '~/core/events';\nimport { onChannelDeleted } from '~/channelRepository/events/onChannelDeleted';\nimport { onChannelMemberBanned } from '~/channelRepository/events/onChannelMemberBanned';\n\nimport { markReadEngineOnLoginHandler } from '~/subChannelRepository/utils/markReadEngine';\nimport { onUserDeleted } from '~/userRepository/events/onUserDeleted';\n\nimport analyticsEngineOnLoginHandler from '~/analytic/utils/analyticsEngineOnLoginHandler';\nimport readReceiptSyncEngineOnLoginHandler from '~/client/utils/ReadReceiptSync/readReceiptSyncEngineOnLoginHandler';\nimport legacyReadReceiptSyncEngineOnLoginHandler from '~/client/utils/ReadReceiptSync/legacyReadReceiptSyncEngineOnLoginHandler';\nimport objectResolverEngineOnLoginHandler from '~/client/utils/ObjectResolver/objectResolverEngineOnLoginHandler';\nimport { logout } from './logout';\n\nimport { getActiveClient } from './activeClient';\nimport { terminateClient } from './terminateClient';\nimport { setActiveUser } from './activeUser';\nimport { setSessionState } from './setSessionState';\n\nimport { onClientBanned } from '../events';\nimport { onTokenExpired } from '../events/onTokenExpired';\nimport { onTokenTerminated } from '../events/onTokenTerminated';\n\nimport { removeChannelMarkerCache } from '../utils/removeChannelMarkerCache';\nimport { initializeMessagePreviewSetting } from '../utils/messagePreviewEngine';\nimport { ASCError } from '~/core/errors';\nimport SessionWatcher from '../utils/SessionWatcher';\n\n/*\n * declared earlier to accomodate case when logging in with a different user\n * than the one already connected, in which case the existing subscriptions need\n * to be cleared\n */\nlet subscriptions: Amity.Unsubscriber[] = [];\n\nasync function runMqtt() {\n await modifyMqttConnection();\n}\n\ninterface Params {\n userId: string;\n token: {\n issuedAt: string;\n expiresAt: string;\n accessToken: string;\n };\n}\n\nconst isSameUserId = (token: Params['token']['accessToken']) => {\n const client = getActiveClient();\n\n const decoded = jwtDecode<{\n user: {\n userId: string;\n publicUserId: string;\n deviceInfo: Amity.Device['deviceInfo'];\n networkId: string;\n displayName: string;\n refreshToken: string;\n };\n }>(token);\n\n return decoded?.user?.publicUserId === client.userId;\n};\n\nconst validateAccessToken = async ({ token, userId }: Params) => {\n const client = getActiveClient();\n // begin establishing session\n setSessionState(Amity.SessionStates.ESTABLISHING);\n\n const {\n data: { users },\n } = await client.http.get(`/api/v3/users/${userId}`, {\n headers: {\n Authorization: `Bearer ${token.accessToken}`,\n },\n });\n\n const user = users.find((u: Amity.User) => u.userId === userId);\n\n client.http.defaults.headers.common.Authorization = `Bearer ${token.accessToken}`;\n\n client.http.defaults.metadata = {\n tokenExpiry: token.expiresAt,\n isGlobalBanned: false,\n isUserDeleted: false,\n };\n\n client.upload.defaults.headers.common.Authorization = `Bearer ${token.accessToken}`;\n\n client.upload.defaults.metadata = {\n tokenExpiry: token.expiresAt,\n isGlobalBanned: false,\n isUserDeleted: false,\n };\n\n client.token = token;\n\n setSessionState(Amity.SessionStates.ESTABLISHED);\n\n return user;\n};\n\n/* begin_public_function\n id: client.resumeSession\n*/\n/**\n * ```js\n * import { resumeSession } from '@amityco/ts-sdk/client/api'\n * const success = await resumeSession({\n * userId: 'XYZ123456789',\n * token: { accessToken: 'abc123', issuedAt: '2023-01-01T00:00:00Z', expiresAt: '2023-01-02T00:00:00Z' }\n * })\n * ```\n *\n * Connects an {@link Amity.Client} instance to ASC servers using an existing access token\n *\n * @param params the connect parameters\n * @param params.userId the user ID for the current session\n * @param params.token the existing access token with its metadata\n * @param sessionHandler the session handler for token renewal\n * @param config optional configuration\n * @returns a success boolean if connected\n *\n * @category Client API\n * @async\n */\nexport const resumeSession = async (\n params: Params,\n sessionHandler: Amity.SessionHandler,\n config?: Amity.ConnectClientConfig,\n): Promise<boolean> => {\n const client = getActiveClient();\n let unsubWatcher: Amity.Unsubscriber;\n\n client.log('client/api/resumeSession', {\n apiKey: client.apiKey,\n sessionState: client.sessionState,\n ...params,\n });\n\n // Handle existing connected user\n if (client.userId) {\n if (client.userId === params.userId && isSameUserId(params.token.accessToken)) {\n // Clear connections and listeners but preserve cache\n if (client.mqtt && client.mqtt.connected) {\n client.mqtt.disconnect();\n }\n\n // Clear existing subscriptions\n subscriptions.forEach(fn => fn());\n subscriptions = [];\n } else {\n // Different user - do full logout\n await logout();\n\n // Remove subscription to ban and delete\n subscriptions.forEach(fn => fn());\n subscriptions = [];\n }\n }\n\n try {\n const user = await validateAccessToken(params);\n\n if (user == null) {\n throw new ASCError(\n `${params.userId} has not been found`,\n Amity.ClientError.UNKNOWN_ERROR,\n Amity.ErrorLevel.ERROR,\n );\n }\n\n if (user.isDeleted) {\n terminateClient(Amity.TokenTerminationReason.USER_DELETED);\n return false;\n }\n\n if (user.isGlobalBanned) {\n terminateClient(Amity.TokenTerminationReason.GLOBAL_BAN);\n return false;\n }\n\n client.userId = user.userId;\n\n client.sessionHandler = sessionHandler;\n\n /*\n * Cannot push to subscriptions as watcher needs to continue working even if\n * token expires\n */\n unsubWatcher = client.accessTokenExpiryWatcher(sessionHandler);\n\n setActiveUser(user);\n } catch (error) {\n /*\n * if getting token failed session state reverts to initial state when app\n * is first launched\n */\n SessionWatcher.getInstance().setSessionState(Amity.SessionStates.NOT_LOGGED_IN);\n\n // pass error down tree so the calling function handle it\n throw error;\n }\n\n if (config?.disableRTE !== true) {\n runMqtt();\n }\n\n await initializeMessagePreviewSetting();\n\n if (subscriptions.length === 0) {\n subscriptions.push(\n // GLOBAL_BAN\n onClientBanned((_: Amity.UserPayload) => {\n terminateClient(Amity.TokenTerminationReason.GLOBAL_BAN);\n\n subscriptions.forEach(fn => fn());\n\n unsubWatcher();\n }),\n\n onTokenTerminated(_ => {\n terminateClient();\n\n subscriptions.forEach(fn => fn());\n\n unsubWatcher();\n }),\n\n onUserDeleted((user: Amity.InternalUser) => {\n if (user.userId === client.userId) {\n terminateClient(Amity.TokenTerminationReason.USER_DELETED);\n\n subscriptions.forEach(fn => fn());\n\n unsubWatcher();\n }\n }),\n\n onTokenExpired(state => {\n SessionWatcher.getInstance().setSessionState(state);\n\n logout();\n\n subscriptions.forEach(fn => fn());\n }),\n\n // NOTE: This is a temporary solution to handle the channel marker when the user is forced to leave\n // the channel because currently backend can't handle this, so every time a user is banned from\n // a channel or the channel is deleted the channel's unread count will not be reset to zero\n onChannelDeleted(removeChannelMarkerCache),\n onChannelMemberBanned(removeChannelMarkerCache),\n\n markReadEngineOnLoginHandler(),\n analyticsEngineOnLoginHandler(),\n objectResolverEngineOnLoginHandler(),\n );\n\n if (client.useLegacyUnreadCount) {\n subscriptions.push(readReceiptSyncEngineOnLoginHandler());\n } else subscriptions.push(legacyReadReceiptSyncEngineOnLoginHandler());\n }\n\n return true;\n};\n/* end_public_function */\n"]}
|
|
@@ -8,10 +8,6 @@ describe('createClient', () => {
|
|
|
8
8
|
const client = createClient('test-api-key');
|
|
9
9
|
expect(client.http).toBeDefined();
|
|
10
10
|
});
|
|
11
|
-
test('it should define ws transport', () => {
|
|
12
|
-
const client = createClient('test-api-key');
|
|
13
|
-
expect(client.ws).toBeDefined();
|
|
14
|
-
});
|
|
15
11
|
test('it should define mqtt transport', () => {
|
|
16
12
|
const client = createClient('test-api-key');
|
|
17
13
|
expect(client.mqtt).toBeDefined();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createClient.test.js","sourceRoot":"","sources":["../../../../src/client/api/tests/createClient.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACnC,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"createClient.test.js","sourceRoot":"","sources":["../../../../src/client/api/tests/createClient.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACnC,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAE9C,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACrE,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC;QAE7B,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,uDAAmC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { createClient } from '../createClient';\n\ndescribe('createClient', () => {\n test('it should create client', () => {\n const client = createClient('test-api-key');\n\n expect(client).toBeDefined();\n });\n\n test('it should define http transport', () => {\n const client = createClient('test-api-key');\n\n expect(client.http).toBeDefined();\n });\n\n test('it should define mqtt transport', () => {\n const client = createClient('test-api-key');\n\n expect(client.mqtt).toBeDefined();\n });\n\n test('it should define event emitter', () => {\n const client = createClient('test-api-key');\n\n expect(client.emitter).toBeDefined();\n });\n\n test('it should return existing client if there is one', () => {\n const expected = createClient('test-api-key');\n const recieved = createClient('test-api-key');\n\n expect(recieved).toStrictEqual(expected);\n });\n\n test('it should set not logged in as the start up session state', () => {\n const got = createClient('key', 'sg');\n const { sessionState } = got;\n\n expect(got).toBeDefined();\n expect(sessionState).toBe(Amity.SessionStates.NOT_LOGGED_IN);\n });\n});\n"]}
|
|
@@ -8,13 +8,7 @@ const sessionHandler = {
|
|
|
8
8
|
// do nothing
|
|
9
9
|
},
|
|
10
10
|
};
|
|
11
|
-
const onConnect = () =>
|
|
12
|
-
const CONNECT_PACKET = { type: 0, nsp: client.ws.nsp };
|
|
13
|
-
client.ws.emit('connect');
|
|
14
|
-
// simulate a connection ack packet from server
|
|
15
|
-
client.ws.io.emit('packet', CONNECT_PACKET);
|
|
16
|
-
}, 50);
|
|
17
|
-
describe('login', () => {
|
|
11
|
+
const onConnect = () => describe('login', () => {
|
|
18
12
|
beforeEach(() => {
|
|
19
13
|
client = createClient('key', 'sg');
|
|
20
14
|
client.mqtt.connect = jest.fn();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.test.js","sourceRoot":"","sources":["../../../../src/client/api/tests/login.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,IAAI,MAAoB,CAAC;AAEzB,MAAM,cAAc,GAAyB;IAC3C,2BAA2B,CAAC,CAAC;QAC3B,aAAa;IACf,CAAC;CACF,CAAC;AAEF,MAAM,SAAS,GAAG,GAAG,EAAE,CACrB,
|
|
1
|
+
{"version":3,"file":"login.test.js","sourceRoot":"","sources":["../../../../src/client/api/tests/login.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,IAAI,MAAoB,CAAC;AAEzB,MAAM,cAAc,GAAyB;IAC3C,2BAA2B,CAAC,CAAC;QAC3B,aAAa;IACf,CAAC;CACF,CAAC;AAEF,MAAM,SAAS,GAAG,GAAG,EAAE,CACrB,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;QAEpE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,MAAM,CAAC,YAAY,wDAAoC;YAAE,MAAM,gBAAgB,EAAE,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAC1C,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;QAEpB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;QAExE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAChD,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;QAEpB,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;QACvD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;QAEhC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,qDAAiC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC7E,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;QAEjD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,uDAAkC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI;aACpB,EAAE,EAAE;aACJ,iBAAiB,CAChB,IAAI,WAAW,CAAC,aAAa,oFAAyD,CACvF,CAAC;QAEJ,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC9F,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,uDAAmC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QACpD,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;QAEpB,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;QAEvD,WAAW;QACX,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAuB,CAAC,CAAC;QAElE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,mDAAgC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { ASCApiError } from '~/core/errors';\nimport { sessionResponse, user11, disconnectClient } from '~/utils/tests';\nimport { login, createClient } from '..';\nimport { setActiveClient } from '../activeClient';\n\nlet client: Amity.Client;\n\nconst sessionHandler: Amity.SessionHandler = {\n sessionWillRenewAccessToken(_) {\n // do nothing\n },\n};\n\nconst onConnect = () =>\n describe('login', () => {\n beforeEach(() => {\n client = createClient('key', 'sg');\n client.mqtt.connect = jest.fn();\n client.mqtt.subscribe = jest.fn();\n client.http.post = jest.fn().mockResolvedValueOnce(sessionResponse);\n\n setActiveClient(client);\n });\n\n afterEach(async () => {\n if (client.sessionState === Amity.SessionStates.ESTABLISHED) await disconnectClient();\n });\n\n test('it should connect client', async () => {\n onConnect().unref();\n\n const recieved = await login({ userId: user11.userId }, sessionHandler);\n\n expect(recieved).toBe(true);\n });\n\n test('it should establish connection', async () => {\n onConnect().unref();\n\n await login({ userId: user11.userId }, sessionHandler);\n const { sessionState } = client;\n\n expect(sessionState).toBe(Amity.SessionStates.ESTABLISHED);\n });\n\n test('it should have session state establishing while connecting client', () => {\n login({ userId: user11.userId }, sessionHandler);\n\n expect(client.sessionState).toBe(Amity.SessionStates.ESTABLISHING);\n });\n\n test('it should have session state notLoggedIn on failure', async () => {\n client.http.post = jest\n .fn()\n .mockRejectedValue(\n new ASCApiError('unauthorzed', Amity.ServerError.UNAUTHORIZED, Amity.ErrorLevel.FATAL),\n );\n\n await expect(login({ userId: user11.userId }, sessionHandler)).rejects.toThrow('unauthorzed');\n expect(client.sessionState).toBe(Amity.SessionStates.NOT_LOGGED_IN);\n });\n\n test('it should terminate session on ban', async () => {\n onConnect().unref();\n\n await login({ userId: user11.userId }, sessionHandler);\n\n // ban user\n client.emitter.emit('user.didGlobalBan', {} as Amity.UserPayload);\n\n expect(client.sessionState).toBe(Amity.SessionStates.TERMINATED);\n });\n });\n"]}
|