@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
@@ -2868,9 +2868,12 @@ var authMethods = (client , baseUrl ) => ({
2868
2868
  expiration: expiration || DETAULT_EXPIRATION,
2869
2869
  refresh_token: refreshToken,
2870
2870
  client_id: client.clientId,
2871
- tenant_id: tenantId,
2872
2871
  };
2873
2872
 
2873
+ if (tenantId) {
2874
+ body.tenant_id = tenantId;
2875
+ }
2876
+
2874
2877
  const headers = {
2875
2878
  'Content-Type': 'application/json',
2876
2879
  ...(isMobile ? { 'Wazo-Session-Type': 'mobile' } : {}),
@@ -5415,6 +5418,7 @@ class ApiClient {
5415
5418
 
5416
5419
 
5417
5420
 
5421
+
5418
5422
 
5419
5423
 
5420
5424
 
@@ -5467,23 +5471,31 @@ class ApiClient {
5467
5471
  return null;
5468
5472
  }
5469
5473
 
5470
- const session = await this.auth.refreshToken(
5471
- this.refreshToken,
5472
- this.refreshBackend,
5473
- this.refreshExpiration,
5474
- this.isMobile,
5475
- this.refreshTenantId,
5476
- );
5474
+ try {
5475
+ const session = await this.auth.refreshToken(
5476
+ this.refreshToken,
5477
+ this.refreshBackend,
5478
+ this.refreshExpiration,
5479
+ this.isMobile,
5480
+ this.refreshTenantId,
5481
+ );
5477
5482
 
5478
- logger$a.info('token refreshed', { token: session.token });
5483
+ logger$a.info('token refreshed', { token: session.token });
5479
5484
 
5480
- if (this.onRefreshToken) {
5481
- this.onRefreshToken(session.token, session);
5482
- }
5485
+ if (this.onRefreshToken) {
5486
+ this.onRefreshToken(session.token, session);
5487
+ }
5483
5488
 
5484
- this.setToken(session.token);
5489
+ this.setToken(session.token);
5490
+
5491
+ return session.token;
5492
+ } catch (error) {
5493
+ logger$a.error('token refresh, error', error);
5485
5494
 
5486
- return session.token;
5495
+ if (this.onRefreshTokenError) {
5496
+ this.onRefreshTokenError(error);
5497
+ }
5498
+ }
5487
5499
  }
5488
5500
 
5489
5501
  setToken(token ) {
@@ -5506,6 +5518,10 @@ class ApiClient {
5506
5518
  this.onRefreshToken = onRefreshToken;
5507
5519
  }
5508
5520
 
5521
+ setOnRefreshTokenError(callback ) {
5522
+ this.onRefreshTokenError = callback;
5523
+ }
5524
+
5509
5525
  setRefreshExpiration(refreshExpiration ) {
5510
5526
  this.refreshExpiration = refreshExpiration;
5511
5527
  }
@@ -5541,7 +5557,9 @@ global.wazoClients = global.wazoClients || {};
5541
5557
  global.wazoClientId = global.wazoClientId || {};
5542
5558
  global.wazoClientToken = global.wazoClientToken || {};
5543
5559
  global.wazoRefreshToken = global.wazoRefreshToken || {};
5560
+ global.wazoRefreshTenantId = global.wazoRefreshTenantId || {};
5544
5561
  global.wazoOnRefreshToken = global.wazoOnRefreshToken || {};
5562
+ global.wazoOnRefreshTokenError = global.wazoOnRefreshTokenError || {};
5545
5563
  global.wazoRefreshExpiration = global.wazoRefreshExpiration || {};
5546
5564
  global.wazoRefreshBackend = global.wazoRefreshBackend || {};
5547
5565
  global.wazoIsMobile = global.wazoIsMobile || {};
@@ -5563,10 +5581,18 @@ const setRefreshToken = (newRefreshToken , forServer = null) =>
5563
5581
  global.wazoRefreshToken[forServer] = newRefreshToken;
5564
5582
  };
5565
5583
 
5584
+ const setRefreshTenantId = (refreshTenantId , forServer = null) => {
5585
+ global.wazoRefreshTenantId[forServer] = refreshTenantId;
5586
+ };
5587
+
5566
5588
  const setOnRefreshToken = (onRefreshToken , forServer = null) => {
5567
5589
  global.wazoOnRefreshToken[forServer] = onRefreshToken;
5568
5590
  };
5569
5591
 
5592
+ const setOnRefreshTokenError = (callback , forServer = null) => {
5593
+ global.wazoOnRefreshTokenError[forServer] = callback;
5594
+ };
5595
+
5570
5596
  const setRefreshExpiration = (refreshExpiration , forServer = null) => {
5571
5597
  global.wazoRefreshExpiration[forServer] = refreshExpiration;
5572
5598
  };
@@ -5585,12 +5611,20 @@ const fillClient = (apiClient ) => {
5585
5611
 
5586
5612
  apiClient.setRefreshToken(global.wazoRefreshToken[server] || global.wazoRefreshToken[null] || apiClient.refreshToken);
5587
5613
 
5614
+ apiClient.setRefreshTenantId(
5615
+ global.wazoRefreshTenantId[server] || global.wazoRefreshTenantId[null] || apiClient.refreshTenantId,
5616
+ );
5617
+
5588
5618
  apiClient.setFetchOptions(global.wazoFetchOptions[server] || global.wazoFetchOptions[null] || apiClient.fetchOptions);
5589
5619
 
5590
5620
  apiClient.setOnRefreshToken(
5591
5621
  global.wazoOnRefreshToken[server] || global.wazoOnRefreshToken[null] || apiClient.onRefreshToken,
5592
5622
  );
5593
5623
 
5624
+ apiClient.setOnRefreshTokenError(
5625
+ global.wazoOnRefreshTokenError[server] || global.wazoOnRefreshTokenError[null] || apiClient.onRefreshTokenError,
5626
+ );
5627
+
5594
5628
  apiClient.setRefreshExpiration(
5595
5629
  global.wazoRefreshExpiration[server] || global.wazoRefreshExpiration[null] || apiClient.refreshExpiration,
5596
5630
  );
@@ -5604,7 +5638,7 @@ const fillClient = (apiClient ) => {
5604
5638
  return apiClient;
5605
5639
  };
5606
5640
 
5607
- var getApiClient = (forServer ) => {
5641
+ var getApiClient = (forServer = null) => {
5608
5642
  const server = forServer || global.wazoCurrentServer || '';
5609
5643
  if (server in global.wazoClients) {
5610
5644
  return fillClient(global.wazoClients[server]);
@@ -8453,11 +8487,14 @@ class WebRTCClient extends Emitter {
8453
8487
  }
8454
8488
 
8455
8489
  async _disconnectTransport(force = false) {
8456
- if (force) {
8490
+ if (force && this.userAgent && this.userAgent.transport) {
8457
8491
  // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8458
8492
  this.userAgent.transport.disconnectResolve = () => {};
8459
- // eslint-disable-next-line
8460
- this.userAgent.transport._ws.close(1000);
8493
+
8494
+ if (this.userAgent.transport._ws) {
8495
+ this.userAgent.transport._ws.close(1000);
8496
+ }
8497
+
8461
8498
  return;
8462
8499
  }
8463
8500
 
@@ -9109,7 +9146,7 @@ class WebRTCPhone extends Emitter {
9109
9146
  // When stopping screenshare and we had video before that, we have to re-upgrade
9110
9147
  // When upgrading directly to screenshare (eg: we don't have a videoLocalStream to replace)
9111
9148
  // We have to downgrade to audio.
9112
- const screenshareStopped = this.currentScreenShare.sender && this.currentScreenShare.hadVideo;
9149
+ const screenshareStopped = this.currentScreenShare.hadVideo;
9113
9150
  const constraints = { audio: false, video: screenshareStopped };
9114
9151
 
9115
9152
  // We have to remove the video sender to be able to re-upgrade to video in `sendReinvite` below
@@ -9553,7 +9590,7 @@ class WebRTCPhone extends Emitter {
9553
9590
 
9554
9591
  logger$8.info('WebRTC hold sip session', { sipId: sipSession.id, hasVideo });
9555
9592
 
9556
- // Stop screenshre if needed
9593
+ // Stop screenshare if needed
9557
9594
  if (this.currentScreenShare && this.currentScreenShare.sipSessionId === sessionId) {
9558
9595
  this.lastScreenShare = this.currentScreenShare;
9559
9596
  await this.stopScreenSharing(false, callSession);
@@ -10315,7 +10352,7 @@ class WebRTCPhone extends Emitter {
10315
10352
  endTime: fromSession ? fromSession.endTime : null,
10316
10353
  answered: state === SessionState.Established,
10317
10354
  paused: this.client.isCallHeld(sipSession),
10318
- isCaller: 'incoming' in extra ? !extra.incoming : false,
10355
+ isCaller: fromSession ? fromSession.isCaller : ('incoming' in extra ? !extra.incoming : false),
10319
10356
  cameraEnabled: fromSession ? fromSession.isCameraEnabled() : this.client.hasVideo(sessionId),
10320
10357
  number,
10321
10358
  ringing: false,
@@ -10399,6 +10436,7 @@ class Auth {
10399
10436
 
10400
10437
 
10401
10438
 
10439
+
10402
10440
 
10403
10441
 
10404
10442
 
@@ -10436,6 +10474,14 @@ class Auth {
10436
10474
  this.onRefreshTokenCallback(token, session);
10437
10475
  }
10438
10476
  });
10477
+
10478
+ setOnRefreshTokenError(error => {
10479
+ logger$7.error('on refresh token error', error);
10480
+
10481
+ if (this.onRefreshTokenCallbackError) {
10482
+ this.onRefreshTokenCallbackError(error);
10483
+ }
10484
+ });
10439
10485
  }
10440
10486
 
10441
10487
  setFetchOptions(options ) {
@@ -10524,6 +10570,10 @@ class Auth {
10524
10570
  this.onRefreshTokenCallback = callback;
10525
10571
  }
10526
10572
 
10573
+ setOnRefreshTokenError(callback ) {
10574
+ this.onRefreshTokenCallbackError = callback;
10575
+ }
10576
+
10527
10577
  checkAuthorizations(session , authorizationName ) {
10528
10578
  if (!authorizationName) {
10529
10579
  return;
@@ -10556,6 +10606,12 @@ class Auth {
10556
10606
  setRefreshToken(refreshToken);
10557
10607
  }
10558
10608
 
10609
+ setRefreshTenantId(refreshTenantId ) {
10610
+ setRefreshTenantId(refreshTenantId);
10611
+
10612
+ getApiClient().setRefreshTenantId(refreshTenantId);
10613
+ }
10614
+
10559
10615
  forceRefreshToken() {
10560
10616
  getApiClient().forceRefreshToken();
10561
10617
  }
@@ -2265,9 +2265,12 @@ var authMethods = (client , baseUrl ) => ({
2265
2265
  expiration: expiration || DETAULT_EXPIRATION,
2266
2266
  refresh_token: refreshToken,
2267
2267
  client_id: client.clientId,
2268
- tenant_id: tenantId,
2269
2268
  };
2270
2269
 
2270
+ if (tenantId) {
2271
+ body.tenant_id = tenantId;
2272
+ }
2273
+
2271
2274
  const headers = {
2272
2275
  'Content-Type': 'application/json',
2273
2276
  ...(isMobile ? { 'Wazo-Session-Type': 'mobile' } : {}),
@@ -5415,6 +5418,7 @@ class ApiClient {
5415
5418
 
5416
5419
 
5417
5420
 
5421
+
5418
5422
 
5419
5423
 
5420
5424
 
@@ -5467,23 +5471,31 @@ class ApiClient {
5467
5471
  return null;
5468
5472
  }
5469
5473
 
5470
- const session = await this.auth.refreshToken(
5471
- this.refreshToken,
5472
- this.refreshBackend,
5473
- this.refreshExpiration,
5474
- this.isMobile,
5475
- this.refreshTenantId,
5476
- );
5474
+ try {
5475
+ const session = await this.auth.refreshToken(
5476
+ this.refreshToken,
5477
+ this.refreshBackend,
5478
+ this.refreshExpiration,
5479
+ this.isMobile,
5480
+ this.refreshTenantId,
5481
+ );
5477
5482
 
5478
- logger$a.info('token refreshed', { token: session.token });
5483
+ logger$a.info('token refreshed', { token: session.token });
5479
5484
 
5480
- if (this.onRefreshToken) {
5481
- this.onRefreshToken(session.token, session);
5482
- }
5485
+ if (this.onRefreshToken) {
5486
+ this.onRefreshToken(session.token, session);
5487
+ }
5483
5488
 
5484
- this.setToken(session.token);
5489
+ this.setToken(session.token);
5490
+
5491
+ return session.token;
5492
+ } catch (error) {
5493
+ logger$a.error('token refresh, error', error);
5485
5494
 
5486
- return session.token;
5495
+ if (this.onRefreshTokenError) {
5496
+ this.onRefreshTokenError(error);
5497
+ }
5498
+ }
5487
5499
  }
5488
5500
 
5489
5501
  setToken(token ) {
@@ -5506,6 +5518,10 @@ class ApiClient {
5506
5518
  this.onRefreshToken = onRefreshToken;
5507
5519
  }
5508
5520
 
5521
+ setOnRefreshTokenError(callback ) {
5522
+ this.onRefreshTokenError = callback;
5523
+ }
5524
+
5509
5525
  setRefreshExpiration(refreshExpiration ) {
5510
5526
  this.refreshExpiration = refreshExpiration;
5511
5527
  }
@@ -5541,7 +5557,9 @@ global.wazoClients = global.wazoClients || {};
5541
5557
  global.wazoClientId = global.wazoClientId || {};
5542
5558
  global.wazoClientToken = global.wazoClientToken || {};
5543
5559
  global.wazoRefreshToken = global.wazoRefreshToken || {};
5560
+ global.wazoRefreshTenantId = global.wazoRefreshTenantId || {};
5544
5561
  global.wazoOnRefreshToken = global.wazoOnRefreshToken || {};
5562
+ global.wazoOnRefreshTokenError = global.wazoOnRefreshTokenError || {};
5545
5563
  global.wazoRefreshExpiration = global.wazoRefreshExpiration || {};
5546
5564
  global.wazoRefreshBackend = global.wazoRefreshBackend || {};
5547
5565
  global.wazoIsMobile = global.wazoIsMobile || {};
@@ -5563,10 +5581,18 @@ const setRefreshToken = (newRefreshToken , forServer = null) =>
5563
5581
  global.wazoRefreshToken[forServer] = newRefreshToken;
5564
5582
  };
5565
5583
 
5584
+ const setRefreshTenantId = (refreshTenantId , forServer = null) => {
5585
+ global.wazoRefreshTenantId[forServer] = refreshTenantId;
5586
+ };
5587
+
5566
5588
  const setOnRefreshToken = (onRefreshToken , forServer = null) => {
5567
5589
  global.wazoOnRefreshToken[forServer] = onRefreshToken;
5568
5590
  };
5569
5591
 
5592
+ const setOnRefreshTokenError = (callback , forServer = null) => {
5593
+ global.wazoOnRefreshTokenError[forServer] = callback;
5594
+ };
5595
+
5570
5596
  const setRefreshExpiration = (refreshExpiration , forServer = null) => {
5571
5597
  global.wazoRefreshExpiration[forServer] = refreshExpiration;
5572
5598
  };
@@ -5585,12 +5611,20 @@ const fillClient = (apiClient ) => {
5585
5611
 
5586
5612
  apiClient.setRefreshToken(global.wazoRefreshToken[server] || global.wazoRefreshToken[null] || apiClient.refreshToken);
5587
5613
 
5614
+ apiClient.setRefreshTenantId(
5615
+ global.wazoRefreshTenantId[server] || global.wazoRefreshTenantId[null] || apiClient.refreshTenantId,
5616
+ );
5617
+
5588
5618
  apiClient.setFetchOptions(global.wazoFetchOptions[server] || global.wazoFetchOptions[null] || apiClient.fetchOptions);
5589
5619
 
5590
5620
  apiClient.setOnRefreshToken(
5591
5621
  global.wazoOnRefreshToken[server] || global.wazoOnRefreshToken[null] || apiClient.onRefreshToken,
5592
5622
  );
5593
5623
 
5624
+ apiClient.setOnRefreshTokenError(
5625
+ global.wazoOnRefreshTokenError[server] || global.wazoOnRefreshTokenError[null] || apiClient.onRefreshTokenError,
5626
+ );
5627
+
5594
5628
  apiClient.setRefreshExpiration(
5595
5629
  global.wazoRefreshExpiration[server] || global.wazoRefreshExpiration[null] || apiClient.refreshExpiration,
5596
5630
  );
@@ -5604,7 +5638,7 @@ const fillClient = (apiClient ) => {
5604
5638
  return apiClient;
5605
5639
  };
5606
5640
 
5607
- var getApiClient = (forServer ) => {
5641
+ var getApiClient = (forServer = null) => {
5608
5642
  const server = forServer || global.wazoCurrentServer || '';
5609
5643
  if (server in global.wazoClients) {
5610
5644
  return fillClient(global.wazoClients[server]);
@@ -5631,6 +5665,7 @@ class Auth {
5631
5665
 
5632
5666
 
5633
5667
 
5668
+
5634
5669
 
5635
5670
 
5636
5671
 
@@ -5668,6 +5703,14 @@ class Auth {
5668
5703
  this.onRefreshTokenCallback(token, session);
5669
5704
  }
5670
5705
  });
5706
+
5707
+ setOnRefreshTokenError(error => {
5708
+ logger$9.error('on refresh token error', error);
5709
+
5710
+ if (this.onRefreshTokenCallbackError) {
5711
+ this.onRefreshTokenCallbackError(error);
5712
+ }
5713
+ });
5671
5714
  }
5672
5715
 
5673
5716
  setFetchOptions(options ) {
@@ -5756,6 +5799,10 @@ class Auth {
5756
5799
  this.onRefreshTokenCallback = callback;
5757
5800
  }
5758
5801
 
5802
+ setOnRefreshTokenError(callback ) {
5803
+ this.onRefreshTokenCallbackError = callback;
5804
+ }
5805
+
5759
5806
  checkAuthorizations(session , authorizationName ) {
5760
5807
  if (!authorizationName) {
5761
5808
  return;
@@ -5788,6 +5835,12 @@ class Auth {
5788
5835
  setRefreshToken(refreshToken);
5789
5836
  }
5790
5837
 
5838
+ setRefreshTenantId(refreshTenantId ) {
5839
+ setRefreshTenantId(refreshTenantId);
5840
+
5841
+ getApiClient().setRefreshTenantId(refreshTenantId);
5842
+ }
5843
+
5791
5844
  forceRefreshToken() {
5792
5845
  getApiClient().forceRefreshToken();
5793
5846
  }
@@ -8735,11 +8788,14 @@ class WebRTCClient extends Emitter {
8735
8788
  }
8736
8789
 
8737
8790
  async _disconnectTransport(force = false) {
8738
- if (force) {
8791
+ if (force && this.userAgent && this.userAgent.transport) {
8739
8792
  // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8740
8793
  this.userAgent.transport.disconnectResolve = () => {};
8741
- // eslint-disable-next-line
8742
- this.userAgent.transport._ws.close(1000);
8794
+
8795
+ if (this.userAgent.transport._ws) {
8796
+ this.userAgent.transport._ws.close(1000);
8797
+ }
8798
+
8743
8799
  return;
8744
8800
  }
8745
8801
 
@@ -9391,7 +9447,7 @@ class WebRTCPhone extends Emitter {
9391
9447
  // When stopping screenshare and we had video before that, we have to re-upgrade
9392
9448
  // When upgrading directly to screenshare (eg: we don't have a videoLocalStream to replace)
9393
9449
  // We have to downgrade to audio.
9394
- const screenshareStopped = this.currentScreenShare.sender && this.currentScreenShare.hadVideo;
9450
+ const screenshareStopped = this.currentScreenShare.hadVideo;
9395
9451
  const constraints = { audio: false, video: screenshareStopped };
9396
9452
 
9397
9453
  // We have to remove the video sender to be able to re-upgrade to video in `sendReinvite` below
@@ -9835,7 +9891,7 @@ class WebRTCPhone extends Emitter {
9835
9891
 
9836
9892
  logger$7.info('WebRTC hold sip session', { sipId: sipSession.id, hasVideo });
9837
9893
 
9838
- // Stop screenshre if needed
9894
+ // Stop screenshare if needed
9839
9895
  if (this.currentScreenShare && this.currentScreenShare.sipSessionId === sessionId) {
9840
9896
  this.lastScreenShare = this.currentScreenShare;
9841
9897
  await this.stopScreenSharing(false, callSession);
@@ -10597,7 +10653,7 @@ class WebRTCPhone extends Emitter {
10597
10653
  endTime: fromSession ? fromSession.endTime : null,
10598
10654
  answered: state === SessionState.Established,
10599
10655
  paused: this.client.isCallHeld(sipSession),
10600
- isCaller: 'incoming' in extra ? !extra.incoming : false,
10656
+ isCaller: fromSession ? fromSession.isCaller : ('incoming' in extra ? !extra.incoming : false),
10601
10657
  cameraEnabled: fromSession ? fromSession.isCameraEnabled() : this.client.hasVideo(sessionId),
10602
10658
  number,
10603
10659
  ringing: false,
@@ -2291,9 +2291,12 @@ var authMethods = (client , baseUrl ) => ({
2291
2291
  expiration: expiration || DETAULT_EXPIRATION,
2292
2292
  refresh_token: refreshToken,
2293
2293
  client_id: client.clientId,
2294
- tenant_id: tenantId,
2295
2294
  };
2296
2295
 
2296
+ if (tenantId) {
2297
+ body.tenant_id = tenantId;
2298
+ }
2299
+
2297
2300
  const headers = {
2298
2301
  'Content-Type': 'application/json',
2299
2302
  ...(isMobile ? { 'Wazo-Session-Type': 'mobile' } : {}),
@@ -5415,6 +5418,7 @@ class ApiClient {
5415
5418
 
5416
5419
 
5417
5420
 
5421
+
5418
5422
 
5419
5423
 
5420
5424
 
@@ -5467,23 +5471,31 @@ class ApiClient {
5467
5471
  return null;
5468
5472
  }
5469
5473
 
5470
- const session = await this.auth.refreshToken(
5471
- this.refreshToken,
5472
- this.refreshBackend,
5473
- this.refreshExpiration,
5474
- this.isMobile,
5475
- this.refreshTenantId,
5476
- );
5474
+ try {
5475
+ const session = await this.auth.refreshToken(
5476
+ this.refreshToken,
5477
+ this.refreshBackend,
5478
+ this.refreshExpiration,
5479
+ this.isMobile,
5480
+ this.refreshTenantId,
5481
+ );
5477
5482
 
5478
- logger$a.info('token refreshed', { token: session.token });
5483
+ logger$a.info('token refreshed', { token: session.token });
5479
5484
 
5480
- if (this.onRefreshToken) {
5481
- this.onRefreshToken(session.token, session);
5482
- }
5485
+ if (this.onRefreshToken) {
5486
+ this.onRefreshToken(session.token, session);
5487
+ }
5483
5488
 
5484
- this.setToken(session.token);
5489
+ this.setToken(session.token);
5490
+
5491
+ return session.token;
5492
+ } catch (error) {
5493
+ logger$a.error('token refresh, error', error);
5485
5494
 
5486
- return session.token;
5495
+ if (this.onRefreshTokenError) {
5496
+ this.onRefreshTokenError(error);
5497
+ }
5498
+ }
5487
5499
  }
5488
5500
 
5489
5501
  setToken(token ) {
@@ -5506,6 +5518,10 @@ class ApiClient {
5506
5518
  this.onRefreshToken = onRefreshToken;
5507
5519
  }
5508
5520
 
5521
+ setOnRefreshTokenError(callback ) {
5522
+ this.onRefreshTokenError = callback;
5523
+ }
5524
+
5509
5525
  setRefreshExpiration(refreshExpiration ) {
5510
5526
  this.refreshExpiration = refreshExpiration;
5511
5527
  }
@@ -5541,7 +5557,9 @@ global.wazoClients = global.wazoClients || {};
5541
5557
  global.wazoClientId = global.wazoClientId || {};
5542
5558
  global.wazoClientToken = global.wazoClientToken || {};
5543
5559
  global.wazoRefreshToken = global.wazoRefreshToken || {};
5560
+ global.wazoRefreshTenantId = global.wazoRefreshTenantId || {};
5544
5561
  global.wazoOnRefreshToken = global.wazoOnRefreshToken || {};
5562
+ global.wazoOnRefreshTokenError = global.wazoOnRefreshTokenError || {};
5545
5563
  global.wazoRefreshExpiration = global.wazoRefreshExpiration || {};
5546
5564
  global.wazoRefreshBackend = global.wazoRefreshBackend || {};
5547
5565
  global.wazoIsMobile = global.wazoIsMobile || {};
@@ -5563,10 +5581,18 @@ const setRefreshToken = (newRefreshToken , forServer = null) =>
5563
5581
  global.wazoRefreshToken[forServer] = newRefreshToken;
5564
5582
  };
5565
5583
 
5584
+ const setRefreshTenantId = (refreshTenantId , forServer = null) => {
5585
+ global.wazoRefreshTenantId[forServer] = refreshTenantId;
5586
+ };
5587
+
5566
5588
  const setOnRefreshToken = (onRefreshToken , forServer = null) => {
5567
5589
  global.wazoOnRefreshToken[forServer] = onRefreshToken;
5568
5590
  };
5569
5591
 
5592
+ const setOnRefreshTokenError = (callback , forServer = null) => {
5593
+ global.wazoOnRefreshTokenError[forServer] = callback;
5594
+ };
5595
+
5570
5596
  const setRefreshExpiration = (refreshExpiration , forServer = null) => {
5571
5597
  global.wazoRefreshExpiration[forServer] = refreshExpiration;
5572
5598
  };
@@ -5585,12 +5611,20 @@ const fillClient = (apiClient ) => {
5585
5611
 
5586
5612
  apiClient.setRefreshToken(global.wazoRefreshToken[server] || global.wazoRefreshToken[null] || apiClient.refreshToken);
5587
5613
 
5614
+ apiClient.setRefreshTenantId(
5615
+ global.wazoRefreshTenantId[server] || global.wazoRefreshTenantId[null] || apiClient.refreshTenantId,
5616
+ );
5617
+
5588
5618
  apiClient.setFetchOptions(global.wazoFetchOptions[server] || global.wazoFetchOptions[null] || apiClient.fetchOptions);
5589
5619
 
5590
5620
  apiClient.setOnRefreshToken(
5591
5621
  global.wazoOnRefreshToken[server] || global.wazoOnRefreshToken[null] || apiClient.onRefreshToken,
5592
5622
  );
5593
5623
 
5624
+ apiClient.setOnRefreshTokenError(
5625
+ global.wazoOnRefreshTokenError[server] || global.wazoOnRefreshTokenError[null] || apiClient.onRefreshTokenError,
5626
+ );
5627
+
5594
5628
  apiClient.setRefreshExpiration(
5595
5629
  global.wazoRefreshExpiration[server] || global.wazoRefreshExpiration[null] || apiClient.refreshExpiration,
5596
5630
  );
@@ -5604,7 +5638,7 @@ const fillClient = (apiClient ) => {
5604
5638
  return apiClient;
5605
5639
  };
5606
5640
 
5607
- var getApiClient = (forServer ) => {
5641
+ var getApiClient = (forServer = null) => {
5608
5642
  const server = forServer || global.wazoCurrentServer || '';
5609
5643
  if (server in global.wazoClients) {
5610
5644
  return fillClient(global.wazoClients[server]);
@@ -5631,6 +5665,7 @@ class Auth {
5631
5665
 
5632
5666
 
5633
5667
 
5668
+
5634
5669
 
5635
5670
 
5636
5671
 
@@ -5668,6 +5703,14 @@ class Auth {
5668
5703
  this.onRefreshTokenCallback(token, session);
5669
5704
  }
5670
5705
  });
5706
+
5707
+ setOnRefreshTokenError(error => {
5708
+ logger$9.error('on refresh token error', error);
5709
+
5710
+ if (this.onRefreshTokenCallbackError) {
5711
+ this.onRefreshTokenCallbackError(error);
5712
+ }
5713
+ });
5671
5714
  }
5672
5715
 
5673
5716
  setFetchOptions(options ) {
@@ -5756,6 +5799,10 @@ class Auth {
5756
5799
  this.onRefreshTokenCallback = callback;
5757
5800
  }
5758
5801
 
5802
+ setOnRefreshTokenError(callback ) {
5803
+ this.onRefreshTokenCallbackError = callback;
5804
+ }
5805
+
5759
5806
  checkAuthorizations(session , authorizationName ) {
5760
5807
  if (!authorizationName) {
5761
5808
  return;
@@ -5788,6 +5835,12 @@ class Auth {
5788
5835
  setRefreshToken(refreshToken);
5789
5836
  }
5790
5837
 
5838
+ setRefreshTenantId(refreshTenantId ) {
5839
+ setRefreshTenantId(refreshTenantId);
5840
+
5841
+ getApiClient().setRefreshTenantId(refreshTenantId);
5842
+ }
5843
+
5791
5844
  forceRefreshToken() {
5792
5845
  getApiClient().forceRefreshToken();
5793
5846
  }
@@ -8735,11 +8788,14 @@ class WebRTCClient extends Emitter {
8735
8788
  }
8736
8789
 
8737
8790
  async _disconnectTransport(force = false) {
8738
- if (force) {
8791
+ if (force && this.userAgent && this.userAgent.transport) {
8739
8792
  // Bypass sip.js state machine that prevent to close WS with the state `Connecting`
8740
8793
  this.userAgent.transport.disconnectResolve = () => {};
8741
- // eslint-disable-next-line
8742
- this.userAgent.transport._ws.close(1000);
8794
+
8795
+ if (this.userAgent.transport._ws) {
8796
+ this.userAgent.transport._ws.close(1000);
8797
+ }
8798
+
8743
8799
  return;
8744
8800
  }
8745
8801
 
@@ -9391,7 +9447,7 @@ class WebRTCPhone extends Emitter {
9391
9447
  // When stopping screenshare and we had video before that, we have to re-upgrade
9392
9448
  // When upgrading directly to screenshare (eg: we don't have a videoLocalStream to replace)
9393
9449
  // We have to downgrade to audio.
9394
- const screenshareStopped = this.currentScreenShare.sender && this.currentScreenShare.hadVideo;
9450
+ const screenshareStopped = this.currentScreenShare.hadVideo;
9395
9451
  const constraints = { audio: false, video: screenshareStopped };
9396
9452
 
9397
9453
  // We have to remove the video sender to be able to re-upgrade to video in `sendReinvite` below
@@ -9835,7 +9891,7 @@ class WebRTCPhone extends Emitter {
9835
9891
 
9836
9892
  logger$7.info('WebRTC hold sip session', { sipId: sipSession.id, hasVideo });
9837
9893
 
9838
- // Stop screenshre if needed
9894
+ // Stop screenshare if needed
9839
9895
  if (this.currentScreenShare && this.currentScreenShare.sipSessionId === sessionId) {
9840
9896
  this.lastScreenShare = this.currentScreenShare;
9841
9897
  await this.stopScreenSharing(false, callSession);
@@ -10597,7 +10653,7 @@ class WebRTCPhone extends Emitter {
10597
10653
  endTime: fromSession ? fromSession.endTime : null,
10598
10654
  answered: state === SessionState.Established,
10599
10655
  paused: this.client.isCallHeld(sipSession),
10600
- isCaller: 'incoming' in extra ? !extra.incoming : false,
10656
+ isCaller: fromSession ? fromSession.isCaller : ('incoming' in extra ? !extra.incoming : false),
10601
10657
  cameraEnabled: fromSession ? fromSession.isCameraEnabled() : this.client.hasVideo(sessionId),
10602
10658
  number,
10603
10659
  ringing: false,