@wazo/sdk 0.37.39 → 0.37.42

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 (73) hide show
  1. package/README.md +2 -1
  2. package/dist/wazo-sdk.js +2 -2
  3. package/esm/__tests__/api-client.test.js +33 -15
  4. package/esm/__tests__/web-rtc-client.test.js +39 -18
  5. package/esm/api/auth.js +4 -1
  6. package/esm/api/ctid-ng.js +2 -0
  7. package/esm/api-client.js +33 -15
  8. package/esm/checker/Checker.js +39 -18
  9. package/esm/checker/checks/aor.js +33 -15
  10. package/esm/checker/checks/api.js +33 -15
  11. package/esm/checker/checks/index.js +39 -18
  12. package/esm/checker/checks/webrtc-transport.js +39 -18
  13. package/esm/checker/checks/webrtc.js +39 -18
  14. package/esm/domain/AdHocAPIConference.js +42 -16
  15. package/esm/domain/Features.js +42 -16
  16. package/esm/domain/Phone/CTIPhone.js +42 -16
  17. package/esm/domain/Phone/WebRTCPhone.js +5 -3
  18. package/esm/index.js +77 -21
  19. package/esm/service/CallApi.js +42 -16
  20. package/esm/service/getApiClient.js +51 -17
  21. package/esm/simple/Auth.js +77 -21
  22. package/esm/simple/Configuration.js +77 -21
  23. package/esm/simple/Directory.js +42 -16
  24. package/esm/simple/Phone.js +77 -21
  25. package/esm/simple/index.js +77 -21
  26. package/esm/simple/room/LocalParticipant.js +77 -21
  27. package/esm/simple/room/Participant.js +77 -21
  28. package/esm/simple/room/RemoteParticipant.js +77 -21
  29. package/esm/simple/room/Room.js +77 -21
  30. package/esm/simple/room/SipRoom.js +77 -21
  31. package/esm/simple/room/Stream.js +77 -21
  32. package/esm/simple/room/__tests__/RemoteParticipant.test.js +77 -21
  33. package/esm/simple/utils.js +77 -21
  34. package/esm/web-rtc-client.js +39 -18
  35. package/lib/__tests__/api-client.test.js +33 -15
  36. package/lib/__tests__/web-rtc-client.test.js +39 -18
  37. package/lib/api/auth.js +4 -1
  38. package/lib/api/ctid-ng.js +2 -0
  39. package/lib/api-client.js +33 -15
  40. package/lib/checker/Checker.js +39 -18
  41. package/lib/checker/checks/aor.js +33 -15
  42. package/lib/checker/checks/api.js +33 -15
  43. package/lib/checker/checks/index.js +39 -18
  44. package/lib/checker/checks/webrtc-transport.js +39 -18
  45. package/lib/checker/checks/webrtc.js +39 -18
  46. package/lib/domain/AdHocAPIConference.js +42 -16
  47. package/lib/domain/Features.js +42 -16
  48. package/lib/domain/Phone/CTIPhone.js +42 -16
  49. package/lib/domain/Phone/WebRTCPhone.js +5 -3
  50. package/lib/index.js +77 -21
  51. package/lib/service/CallApi.js +42 -16
  52. package/lib/service/getApiClient.js +52 -16
  53. package/lib/simple/Auth.js +77 -21
  54. package/lib/simple/Configuration.js +77 -21
  55. package/lib/simple/Directory.js +42 -16
  56. package/lib/simple/Phone.js +77 -21
  57. package/lib/simple/index.js +77 -21
  58. package/lib/simple/room/LocalParticipant.js +77 -21
  59. package/lib/simple/room/Participant.js +77 -21
  60. package/lib/simple/room/RemoteParticipant.js +77 -21
  61. package/lib/simple/room/Room.js +77 -21
  62. package/lib/simple/room/SipRoom.js +77 -21
  63. package/lib/simple/room/Stream.js +77 -21
  64. package/lib/simple/room/__tests__/RemoteParticipant.test.js +77 -21
  65. package/lib/simple/utils.js +77 -21
  66. package/lib/web-rtc-client.js +39 -18
  67. package/package.json +1 -1
  68. package/src/api/auth.js +4 -1
  69. package/src/api-client.js +26 -13
  70. package/src/domain/Phone/WebRTCPhone.js +3 -3
  71. package/src/service/getApiClient.js +19 -1
  72. package/src/simple/Auth.js +21 -0
  73. package/src/web-rtc-client.js +7 -4
