@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.
Files changed (84) hide show
  1. package/.env +26 -26
  2. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/@types/domains/client.d.ts +0 -2
  3. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/@types/domains/client.d.ts.map +1 -1
  4. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/@types/domains/client.js.map +1 -1
  5. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/createClient.d.ts.map +1 -1
  6. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/createClient.js +1 -2
  7. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/createClient.js.map +1 -1
  8. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/isConnected.d.ts.map +1 -1
  9. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/isConnected.js +1 -5
  10. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/isConnected.js.map +1 -1
  11. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/login.d.ts.map +1 -1
  12. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/login.js +0 -6
  13. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/login.js.map +1 -1
  14. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/logout.d.ts.map +1 -1
  15. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/logout.js +2 -9
  16. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/logout.js.map +1 -1
  17. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/resumeSession.d.ts.map +1 -1
  18. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/resumeSession.js +0 -13
  19. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/resumeSession.js.map +1 -1
  20. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/createClient.test.js +0 -4
  21. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/createClient.test.js.map +1 -1
  22. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/login.test.js +1 -7
  23. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/login.test.js.map +1 -1
  24. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/logout.test.js +0 -8
  25. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/logout.test.js.map +1 -1
  26. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/resumeSession.test.js +1 -8
  27. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/resumeSession.test.js.map +1 -1
  28. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/terminateClient.test.js +0 -3
  29. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/api/tests/terminateClient.test.js.map +1 -1
  30. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/utils/setClientToken.d.ts.map +1 -1
  31. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/utils/setClientToken.js +0 -3
  32. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/client/utils/setClientToken.js.map +1 -1
  33. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/events.d.ts +0 -11
  34. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/events.d.ts.map +1 -1
  35. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/events.js +0 -17
  36. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/events.js.map +1 -1
  37. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/index.d.ts +0 -1
  38. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/index.d.ts.map +1 -1
  39. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/index.js +0 -1
  40. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/index.js.map +1 -1
  41. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/utils/tests/client.d.ts.map +1 -1
  42. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/utils/tests/client.js +1 -6
  43. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/utils/tests/client.js.map +1 -1
  44. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/tsconfig.tsbuildinfo +1 -1
  45. package/dist/@types/domains/client.d.ts +0 -2
  46. package/dist/@types/domains/client.d.ts.map +1 -1
  47. package/dist/client/api/createClient.d.ts.map +1 -1
  48. package/dist/client/api/isConnected.d.ts.map +1 -1
  49. package/dist/client/api/login.d.ts.map +1 -1
  50. package/dist/client/api/logout.d.ts.map +1 -1
  51. package/dist/client/api/resumeSession.d.ts.map +1 -1
  52. package/dist/client/utils/setClientToken.d.ts.map +1 -1
  53. package/dist/core/events.d.ts +0 -11
  54. package/dist/core/events.d.ts.map +1 -1
  55. package/dist/core/transports/index.d.ts +0 -1
  56. package/dist/core/transports/index.d.ts.map +1 -1
  57. package/dist/index.cjs.js +6 -90
  58. package/dist/index.esm.js +6 -89
  59. package/dist/index.umd.js +3 -3
  60. package/dist/utils/tests/client.d.ts.map +1 -1
  61. package/package.json +1 -3
  62. package/src/@types/domains/client.ts +0 -1
  63. package/src/client/api/createClient.ts +0 -1
  64. package/src/client/api/isConnected.ts +1 -8
  65. package/src/client/api/login.ts +0 -6
  66. package/src/client/api/logout.ts +1 -8
  67. package/src/client/api/resumeSession.ts +0 -12
  68. package/src/client/api/tests/createClient.test.ts +0 -6
  69. package/src/client/api/tests/login.test.ts +42 -51
  70. package/src/client/api/tests/logout.test.ts +1 -12
  71. package/src/client/api/tests/resumeSession.test.ts +102 -111
  72. package/src/client/api/tests/terminateClient.test.ts +0 -6
  73. package/src/client/utils/setClientToken.ts +0 -3
  74. package/src/core/events.ts +0 -18
  75. package/src/core/transports/index.ts +0 -1
  76. package/src/utils/tests/client.ts +1 -7
  77. package/tsconfig.tsbuildinfo +1 -1
  78. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/ws.d.ts +0 -27
  79. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/ws.d.ts.map +0 -1
  80. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/ws.js +0 -53
  81. package/.rollup.cache/home/runner/work/AmityReactNativeTypescriptSDK/AmityReactNativeTypescriptSDK/packages/sdk/dist/core/transports/ws.js.map +0 -1
  82. package/dist/core/transports/ws.d.ts +0 -27
  83. package/dist/core/transports/ws.d.ts.map +0 -1
  84. package/src/core/transports/ws.ts +0 -60
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/utils/tests/client.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,UAAU,YAAS,CAAC;AAYjC,eAAO,MAAM,MAAM,cAA4B,CAAC;AAMhD,eAAO,MAAM,aAAa,qBAuBzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBAE5B,CAAC;;AAEF,wBAAkB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/utils/tests/client.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,UAAU,YAAS,CAAC;AAYjC,eAAO,MAAM,MAAM,cAA4B,CAAC;AAMhD,eAAO,MAAM,aAAa,qBAiBzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBAE5B,CAAC;;AAEF,wBAAkB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amityco/ts-sdk-react-native",
3
- "version": "7.8.3-e4f1111.0",
3
+ "version": "7.8.3",
4
4
  "license": "CC-BY-ND-4.0",
