@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.
- package/README.md +2 -1
- package/dist/wazo-sdk.js +2 -2
- package/esm/__tests__/api-client.test.js +33 -15
- package/esm/__tests__/web-rtc-client.test.js +39 -18
- package/esm/api/auth.js +4 -1
- package/esm/api/ctid-ng.js +2 -0
- package/esm/api-client.js +33 -15
- package/esm/checker/Checker.js +39 -18
- package/esm/checker/checks/aor.js +33 -15
- package/esm/checker/checks/api.js +33 -15
- package/esm/checker/checks/index.js +39 -18
- package/esm/checker/checks/webrtc-transport.js +39 -18
- package/esm/checker/checks/webrtc.js +39 -18
- package/esm/domain/AdHocAPIConference.js +42 -16
- package/esm/domain/Features.js +42 -16
- package/esm/domain/Phone/CTIPhone.js +42 -16
- package/esm/domain/Phone/WebRTCPhone.js +5 -3
- package/esm/index.js +77 -21
- package/esm/service/CallApi.js +42 -16
- package/esm/service/getApiClient.js +51 -17
- package/esm/simple/Auth.js +77 -21
- package/esm/simple/Configuration.js +77 -21
- package/esm/simple/Directory.js +42 -16
- package/esm/simple/Phone.js +77 -21
- package/esm/simple/index.js +77 -21
- package/esm/simple/room/LocalParticipant.js +77 -21
- package/esm/simple/room/Participant.js +77 -21
- package/esm/simple/room/RemoteParticipant.js +77 -21
- package/esm/simple/room/Room.js +77 -21
- package/esm/simple/room/SipRoom.js +77 -21
- package/esm/simple/room/Stream.js +77 -21
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +77 -21
- package/esm/simple/utils.js +77 -21
- package/esm/web-rtc-client.js +39 -18
- package/lib/__tests__/api-client.test.js +33 -15
- package/lib/__tests__/web-rtc-client.test.js +39 -18
- package/lib/api/auth.js +4 -1
- package/lib/api/ctid-ng.js +2 -0
- package/lib/api-client.js +33 -15
- package/lib/checker/Checker.js +39 -18
- package/lib/checker/checks/aor.js +33 -15
- package/lib/checker/checks/api.js +33 -15
- package/lib/checker/checks/index.js +39 -18
- package/lib/checker/checks/webrtc-transport.js +39 -18
- package/lib/checker/checks/webrtc.js +39 -18
- package/lib/domain/AdHocAPIConference.js +42 -16
- package/lib/domain/Features.js +42 -16
- package/lib/domain/Phone/CTIPhone.js +42 -16
- package/lib/domain/Phone/WebRTCPhone.js +5 -3
- package/lib/index.js +77 -21
- package/lib/service/CallApi.js +42 -16
- package/lib/service/getApiClient.js +52 -16
- package/lib/simple/Auth.js +77 -21
- package/lib/simple/Configuration.js +77 -21
- package/lib/simple/Directory.js +42 -16
- package/lib/simple/Phone.js +77 -21
- package/lib/simple/index.js +77 -21
- package/lib/simple/room/LocalParticipant.js +77 -21
- package/lib/simple/room/Participant.js +77 -21
- package/lib/simple/room/RemoteParticipant.js +77 -21
- package/lib/simple/room/Room.js +77 -21
- package/lib/simple/room/SipRoom.js +77 -21
- package/lib/simple/room/Stream.js +77 -21
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +77 -21
- package/lib/simple/utils.js +77 -21
- package/lib/web-rtc-client.js +39 -18
- package/package.json +1 -1
- package/src/api/auth.js +4 -1
- package/src/api-client.js +26 -13
- package/src/domain/Phone/WebRTCPhone.js +3 -3
- package/src/service/getApiClient.js +19 -1
- package/src/simple/Auth.js +21 -0
- package/src/web-rtc-client.js +7 -4
package/esm/simple/Phone.js
CHANGED
|
@@ -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
|
-
|
|
5471
|
-
this.refreshToken
|
|
5472
|
-
|
|
5473
|
-
|
|
5474
|
-
|
|
5475
|
-
|
|
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
|
-
|
|
5483
|
+
logger$a.info('token refreshed', { token: session.token });
|
|
5479
5484
|
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5485
|
+
if (this.onRefreshToken) {
|
|
5486
|
+
this.onRefreshToken(session.token, session);
|
|
5487
|
+
}
|
|
5483
5488
|
|
|
5484
|
-
|
|
5489
|
+
this.setToken(session.token);
|
|
5490
|
+
|
|
5491
|
+
return session.token;
|
|
5492
|
+
} catch (error) {
|
|
5493
|
+
logger$a.error('token refresh, error', error);
|
|
5485
5494
|
|
|
5486
|
-
|
|
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
|
-
|
|
8460
|
-
this.userAgent.transport._ws
|
|
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.
|
|
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
|
|
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
|
}
|
package/esm/simple/index.js
CHANGED
|
@@ -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
|
-
|
|
5471
|
-
this.refreshToken
|
|
5472
|
-
|
|
5473
|
-
|
|
5474
|
-
|
|
5475
|
-
|
|
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
|
-
|
|
5483
|
+
logger$a.info('token refreshed', { token: session.token });
|
|
5479
5484
|
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5485
|
+
if (this.onRefreshToken) {
|
|
5486
|
+
this.onRefreshToken(session.token, session);
|
|
5487
|
+
}
|
|
5483
5488
|
|
|
5484
|
-
|
|
5489
|
+
this.setToken(session.token);
|
|
5490
|
+
|
|
5491
|
+
return session.token;
|
|
5492
|
+
} catch (error) {
|
|
5493
|
+
logger$a.error('token refresh, error', error);
|
|
5485
5494
|
|
|
5486
|
-
|
|
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
|
-
|
|
8742
|
-
this.userAgent.transport._ws
|
|
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.
|
|
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
|
|
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
|
-
|
|
5471
|
-
this.refreshToken
|
|
5472
|
-
|
|
5473
|
-
|
|
5474
|
-
|
|
5475
|
-
|
|
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
|
-
|
|
5483
|
+
logger$a.info('token refreshed', { token: session.token });
|
|
5479
5484
|
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5485
|
+
if (this.onRefreshToken) {
|
|
5486
|
+
this.onRefreshToken(session.token, session);
|
|
5487
|
+
}
|
|
5483
5488
|
|
|
5484
|
-
|
|
5489
|
+
this.setToken(session.token);
|
|
5490
|
+
|
|
5491
|
+
return session.token;
|
|
5492
|
+
} catch (error) {
|
|
5493
|
+
logger$a.error('token refresh, error', error);
|
|
5485
5494
|
|
|
5486
|
-
|
|
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
|
-
|
|
8742
|
-
this.userAgent.transport._ws
|
|
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.
|
|
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
|
|
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,
|