@@ -888,7 +888,9 @@ global.wazoClients = global.wazoClients || {};
888
888
  global.wazoClientId = global.wazoClientId || {};
889
889
  global.wazoClientToken = global.wazoClientToken || {};
890
890
  global.wazoRefreshToken = global.wazoRefreshToken || {};
891
+ global.wazoRefreshTenantId = global.wazoRefreshTenantId || {};
891
892
  global.wazoOnRefreshToken = global.wazoOnRefreshToken || {};
893
+ global.wazoOnRefreshTokenError = global.wazoOnRefreshTokenError || {};
892
894
  global.wazoRefreshExpiration = global.wazoRefreshExpiration || {};
893
895
  global.wazoRefreshBackend = global.wazoRefreshBackend || {};
894
896
  global.wazoIsMobile = global.wazoIsMobile || {};
@@ -1438,7 +1440,7 @@ class WebRTCPhone extends Emitter {
1438
1440
  // When stopping screenshare and we had video before that, we have to re-upgrade
1439
1441
  // When upgrading directly to screenshare (eg: we don't have a videoLocalStream to replace)
1440
1442
  // We have to downgrade to audio.
1441
- const screenshareStopped = this.currentScreenShare.sender && this.currentScreenShare.hadVideo;
1443
+ const screenshareStopped = this.currentScreenShare.hadVideo;
1442
1444
  const constraints = { audio: false, video: screenshareStopped };
1443
1445
 
1444
1446
  // We have to remove the video sender to be able to re-upgrade to video in `sendReinvite` below
@@ -1882,7 +1884,7 @@ class WebRTCPhone extends Emitter {
1882
1884
 
1883
1885
  logger.info('WebRTC hold sip session', { sipId: sipSession.id, hasVideo });
1884
1886
 
1885
- // Stop screenshre if needed
1887
+ // Stop screenshare if needed
1886
1888
  if (this.currentScreenShare && this.currentScreenShare.sipSessionId === sessionId) {
1887
1889
  this.lastScreenShare = this.currentScreenShare;
1888
1890
  await this.stopScreenSharing(false, callSession);
@@ -2644,7 +2646,7 @@ class WebRTCPhone extends Emitter {
2644
2646
  endTime: fromSession ? fromSession.endTime : null,
2645
2647
  answered: state === SessionState.Established,
2646
2648
  paused: this.client.isCallHeld(sipSession),
2647
- isCaller: 'incoming' in extra ? !extra.incoming : false,
2649
+ isCaller: fromSession ? fromSession.isCaller : ('incoming' in extra ? !extra.incoming : false),
2648
2650
  cameraEnabled: fromSession ? fromSession.isCameraEnabled() : this.client.hasVideo(sessionId),
2649
2651
  number,
2650
2652
  ringing: false,
package/esm/index.js CHANGED
@@ -2266,9 +2266,12 @@ var authMethods = (client , baseUrl ) => ({
2266
2266
  expiration: expiration || DETAULT_EXPIRATION,
2267
2267
  refresh_token: refreshToken,
2268
2268
  client_id: client.clientId,
2269
- tenant_id: tenantId,
2270
2269
  };
2271
2270
 
2271
+ if (tenantId) {
2272
+ body.tenant_id = tenantId;
2273
+ }
2274
+
2272
2275
  const headers = {
2273
2276
  'Content-Type': 'application/json',
2274
2277
  ...(isMobile ? { 'Wazo-Session-Type': 'mobile' } : {}),
@@ -3976,7 +3979,9 @@ global.wazoClients = global.wazoClients || {};
3976
3979
  global.wazoClientId = global.wazoClientId || {};
3977
3980
  global.wazoClientToken = global.wazoClientToken || {};
3978
3981
  global.wazoRefreshToken = global.wazoRefreshToken || {};
3982
+ global.wazoRefreshTenantId = global.wazoRefreshTenantId || {};
3979
3983
  global.wazoOnRefreshToken = global.wazoOnRefreshToken || {};
3984
+ global.wazoOnRefreshTokenError = global.wazoOnRefreshTokenError || {};
3980
3985
  global.wazoRefreshExpiration = global.wazoRefreshExpiration || {};
3981
3986
  global.wazoRefreshBackend = global.wazoRefreshBackend || {};
3982
3987
  global.wazoIsMobile = global.wazoIsMobile || {};
@@ -3998,10 +4003,18 @@ const setRefreshToken = (newRefreshToken , forServer = null) =>
3998
4003
  global.wazoRefreshToken[forServer] = newRefreshToken;
3999
4004
  };
4000
4005
 
4006
+ const setRefreshTenantId = (refreshTenantId , forServer = null) => {
4007
+ global.wazoRefreshTenantId[forServer] = refreshTenantId;
4008
+ };
4009
+
4001
4010
  const setOnRefreshToken = (onRefreshToken , forServer = null) => {
4002
4011
  global.wazoOnRefreshToken[forServer] = onRefreshToken;
4003
4012
  };
4004
4013
 
4014
+ const setOnRefreshTokenError = (callback , forServer = null) => {
4015
+ global.wazoOnRefreshTokenError[forServer] = callback;
4016
+ };
4017
+
4005
4018
  const setRefreshExpiration = (refreshExpiration , forServer = null) => {
4006
4019
  global.wazoRefreshExpiration[forServer] = refreshExpiration;
4007
4020
  };
@@ -4020,12 +4033,20 @@ const fillClient = (apiClient ) => {
4020
4033
 
4021
4034
  apiClient.setRefreshToken(global.wazoRefreshToken[server] || global.wazoRefreshToken[null] || apiClient.refreshToken);
4022
4035
 
4036
+ apiClient.setRefreshTenantId(
4037
+ global.wazoRefreshTenantId[server] || global.wazoRefreshTenantId[null] || apiClient.refreshTenantId,
4038
+ );
4039
+
4023
4040
  apiClient.setFetchOptions(global.wazoFetchOptions[server] || global.wazoFetchOptions[null] || apiClient.fetchOptions);
4024
4041
 
4025
4042
  apiClient.setOnRefreshToken(
4026
4043
  global.wazoOnRefreshToken[server] || global.wazoOnRefreshToken[null] || apiClient.onRefreshToken,
4027
4044
  );
4028
4045
 
4046
+ apiClient.setOnRefreshTokenError(
4047
+ global.wazoOnRefreshTokenError[server] || global.wazoOnRefreshTokenError[null] || apiClient.onRefreshTokenError,
4048
+ );
4049
+
4029
4050
  apiClient.setRefreshExpiration(
4030
4051
  global.wazoRefreshExpiration[server] || global.wazoRefreshExpiration[null] || apiClient.refreshExpiration,
4031
4052
  );
@@ -4039,7 +4060,7 @@ const fillClient = (apiClient ) => {
4039
4060
  return apiClient;
4040
4061
  };
4041
4062
 
4042
- var getApiClient = (forServer ) => {
4063
+ var getApiClient = (forServer = null) => {
4043
4064
  const server = forServer || global.wazoCurrentServer || '';
4044
4065
  if (server in global.wazoClients) {
4045
4066
  return fillClient(global.wazoClients[server]);
@@ -5499,6 +5520,7 @@ class ApiClient {
5499
5520
 
5500
5521
 
5501
5522
 
5523
+
5502
5524
 
5503
5525
 
5504
5526
 
@@ -5551,23 +5573,31 @@ class ApiClient {
5551
5573
  return null;
5552
5574
  }
5553
5575
 
5554
- const session = await this.auth.refreshToken(
5555
- this.refreshToken,
5556
- this.refreshBackend,
5557
- this.refreshExpiration,
5558
- this.isMobile,
5559
- this.refreshTenantId,
5560
- );
5576
+ try {
5577
+ const session = await this.auth.refreshToken(
5578
+ this.refreshToken,
5579
+ this.refreshBackend,
5580
+ this.refreshExpiration,
5581
+ this.isMobile,
5582
+ this.refreshTenantId,
5583
+ );
5561
5584
 
5562
- logger$a.info('token refreshed', { token: session.token });
5585
+ logger$a.info('token refreshed', { token: session.token });
5563
5586
 
5564
- if (this.onRefreshToken) {
5565
- this.onRefreshToken(session.token, session);
5566
- }
5587
+ if (this.onRefreshToken) {
5588
+ this.onRefreshToken(session.token, session);
5589
+ }
5590
+
5591
+ this.setToken(session.token);
5567
5592
 
5568
- this.setToken(session.token);
5593
+ return session.token;
5594
+ } catch (error) {
5595
+ logger$a.error('token refresh, error', error);
5569
5596
 
5570
- return session.token;
5597
+ if (this.onRefreshTokenError) {
5598
+ this.onRefreshTokenError(error);
5599
+ }
5600
+ }
5571
5601
  }
5572
5602
 
5573
5603
  setToken(token ) {
@@ -5590,6 +5620,10 @@ class ApiClient {
5590
5620
  this.onRefreshToken = onRefreshToken;
5591
5621
  }
5592
5622
 
5623
+ setOnRefreshTokenError(callback ) {
5624
+ this.onRefreshTokenError = callback;
5625
+ }
5626
+
5593
5627
  setRefreshExpiration(refreshExpiration ) {
5594
5628
  this.refreshExpiration = refreshExpiration;
5595
5629
  }
@@ -8275,11 +8309,14 @@ class WebRTCClient extends Emitter {
8275
8309
  }
8276
8310
 
8277
8311
  async _disconnectTransport(force = false) {
8278
- if (force) {
8312
+ if (force && this.userAgent && this.userAgent.transport) {
8279
8313
  // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8280
8314
  this.userAgent.transport.disconnectResolve = () => {};
8281
- // eslint-disable-next-line
8282
- this.userAgent.transport._ws.close(1000);
8315
+
8316
+ if (this.userAgent.transport._ws) {
8317
+ this.userAgent.transport._ws.close(1000);
8318
+ }
8319
+
8283
8320
  return;
8284
8321
  }
8285
8322
 
@@ -9832,7 +9869,7 @@ class WebRTCPhone extends Emitter {
9832
9869
  // When stopping screenshare and we had video before that, we have to re-upgrade
9833
9870
  // When upgrading directly to screenshare (eg: we don't have a videoLocalStream to replace)
9834
9871
  // We have to downgrade to audio.
9835
- const screenshareStopped = this.currentScreenShare.sender && this.currentScreenShare.hadVideo;
9872
+ const screenshareStopped = this.currentScreenShare.hadVideo;
9836
9873
  const constraints = { audio: false, video: screenshareStopped };
9837
9874
 
9838
9875
  // We have to remove the video sender to be able to re-upgrade to video in `sendReinvite` below
@@ -10276,7 +10313,7 @@ class WebRTCPhone extends Emitter {
10276
10313
 
10277
10314
  logger$7.info('WebRTC hold sip session', { sipId: sipSession.id, hasVideo });
10278
10315
 
10279
- // Stop screenshre if needed
10316
+ // Stop screenshare if needed
10280
10317
  if (this.currentScreenShare && this.currentScreenShare.sipSessionId === sessionId) {
10281
10318
  this.lastScreenShare = this.currentScreenShare;
10282
10319
  await this.stopScreenSharing(false, callSession);
@@ -11038,7 +11075,7 @@ class WebRTCPhone extends Emitter {
11038
11075
  endTime: fromSession ? fromSession.endTime : null,
11039
11076
  answered: state === SessionState.Established,
11040
11077
  paused: this.client.isCallHeld(sipSession),
11041
- isCaller: 'incoming' in extra ? !extra.incoming : false,
11078
+ isCaller: fromSession ? fromSession.isCaller : ('incoming' in extra ? !extra.incoming : false),
11042
11079
  cameraEnabled: fromSession ? fromSession.isCameraEnabled() : this.client.hasVideo(sessionId),
11043
11080
  number,
11044
11081
  ringing: false,
@@ -11718,6 +11755,7 @@ class Auth {
11718
11755
 
11719
11756
 
11720
11757
 
11758
+
11721
11759
 
11722
11760
 
11723
11761
 
@@ -11755,6 +11793,14 @@ class Auth {
11755
11793
  this.onRefreshTokenCallback(token, session);
11756
11794
  }
11757
11795
  });
11796
+
11797
+ setOnRefreshTokenError(error => {
11798
+ logger$5.error('on refresh token error', error);
11799
+
11800
+ if (this.onRefreshTokenCallbackError) {
11801
+ this.onRefreshTokenCallbackError(error);
11802
+ }
11803
+ });
11758
11804
  }
11759
11805
 
11760
11806
  setFetchOptions(options ) {
@@ -11843,6 +11889,10 @@ class Auth {
11843
11889
  this.onRefreshTokenCallback = callback;
11844
11890
  }
11845
11891
 
11892
+ setOnRefreshTokenError(callback ) {
11893
+ this.onRefreshTokenCallbackError = callback;
11894
+ }
11895
+
11846
11896
  checkAuthorizations(session , authorizationName ) {
11847
11897
  if (!authorizationName) {
11848
11898
  return;
@@ -11875,6 +11925,12 @@ class Auth {
11875
11925
  setRefreshToken(refreshToken);
11876
11926
  }
11877
11927
 
11928
+ setRefreshTenantId(refreshTenantId ) {
11929
+ setRefreshTenantId(refreshTenantId);
11930
+
11931
+ getApiClient().setRefreshTenantId(refreshTenantId);
11932
+ }
11933
+
11878
11934
  forceRefreshToken() {
11879
11935
  getApiClient().forceRefreshToken();
11880
11936
  }
@@ -2785,9 +2785,12 @@ var authMethods = (client , baseUrl ) => ({
2785
2785
  expiration: expiration || DETAULT_EXPIRATION,
2786
2786
  refresh_token: refreshToken,
2787
2787
  client_id: client.clientId,
2788
- tenant_id: tenantId,
2789
2788
  };
2790
2789
 
2790
+ if (tenantId) {
2791
+ body.tenant_id = tenantId;
2792
+ }
2793
+
2791
2794
  const headers = {
2792
2795
  'Content-Type': 'application/json',
2793
2796
  ...(isMobile ? { 'Wazo-Session-Type': 'mobile' } : {}),
@@ -4566,6 +4569,7 @@ class ApiClient {
4566
4569
 
4567
4570
 
4568
4571
 
4572
+
4569
4573
 
4570
4574
 
4571
4575
 
@@ -4618,23 +4622,31 @@ class ApiClient {
4618
4622
  return null;
4619
4623
  }
4620
4624
 
4621
- const session = await this.auth.refreshToken(
4622
- this.refreshToken,
4623
- this.refreshBackend,
4624
- this.refreshExpiration,
4625
- this.isMobile,
4626
- this.refreshTenantId,
4627
- );
4628
-
4629
- logger.info('token refreshed', { token: session.token });
4625
+ try {
4626
+ const session = await this.auth.refreshToken(
4627
+ this.refreshToken,
4628
+ this.refreshBackend,
4629
+ this.refreshExpiration,
4630
+ this.isMobile,
4631
+ this.refreshTenantId,
4632
+ );
4633
+
4634
+ logger.info('token refreshed', { token: session.token });
4635
+
4636
+ if (this.onRefreshToken) {
4637
+ this.onRefreshToken(session.token, session);
4638
+ }
4630
4639
 
4631
- if (this.onRefreshToken) {
4632
- this.onRefreshToken(session.token, session);
4633
- }
4640
+ this.setToken(session.token);
4634
4641
 
4635
- this.setToken(session.token);
4642
+ return session.token;
4643
+ } catch (error) {
4644
+ logger.error('token refresh, error', error);
4636
4645
 
4637
- return session.token;
4646
+ if (this.onRefreshTokenError) {
4647
+ this.onRefreshTokenError(error);
4648
+ }
4649
+ }
4638
4650
  }
4639
4651
 
4640
4652
  setToken(token ) {
@@ -4657,6 +4669,10 @@ class ApiClient {
4657
4669
  this.onRefreshToken = onRefreshToken;
4658
4670
  }
4659
4671
 
4672
+ setOnRefreshTokenError(callback ) {
4673
+ this.onRefreshTokenError = callback;
4674
+ }
4675
+
4660
4676
  setRefreshExpiration(refreshExpiration ) {
4661
4677
  this.refreshExpiration = refreshExpiration;
4662
4678
  }
@@ -4692,7 +4708,9 @@ global.wazoClients = global.wazoClients || {};
4692
4708
  global.wazoClientId = global.wazoClientId || {};
4693
4709
  global.wazoClientToken = global.wazoClientToken || {};
4694
4710
  global.wazoRefreshToken = global.wazoRefreshToken || {};
4711
+ global.wazoRefreshTenantId = global.wazoRefreshTenantId || {};
4695
4712
  global.wazoOnRefreshToken = global.wazoOnRefreshToken || {};
4713
+ global.wazoOnRefreshTokenError = global.wazoOnRefreshTokenError || {};
4696
4714
  global.wazoRefreshExpiration = global.wazoRefreshExpiration || {};
4697
4715
  global.wazoRefreshBackend = global.wazoRefreshBackend || {};
4698
4716
  global.wazoIsMobile = global.wazoIsMobile || {};
@@ -4708,12 +4726,20 @@ const fillClient = (apiClient ) => {
4708
4726
 
4709
4727
  apiClient.setRefreshToken(global.wazoRefreshToken[server] || global.wazoRefreshToken[null] || apiClient.refreshToken);
4710
4728
 
4729
+ apiClient.setRefreshTenantId(
4730
+ global.wazoRefreshTenantId[server] || global.wazoRefreshTenantId[null] || apiClient.refreshTenantId,
4731
+ );
4732
+
4711
4733
  apiClient.setFetchOptions(global.wazoFetchOptions[server] || global.wazoFetchOptions[null] || apiClient.fetchOptions);
4712
4734
 
4713
4735
  apiClient.setOnRefreshToken(
4714
4736
  global.wazoOnRefreshToken[server] || global.wazoOnRefreshToken[null] || apiClient.onRefreshToken,
4715
4737
  );
4716
4738
 
4739
+ apiClient.setOnRefreshTokenError(
4740
+ global.wazoOnRefreshTokenError[server] || global.wazoOnRefreshTokenError[null] || apiClient.onRefreshTokenError,
4741
+ );
4742
+
4717
4743
  apiClient.setRefreshExpiration(
4718
4744
  global.wazoRefreshExpiration[server] || global.wazoRefreshExpiration[null] || apiClient.refreshExpiration,
4719
4745
  );
@@ -4727,7 +4753,7 @@ const fillClient = (apiClient ) => {
4727
4753
  return apiClient;
4728
4754
  };
4729
4755
 
4730
- var getApiClient = (forServer ) => {
4756
+ var getApiClient = (forServer = null) => {
4731
4757
  const server = forServer || global.wazoCurrentServer || '';
4732
4758
  if (server in global.wazoClients) {
4733
4759
  return fillClient(global.wazoClients[server]);
@@ -2245,9 +2245,12 @@ var authMethods = (client , baseUrl ) => ({
2245
2245
  expiration: expiration || DETAULT_EXPIRATION,
2246
2246
  refresh_token: refreshToken,
2247
2247
  client_id: client.clientId,
2248
- tenant_id: tenantId,
2249
2248
  };
2250
2249
 
2250
+ if (tenantId) {
2251
+ body.tenant_id = tenantId;
2252
+ }
2253
+
2251
2254
  const headers = {
2252
2255
  'Content-Type': 'application/json',
2253
2256
  ...(isMobile ? { 'Wazo-Session-Type': 'mobile' } : {}),
@@ -4566,6 +4569,7 @@ class ApiClient {
4566
4569
 
4567
4570
 
4568
4571
 
4572
+
4569
4573
 
4570
4574
 
4571
4575
 
@@ -4618,23 +4622,31 @@ class ApiClient {
4618
4622
  return null;
4619
4623
  }
4620
4624
 
4621
- const session = await this.auth.refreshToken(
4622
- this.refreshToken,
4623
- this.refreshBackend,
4624
- this.refreshExpiration,
4625
- this.isMobile,
4626
- this.refreshTenantId,
4627
- );
4628
-
4629
- logger.info('token refreshed', { token: session.token });
4625
+ try {
4626
+ const session = await this.auth.refreshToken(
4627
+ this.refreshToken,
4628
+ this.refreshBackend,
4629
+ this.refreshExpiration,
4630
+ this.isMobile,
4631
+ this.refreshTenantId,
4632
+ );
4633
+
4634
+ logger.info('token refreshed', { token: session.token });
4635
+
4636
+ if (this.onRefreshToken) {
4637
+ this.onRefreshToken(session.token, session);
4638
+ }
4630
4639
 
4631
- if (this.onRefreshToken) {
4632
- this.onRefreshToken(session.token, session);
4633
- }
4640
+ this.setToken(session.token);
4634
4641
 
4635
- this.setToken(session.token);
4642
+ return session.token;
4643
+ } catch (error) {
4644
+ logger.error('token refresh, error', error);
4636
4645
 
4637
- return session.token;
4646
+ if (this.onRefreshTokenError) {
4647
+ this.onRefreshTokenError(error);
4648
+ }
4649
+ }
4638
4650
  }
4639
4651
 
4640
4652
  setToken(token ) {
@@ -4657,6 +4669,10 @@ class ApiClient {
4657
4669
  this.onRefreshToken = onRefreshToken;
4658
4670
  }
4659
4671
 
4672
+ setOnRefreshTokenError(callback ) {
4673
+ this.onRefreshTokenError = callback;
4674
+ }
4675
+
4660
4676
  setRefreshExpiration(refreshExpiration ) {
4661
4677
  this.refreshExpiration = refreshExpiration;
4662
4678
  }
@@ -4692,7 +4708,9 @@ global.wazoClients = global.wazoClients || {};
4692
4708
  global.wazoClientId = global.wazoClientId || {};
4693
4709
  global.wazoClientToken = global.wazoClientToken || {};
4694
4710
  global.wazoRefreshToken = global.wazoRefreshToken || {};
4711
+ global.wazoRefreshTenantId = global.wazoRefreshTenantId || {};
4695
4712
  global.wazoOnRefreshToken = global.wazoOnRefreshToken || {};
4713
+ global.wazoOnRefreshTokenError = global.wazoOnRefreshTokenError || {};
4696
4714
  global.wazoRefreshExpiration = global.wazoRefreshExpiration || {};
4697
4715
  global.wazoRefreshBackend = global.wazoRefreshBackend || {};
4698
4716
  global.wazoIsMobile = global.wazoIsMobile || {};
@@ -4714,10 +4732,18 @@ const setRefreshToken = (newRefreshToken , forServer = null) =>
4714
4732
  global.wazoRefreshToken[forServer] = newRefreshToken;
4715
4733
  };
4716
4734
 
4735
+ const setRefreshTenantId = (refreshTenantId , forServer = null) => {
4736
+ global.wazoRefreshTenantId[forServer] = refreshTenantId;
4737
+ };
4738
+
4717
4739
  const setOnRefreshToken = (onRefreshToken , forServer = null) => {
4718
4740
  global.wazoOnRefreshToken[forServer] = onRefreshToken;
4719
4741
  };
4720
4742
 
4743
+ const setOnRefreshTokenError = (callback , forServer = null) => {
4744
+ global.wazoOnRefreshTokenError[forServer] = callback;
4745
+ };
4746
+
4721
4747
  const setRefreshExpiration = (refreshExpiration , forServer = null) => {
4722
4748
  global.wazoRefreshExpiration[forServer] = refreshExpiration;
4723
4749
  };
@@ -4744,12 +4770,20 @@ const fillClient = (apiClient ) => {
4744
4770
 
4745
4771
  apiClient.setRefreshToken(global.wazoRefreshToken[server] || global.wazoRefreshToken[null] || apiClient.refreshToken);
4746
4772
 
4773
+ apiClient.setRefreshTenantId(
4774
+ global.wazoRefreshTenantId[server] || global.wazoRefreshTenantId[null] || apiClient.refreshTenantId,
4775
+ );
4776
+
4747
4777
  apiClient.setFetchOptions(global.wazoFetchOptions[server] || global.wazoFetchOptions[null] || apiClient.fetchOptions);
4748
4778
 
4749
4779
  apiClient.setOnRefreshToken(
4750
4780
  global.wazoOnRefreshToken[server] || global.wazoOnRefreshToken[null] || apiClient.onRefreshToken,
4751
4781
  );
4752
4782
 
4783
+ apiClient.setOnRefreshTokenError(
4784
+ global.wazoOnRefreshTokenError[server] || global.wazoOnRefreshTokenError[null] || apiClient.onRefreshTokenError,
4785
+ );
4786
+
4753
4787
  apiClient.setRefreshExpiration(
4754
4788
  global.wazoRefreshExpiration[server] || global.wazoRefreshExpiration[null] || apiClient.refreshExpiration,
4755
4789
  );
@@ -4763,7 +4797,7 @@ const fillClient = (apiClient ) => {
4763
4797
  return apiClient;
4764
4798
  };
4765
4799
 
4766
- var getApiClient = (forServer ) => {
4800
+ var getApiClient = (forServer = null) => {
4767
4801
  const server = forServer || global.wazoCurrentServer || '';
4768
4802
  if (server in global.wazoClients) {
4769
4803
  return fillClient(global.wazoClients[server]);
@@ -4775,4 +4809,4 @@ var getApiClient = (forServer ) => {
4775
4809
  };
4776
4810
 
4777
4811
  export default getApiClient;
4778
- export { setApiClientId, setApiToken, setCurrentServer, setFetchOptions, setIsMobile, setOnRefreshToken, setRefreshBackend, setRefreshExpiration, setRefreshToken };
4812
+ export { setApiClientId, setApiToken, setCurrentServer, setFetchOptions, setIsMobile, setOnRefreshToken, setOnRefreshTokenError, setRefreshBackend, setRefreshExpiration, setRefreshTenantId, setRefreshToken };