5
5
  "author": "amity.co <developers@amity.co> (https://amity.co)",
6
6
  "description": "Amity Social Cloud Typescript SDK",
@@ -47,7 +47,6 @@
47
47
  "@types/node": "^18.6.4",
48
48
  "@types/object-hash": "^3.0.6",
49
49
  "@types/react-native": "0.63.4",
50
- "@types/socket.io-client": "^1.4.34",
51
50
  "chalk": "^4.1.2",
52
51
  "concurrently": "^6.1.0",
53
52
  "form-data": "^4.0.0",
@@ -77,7 +76,6 @@
77
76
  "mqtt": "^4.3.7",
78
77
  "object-hash": "^3.0.0",
79
78
  "react-native-uuid": "^2.0.1",
80
- "socket.io-client": "2.2.0",
81
79
  "ts-jest": "^28.0.3"
82
80
  },
83
81
  "peerDependencies": {
@@ -55,7 +55,6 @@ declare global {
55
55
  http: AxiosInstance;
56
56
  upload: AxiosInstance;
57
57
  mqtt?: Amity.MqttClient;
58
- ws?: SocketIOClient.Socket;
59
58
  emitter: Emitter<Amity.Events>;
60
59
 
61
60
  hasPermission: (permission: string) => Amity.PermissionChecker;
@@ -74,7 +74,6 @@ export const createClient = (
74
74
  let mqtt;
75
75
 
76
76
  if (rteEnabled) {
77
- ws = createWebsocketTransport(httpEndpoint);
78
77
  mqtt = createMqttTransport(mqttEndpoint);
79
78
  }
80
79
 
@@ -16,12 +16,5 @@ export const isConnected = (): boolean => {
16
16
  const client = getActiveClient();
17
17
  client.log('client/api/isConnected', client);
18
18
 
19
- // if client is connected to ws, it means client is connected. If ws is undefined, it means ws is not used.
20
- const isWsConnected = (client.ws && client.ws.connected) || !!client.ws;
21
-
22
- return !!(
23
- client.userId &&
24
- String(client.http.defaults.headers.common?.Authorization)?.length &&
25
- isWsConnected
26
- );
19
+ return !!(client.userId && String(client.http.defaults.headers.common?.Authorization)?.length);
27
20
  };
@@ -122,12 +122,6 @@ export const login = async (
122
122
  return false;
123
123
  }
124
124
 
125
- // FIXME: events are duplicated if connectClient is called few times without disconnectClient
126
- // wire websocket events to our event emitter
127
- proxyWebsocketEvents(client.ws, client.emitter);
128
-
129
- client.ws?.open();
130
-
131
125
  client.userId = user.userId;
132
126
 
133
127
  client.sessionHandler = sessionHandler;
@@ -26,10 +26,6 @@ export const logout = async (): Promise<boolean> => {
26
26
  client.mqtt.disconnect();
27
27
  }
28
28
 
29
- if (client.ws && client.ws.connected) {
30
- client.ws.disconnect();
31
- }
32
-
33
29
  /*
34
30
  * for cases when session state is terminated (example on ban) or token expired,
35
31
  * the terminating block will set session state to terminated or for the or
@@ -46,8 +42,7 @@ export const logout = async (): Promise<boolean> => {
46
42
  setSessionState(Amity.SessionStates.NOT_LOGGED_IN);
47
43
 
48
44
  client.emitter.all.clear();
49
- // FIXME: it removes listener in ws.ts, it breaks global ban event
50
- client.ws?.removeAllListeners();
45
+
51
46
  client.mqtt?.removeAllListeners();
52
47
  client.userId = undefined;
53
48
  client.token = undefined;
@@ -59,8 +54,6 @@ export const logout = async (): Promise<boolean> => {
59
54
  isUserDeleted: false,
60
55
  };
61
56
 
62
- if (client.ws) client.ws.io.opts.query = { token: '' };
63
-
64
57
  if (typeof document !== 'undefined') {
65
58
  document.cookie = '_ascSession=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
66
59
  }
@@ -97,9 +97,6 @@ const validateAccessToken = async ({ token, userId }: Params) => {
97
97
  isUserDeleted: false,
98
98
  };
99
99
 
100
- // manually setup the token for ws transport
101
- if (client.ws) client.ws.io.opts.query = { token: token.accessToken };
102
-
103
100
  client.token = token;
104
101
 
105
102
  setSessionState(Amity.SessionStates.ESTABLISHED);
@@ -152,9 +149,6 @@ export const resumeSession = async (
152
149
  if (client.mqtt && client.mqtt.connected) {
153
150
  client.mqtt.disconnect();
154
151
  }
155
- if (client.ws && client.ws.connected) {
156
- client.ws.disconnect();
157
- }
158
152
 
159
153
  // Clear existing subscriptions
160
154
  subscriptions.forEach(fn => fn());
@@ -190,12 +184,6 @@ export const resumeSession = async (
190
184
  return false;
191
185
  }
192
186
 
193
- // FIXME: events are duplicated if connectClient is called few times without disconnectClient
194
- // wire websocket events to our event emitter
195
- proxyWebsocketEvents(client.ws, client.emitter);
196
-
197
- client.ws?.open();
198
-
199
187
  client.userId = user.userId;
200
188
 
201
189
  client.sessionHandler = sessionHandler;
@@ -13,12 +13,6 @@ describe('createClient', () => {
13
13
  expect(client.http).toBeDefined();
14
14
  });
15
15
 
16
- test('it should define ws transport', () => {
17
- const client = createClient('test-api-key');
18
-
19
- expect(client.ws).toBeDefined();
20
- });
21
-
22
16
  test('it should define mqtt transport', () => {
23
17
  const client = createClient('test-api-key');
24
18
 
@@ -12,71 +12,62 @@ const sessionHandler: Amity.SessionHandler = {
12
12
  };
13
13
 
14
14
  const onConnect = () =>
15
- setTimeout(() => {
16
- const CONNECT_PACKET = { type: 0, nsp: client.ws.nsp };
15
+ describe('login', () => {
16
+ beforeEach(() => {
17
+ client = createClient('key', 'sg');
18
+ client.mqtt.connect = jest.fn();
19
+ client.mqtt.subscribe = jest.fn();
20
+ client.http.post = jest.fn().mockResolvedValueOnce(sessionResponse);
17
21
 
18
- client.ws.emit('connect');
22
+ setActiveClient(client);
23
+ });
19
24
 
20
- // simulate a connection ack packet from server
21
- client.ws.io.emit('packet', CONNECT_PACKET);
22
- }, 50);
25
+ afterEach(async () => {
26
+ if (client.sessionState === Amity.SessionStates.ESTABLISHED) await disconnectClient();
27
+ });
23
28
 
24
- describe('login', () => {
25
- beforeEach(() => {
26
- client = createClient('key', 'sg');
27
- client.mqtt.connect = jest.fn();
28
- client.mqtt.subscribe = jest.fn();
29
- client.http.post = jest.fn().mockResolvedValueOnce(sessionResponse);
29
+ test('it should connect client', async () => {
30
+ onConnect().unref();
30
31
 
31
- setActiveClient(client);
32
- });
32
+ const recieved = await login({ userId: user11.userId }, sessionHandler);
33
33
 
34
- afterEach(async () => {
35
- if (client.sessionState === Amity.SessionStates.ESTABLISHED) await disconnectClient();
36
- });
34
+ expect(recieved).toBe(true);
35
+ });
37
36
 
38
- test('it should connect client', async () => {
39
- onConnect().unref();
37
+ test('it should establish connection', async () => {
38
+ onConnect().unref();
40
39
 
41
- const recieved = await login({ userId: user11.userId }, sessionHandler);
40
+ await login({ userId: user11.userId }, sessionHandler);
41
+ const { sessionState } = client;
42
42
 
43
- expect(recieved).toBe(true);
44
- });
43
+ expect(sessionState).toBe(Amity.SessionStates.ESTABLISHED);
44
+ });
45
45
 
46
- test('it should establish connection', async () => {
47
- onConnect().unref();
46
+ test('it should have session state establishing while connecting client', () => {
47
+ login({ userId: user11.userId }, sessionHandler);
48
48
 
49
- await login({ userId: user11.userId }, sessionHandler);
50
- const { sessionState } = client;
51
-
52
- expect(sessionState).toBe(Amity.SessionStates.ESTABLISHED);
53
- });
49
+ expect(client.sessionState).toBe(Amity.SessionStates.ESTABLISHING);
50
+ });
54
51
 
55
- test('it should have session state establishing while connecting client', () => {
56
- login({ userId: user11.userId }, sessionHandler);
52
+ test('it should have session state notLoggedIn on failure', async () => {
53
+ client.http.post = jest
54
+ .fn()
55
+ .mockRejectedValue(
56
+ new ASCApiError('unauthorzed', Amity.ServerError.UNAUTHORIZED, Amity.ErrorLevel.FATAL),
57
+ );
57
58
 
58
- expect(client.sessionState).toBe(Amity.SessionStates.ESTABLISHING);
59
- });
60
-
61
- test('it should have session state notLoggedIn on failure', async () => {
62
- client.http.post = jest
63
- .fn()
64
- .mockRejectedValue(
65
- new ASCApiError('unauthorzed', Amity.ServerError.UNAUTHORIZED, Amity.ErrorLevel.FATAL),
66
- );
67
-
68
- await expect(login({ userId: user11.userId }, sessionHandler)).rejects.toThrow('unauthorzed');
69
- expect(client.sessionState).toBe(Amity.SessionStates.NOT_LOGGED_IN);
70
- });
59
+ await expect(login({ userId: user11.userId }, sessionHandler)).rejects.toThrow('unauthorzed');
60
+ expect(client.sessionState).toBe(Amity.SessionStates.NOT_LOGGED_IN);
61
+ });
71
62
 
72
- test('it should terminate session on ban', async () => {
73
- onConnect().unref();
63
+ test('it should terminate session on ban', async () => {
64
+ onConnect().unref();
74
65
 
75
- await login({ userId: user11.userId }, sessionHandler);
66
+ await login({ userId: user11.userId }, sessionHandler);
76
67
 
77
- // ban user
78
- client.emitter.emit('user.didGlobalBan', {} as Amity.UserPayload);
68
+ // ban user
69
+ client.emitter.emit('user.didGlobalBan', {} as Amity.UserPayload);
79
70
 
80
- expect(client.sessionState).toBe(Amity.SessionStates.TERMINATED);
71
+ expect(client.sessionState).toBe(Amity.SessionStates.TERMINATED);
72
+ });
81
73
  });
82
- });
@@ -3,23 +3,18 @@ import { client, connectClient, message11 as message } from '~/utils/tests';
3
3
 
4
4
  import { logout } from '..';
5
5
 
6
- const disconnect = () => setTimeout(() => client.ws.emit('disconnect'), 500);
7
-
8
6
  describe('logout', () => {
9
7
  beforeEach(async () => {
10
8
  await connectClient();
11
9
  });
12
10
 
13
11
  test('it should disconnect client', async () => {
14
- disconnect().unref();
15
-
16
12
  const recieved = await logout();
17
13
 
18
14
  expect(recieved).toBe(true);
19
15
  });
20
16
 
21
17
  test('it should set sesion state to notLoggedIn after disconnect', async () => {
22
- disconnect().unref();
23
18
  await logout();
24
19
 
25
20
  expect(client.sessionState).toBe(Amity.SessionStates.NOT_LOGGED_IN);
@@ -27,7 +22,6 @@ describe('logout', () => {
27
22
 
28
23
  test('it should not update sesion state if session state terminated', async () => {
29
24
  client.sessionState = Amity.SessionStates.TERMINATED;
30
- disconnect().unref();
31
25
 
32
26
  await logout();
33
27
 
@@ -35,8 +29,6 @@ describe('logout', () => {
35
29
  });
36
30
 
37
31
  test('it should clear userId and accessToken on disconnect', async () => {
38
- disconnect().unref();
39
-
40
32
  await logout();
41
33
 
42
34
  expect(client.userId).toBeUndefined();
@@ -44,15 +36,12 @@ describe('logout', () => {
44
36
  });
45
37
 
46
38
  test('it should clear auth header on disconnect', async () => {
47
- disconnect().unref();
48
-
49
39
  await logout();
50
40
 
51
41
  expect(client.http.defaults.headers.common.Authorization).toBeFalsy();
52
42
  });
53
43
 
54
44
  test('it should clear cache on disconnect', async () => {
55
- disconnect().unref();
56
45
  enableCache();
57
46
 
58
47
  const cacheKey = ['message', 'get', message.messageId];
@@ -65,7 +54,7 @@ describe('logout', () => {
65
54
 
66
55
  test('it should not clear cache if tokenExpired', async () => {
67
56
  client.sessionState = Amity.SessionStates.TOKEN_EXPIRED;
68
- disconnect().unref();
57
+
69
58
  enableCache();
70
59
 
71
60
  const cacheKey = ['message', 'get', message.messageId];
@@ -24,150 +24,141 @@ const mockUserResponse = {
24
24
  };
25
25
 
26
26
  const onConnect = () =>
27
- setTimeout(() => {
28
- const CONNECT_PACKET = { type: 0, nsp: client.ws?.nsp };
29
-
30
- client.ws?.emit('connect');
27
+ describe('resumeSession', () => {
28
+ beforeEach(() => {
29
+ client = createClient('key', 'sg');
30
+ client.mqtt?.connect && (client.mqtt.connect = jest.fn());
31
+ client.mqtt?.subscribe && (client.mqtt.subscribe = jest.fn());
32
+ client.http.get = jest.fn().mockResolvedValueOnce(mockUserResponse);
33
+
34
+ setActiveClient(client);
35
+ });
31
36
 
32
- // simulate a connection ack packet from server
33
- client.ws?.io.emit('packet', CONNECT_PACKET);
34
- }, 50);
37
+ afterEach(async () => {
38
+ if (client.sessionState === Amity.SessionStates.ESTABLISHED) await disconnectClient();
39
+ });
35
40
 
36
- describe('resumeSession', () => {
37
- beforeEach(() => {
38
- client = createClient('key', 'sg');
39
- client.mqtt?.connect && (client.mqtt.connect = jest.fn());
40
- client.mqtt?.subscribe && (client.mqtt.subscribe = jest.fn());
41
- client.http.get = jest.fn().mockResolvedValueOnce(mockUserResponse);
41
+ test('it should connect client with access token', async () => {
42
+ onConnect().unref();
42
43
 
43
- setActiveClient(client);
44
- });
44
+ const received = await resumeSession(
45
+ { userId: user11.userId, token: mockToken },
46
+ sessionHandler,
47
+ );
45
48
 
46
- afterEach(async () => {
47
- if (client.sessionState === Amity.SessionStates.ESTABLISHED) await disconnectClient();
48
- });
49
+ expect(received).toBe(true);
50
+ });
49
51
 
50
- test('it should connect client with access token', async () => {
51
- onConnect().unref();
52
+ test('it should establish connection', async () => {
53
+ onConnect().unref();
52
54
 
53
- const received = await resumeSession(
54
- { userId: user11.userId, token: mockToken },
55
- sessionHandler,
56
- );
55
+ await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
56
+ const { sessionState } = client;
57
57
 
58
- expect(received).toBe(true);
59
- });
58
+ expect(sessionState).toBe(Amity.SessionStates.ESTABLISHED);
59
+ });
60
60
 
61
- test('it should establish connection', async () => {
62
- onConnect().unref();
61
+ test('it should have session state establishing while connecting client', () => {
62
+ resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
63
63
 
64
- await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
65
- const { sessionState } = client;
64
+ expect(client.sessionState).toBe(Amity.SessionStates.ESTABLISHING);
65
+ });
66
66
 
67
- expect(sessionState).toBe(Amity.SessionStates.ESTABLISHED);
68
- });
67
+ test('it should have session state notLoggedIn on failure', async () => {
68
+ client.http.get = jest
69
+ .fn()
70
+ .mockRejectedValue(
71
+ new ASCApiError('unauthorized', Amity.ServerError.UNAUTHORIZED, Amity.ErrorLevel.FATAL),
72
+ );
73
+
74
+ await expect(
75
+ resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler),
76
+ ).rejects.toThrow('unauthorized');
77
+ expect(client.sessionState).toBe(Amity.SessionStates.NOT_LOGGED_IN);
78
+ });
69
79
 
70
- test('it should have session state establishing while connecting client', () => {
71
- resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
80
+ test('it should set authorization header with token', async () => {
81
+ onConnect().unref();
72
82
 
73
- expect(client.sessionState).toBe(Amity.SessionStates.ESTABLISHING);
74
- });
83
+ await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
75
84
 
76
- test('it should have session state notLoggedIn on failure', async () => {
77
- client.http.get = jest
78
- .fn()
79
- .mockRejectedValue(
80
- new ASCApiError('unauthorized', Amity.ServerError.UNAUTHORIZED, Amity.ErrorLevel.FATAL),
85
+ expect(client.http.defaults.headers.common.Authorization).toBe(
86
+ `Bearer ${mockToken.accessToken}`,
81
87
  );
88
+ expect(client.upload.defaults.headers.common.Authorization).toBe(
89
+ `Bearer ${mockToken.accessToken}`,
90
+ );
91
+ });
82
92
 
83
- await expect(
84
- resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler),
85
- ).rejects.toThrow('unauthorized');
86
- expect(client.sessionState).toBe(Amity.SessionStates.NOT_LOGGED_IN);
87
- });
88
-
89
- test('it should set authorization header with token', async () => {
90
- onConnect().unref();
91
-
92
- await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
93
-
94
- expect(client.http.defaults.headers.common.Authorization).toBe(
95
- `Bearer ${mockToken.accessToken}`,
96
- );
97
- expect(client.upload.defaults.headers.common.Authorization).toBe(
98
- `Bearer ${mockToken.accessToken}`,
99
- );
100
- });
101
-
102
- test('it should set token metadata', async () => {
103
- onConnect().unref();
93
+ test('it should set token metadata', async () => {
94
+ onConnect().unref();
104
95
 
105
- await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
96
+ await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
106
97
 
107
- expect(client.token).toEqual(mockToken);
108
- expect(client.http.defaults.metadata).toEqual({
109
- tokenExpiry: mockToken.expiresAt,
110
- isGlobalBanned: false,
111
- isUserDeleted: false,
98
+ expect(client.token).toEqual(mockToken);
99
+ expect(client.http.defaults.metadata).toEqual({
100
+ tokenExpiry: mockToken.expiresAt,
101
+ isGlobalBanned: false,
102
+ isUserDeleted: false,
103
+ });
112
104
  });
113
- });
114
105
 
115
- test('it should call user endpoint to validate token', async () => {
116
- onConnect().unref();
106
+ test('it should call user endpoint to validate token', async () => {
107
+ onConnect().unref();
117
108
 
118
- await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
109
+ await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
119
110
 
120
- expect(client.http.get).toHaveBeenCalledWith(`/api/v3/users/${user11.userId}`);
121
- });
111
+ expect(client.http.get).toHaveBeenCalledWith(`/api/v3/users/${user11.userId}`);
112
+ });
122
113
 
123
- test('it should terminate session on ban', async () => {
124
- onConnect().unref();
114
+ test('it should terminate session on ban', async () => {
115
+ onConnect().unref();
125
116
 
126
- await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
117
+ await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
127
118
 
128
- // ban user
129
- client.emitter.emit('user.didGlobalBan', {} as Amity.UserPayload);
119
+ // ban user
120
+ client.emitter.emit('user.didGlobalBan', {} as Amity.UserPayload);
130
121
 
131
- expect(client.sessionState).toBe(Amity.SessionStates.TERMINATED);
132
- });
122
+ expect(client.sessionState).toBe(Amity.SessionStates.TERMINATED);
123
+ });
133
124
 
134
- test('it should reset client state when user is already connected with same userId', async () => {
135
- onConnect().unref();
125
+ test('it should reset client state when user is already connected with same userId', async () => {
126
+ onConnect().unref();
136
127
 
137
- // First connection
138
- await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
139
- expect(client.sessionState).toBe(Amity.SessionStates.ESTABLISHED);
140
- expect(client.userId).toBe(user11.userId);
128
+ // First connection
129
+ await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
130
+ expect(client.sessionState).toBe(Amity.SessionStates.ESTABLISHED);
131
+ expect(client.userId).toBe(user11.userId);
141
132
 
142
- // Mock the HTTP call for second connection
143
- client.http.get = jest.fn().mockResolvedValueOnce(mockUserResponse);
133
+ // Mock the HTTP call for second connection
134
+ client.http.get = jest.fn().mockResolvedValueOnce(mockUserResponse);
144
135
 
145
- // Second connection with same userId should treat as token expiry (preserve cache)
146
- onConnect().unref();
147
- await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
136
+ // Second connection with same userId should treat as token expiry (preserve cache)
137
+ onConnect().unref();
138
+ await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
148
139
 
149
- // Verify that the client is properly reset and reconnected
150
- expect(client.sessionState).toBe(Amity.SessionStates.ESTABLISHED);
151
- expect(client.userId).toBe(user11.userId);
152
- });
140
+ // Verify that the client is properly reset and reconnected
141
+ expect(client.sessionState).toBe(Amity.SessionStates.ESTABLISHED);
142
+ expect(client.userId).toBe(user11.userId);
143
+ });
153
144
 
154
- test('it should preserve cache when resuming session with same userId', async () => {
155
- onConnect().unref();
145
+ test('it should preserve cache when resuming session with same userId', async () => {
146
+ onConnect().unref();
156
147
 
157
- // First connection - set some cache data
158
- await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
159
- if (client.cache) {
160
- client.cache.data = { test: 'data' };
161
- }
148
+ // First connection - set some cache data
149
+ await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
150
+ if (client.cache) {
151
+ client.cache.data = { test: 'data' };
152
+ }
162
153
 
163
- // Mock the HTTP call for second connection
164
- client.http.get = jest.fn().mockResolvedValueOnce(mockUserResponse);
154
+ // Mock the HTTP call for second connection
155
+ client.http.get = jest.fn().mockResolvedValueOnce(mockUserResponse);
165
156
 
166
- // Second connection with same userId
167
- onConnect().unref();
168
- await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
157
+ // Second connection with same userId
158
+ onConnect().unref();
159
+ await resumeSession({ userId: user11.userId, token: mockToken }, sessionHandler);
169
160
 
170
- // Cache should be preserved when same userId is used
171
- expect(client.cache?.data).toEqual({ test: 'data' });
161
+ // Cache should be preserved when same userId is used
162
+ expect(client.cache?.data).toEqual({ test: 'data' });
163
+ });
172
164
  });
173
- });
@@ -2,16 +2,12 @@ import { client, connectClient } from '~/utils/tests';
2
2
 
3
3
  import { terminateClient } from '../terminateClient';
4
4
 
5
- const disconnect = () => setTimeout(() => client.ws.emit('disconnect'), 500);
6
-
7
5
  describe('terminateClient', () => {
8
6
  beforeAll(async () => {
9
7
  await connectClient();
10
8
  });
11
9
 
12
10
  test('it should terminate client session', async () => {
13
- disconnect().unref();
14
-
15
11
  const expected = Amity.SessionStates.TERMINATED;
16
12
 
17
13
  terminateClient();
@@ -20,8 +16,6 @@ describe('terminateClient', () => {
20
16
  });
21
17
 
22
18
  test('it should clear sessionHandler', async () => {
23
- disconnect().unref();
24
-
25
19
  terminateClient();
26
20
 
27
21
  expect(client.sessionHandler).toBeUndefined();
@@ -38,9 +38,6 @@ export const setClientToken = async (params: Parameters<typeof getToken>[0]) =>
38
38
  isUserDeleted: false,
39
39
  };
40
40
 
41
- // manually setup the token for ws transport
42
- if (client.ws) client.ws.io.opts.query = { token: accessToken };
43
-
44
41
  client.token = { accessToken, issuedAt, expiresAt };
45
42
 
46
43
  setSessionState(Amity.SessionStates.ESTABLISHED);
@@ -43,24 +43,6 @@ export const createEventEmitter = () => {
43
43
  return mitt<Amity.Events>();
44
44
  };
45
45
 
46
- /**
47
- * Wraps the websocket events into the client's event emitter for
48
- * abstraction of transport.
49
- *
50
- * @param ws A websocket connection to listen from
51
- * @param emitter An event emitter to wire the events to
52
- *
53
- * @category Transport
54
- * @hidden
55
- */
56
- export const proxyWebsocketEvents = (ws: Amity.Client['ws'], emitter: Amity.Client['emitter']) => {
57
- WS_EVENTS.forEach(event => {
58
- ws?.on(event, (param: Amity.Events[typeof event]) => {
59
- emitter.emit(event, param);
60
- });
61
- });
62
- };
63
-
64
46
  export const proxyMqttEvents = (
65
47
  mqttClient: Amity.Client['mqtt'],
66
48
  emitter: Amity.Client['emitter'],
@@ -1,3 +1,2 @@
1
1
  export * from './http';
2
- export * from './ws';
3
2
  export * from './mqtt';