@wazo/sdk 0.37.31 → 0.37.32
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/dist/wazo-sdk.js +2 -2
- package/esm/__tests__/api-client.test.js +30 -0
- package/esm/__tests__/web-rtc-client.test.js +56 -5
- package/esm/api/calld.js +30 -0
- package/esm/api-client.js +30 -0
- package/esm/checker/Checker.js +56 -5
- package/esm/checker/checks/aor.js +30 -0
- package/esm/checker/checks/api.js +30 -0
- package/esm/checker/checks/index.js +56 -5
- package/esm/checker/checks/webrtc-transport.js +56 -5
- package/esm/checker/checks/webrtc.js +56 -5
- package/esm/domain/AdHocAPIConference.js +30 -0
- package/esm/domain/Features.js +30 -0
- package/esm/domain/MeetingStatus.js +29 -0
- package/esm/domain/Phone/CTIPhone.js +30 -0
- package/esm/domain/Phone/WebRTCPhone.js +2 -2
- package/esm/index.js +58 -7
- package/esm/service/CallApi.js +30 -0
- package/esm/service/getApiClient.js +30 -0
- package/esm/simple/Auth.js +58 -7
- package/esm/simple/Configuration.js +58 -7
- package/esm/simple/Directory.js +30 -0
- package/esm/simple/Phone.js +58 -7
- package/esm/simple/index.js +58 -7
- package/esm/simple/room/LocalParticipant.js +58 -7
- package/esm/simple/room/Participant.js +58 -7
- package/esm/simple/room/RemoteParticipant.js +58 -7
- package/esm/simple/room/Room.js +58 -7
- package/esm/simple/room/SipRoom.js +58 -7
- package/esm/simple/room/Stream.js +58 -7
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +58 -7
- package/esm/simple/utils.js +58 -7
- package/esm/web-rtc-client.js +56 -5
- package/lib/__tests__/api-client.test.js +30 -0
- package/lib/__tests__/web-rtc-client.test.js +56 -5
- package/lib/api/calld.js +30 -0
- package/lib/api-client.js +30 -0
- package/lib/checker/Checker.js +56 -5
- package/lib/checker/checks/aor.js +30 -0
- package/lib/checker/checks/api.js +30 -0
- package/lib/checker/checks/index.js +56 -5
- package/lib/checker/checks/webrtc-transport.js +56 -5
- package/lib/checker/checks/webrtc.js +56 -5
- package/lib/domain/AdHocAPIConference.js +30 -0
- package/lib/domain/Features.js +30 -0
- package/lib/domain/MeetingStatus.js +31 -0
- package/lib/domain/Phone/CTIPhone.js +30 -0
- package/lib/domain/Phone/WebRTCPhone.js +2 -2
- package/lib/index.js +58 -7
- package/lib/service/CallApi.js +30 -0
- package/lib/service/getApiClient.js +30 -0
- package/lib/simple/Auth.js +58 -7
- package/lib/simple/Configuration.js +58 -7
- package/lib/simple/Directory.js +30 -0
- package/lib/simple/Phone.js +58 -7
- package/lib/simple/index.js +58 -7
- package/lib/simple/room/LocalParticipant.js +58 -7
- package/lib/simple/room/Participant.js +58 -7
- package/lib/simple/room/RemoteParticipant.js +58 -7
- package/lib/simple/room/Room.js +58 -7
- package/lib/simple/room/SipRoom.js +58 -7
- package/lib/simple/room/Stream.js +58 -7
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +58 -7
- package/lib/simple/utils.js +58 -7
- package/lib/web-rtc-client.js +56 -5
- package/package.json +1 -1
- package/src/api/calld.js +3 -0
- package/src/domain/MeetingStatus.js +27 -0
- package/src/domain/Phone/WebRTCPhone.js +2 -2
- package/src/web-rtc-client.js +26 -5
package/lib/api/calld.js
CHANGED
|
@@ -1232,6 +1232,34 @@ class IndirectTransfer {
|
|
|
1232
1232
|
}
|
|
1233
1233
|
}
|
|
1234
1234
|
|
|
1235
|
+
//
|
|
1236
|
+
|
|
1237
|
+
|
|
1238
|
+
|
|
1239
|
+
|
|
1240
|
+
|
|
1241
|
+
class MeetingStatus {
|
|
1242
|
+
|
|
1243
|
+
|
|
1244
|
+
|
|
1245
|
+
|
|
1246
|
+
constructor({
|
|
1247
|
+
full,
|
|
1248
|
+
} = {}) {
|
|
1249
|
+
this.full = full;
|
|
1250
|
+
|
|
1251
|
+
// Useful to compare instead of instanceof with minified code
|
|
1252
|
+
this.type = 'MeetingStatus';
|
|
1253
|
+
}
|
|
1254
|
+
|
|
1255
|
+
static parse(plain ) {
|
|
1256
|
+
return new MeetingStatus({
|
|
1257
|
+
full: plain.full,
|
|
1258
|
+
});
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1235
1263
|
/* */
|
|
1236
1264
|
|
|
1237
1265
|
|
|
@@ -1426,6 +1454,8 @@ var calld = (client , baseUrl ) => ({
|
|
|
1426
1454
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
1427
1455
|
ApiRequester.successResponseParser),
|
|
1428
1456
|
|
|
1457
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
1458
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
1429
1459
|
});
|
|
1430
1460
|
|
|
1431
1461
|
module.exports = calld;
|
package/lib/api-client.js
CHANGED
|
@@ -4037,6 +4037,34 @@ var chatdMethods = (client , baseUrl ) => ({
|
|
|
4037
4037
|
client.get(`${baseUrl}/users/me/rooms/messages`, options),
|
|
4038
4038
|
});
|
|
4039
4039
|
|
|
4040
|
+
//
|
|
4041
|
+
|
|
4042
|
+
|
|
4043
|
+
|
|
4044
|
+
|
|
4045
|
+
|
|
4046
|
+
class MeetingStatus {
|
|
4047
|
+
|
|
4048
|
+
|
|
4049
|
+
|
|
4050
|
+
|
|
4051
|
+
constructor({
|
|
4052
|
+
full,
|
|
4053
|
+
} = {}) {
|
|
4054
|
+
this.full = full;
|
|
4055
|
+
|
|
4056
|
+
// Useful to compare instead of instanceof with minified code
|
|
4057
|
+
this.type = 'MeetingStatus';
|
|
4058
|
+
}
|
|
4059
|
+
|
|
4060
|
+
static parse(plain ) {
|
|
4061
|
+
return new MeetingStatus({
|
|
4062
|
+
full: plain.full,
|
|
4063
|
+
});
|
|
4064
|
+
}
|
|
4065
|
+
|
|
4066
|
+
}
|
|
4067
|
+
|
|
4040
4068
|
/* */
|
|
4041
4069
|
|
|
4042
4070
|
|
|
@@ -4231,6 +4259,8 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4231
4259
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
4232
4260
|
ApiRequester.successResponseParser),
|
|
4233
4261
|
|
|
4262
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
4263
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
4234
4264
|
});
|
|
4235
4265
|
|
|
4236
4266
|
//
|
package/lib/checker/Checker.js
CHANGED
|
@@ -4085,6 +4085,34 @@ var chatdMethods = (client , baseUrl ) => ({
|
|
|
4085
4085
|
client.get(`${baseUrl}/users/me/rooms/messages`, options),
|
|
4086
4086
|
});
|
|
4087
4087
|
|
|
4088
|
+
//
|
|
4089
|
+
|
|
4090
|
+
|
|
4091
|
+
|
|
4092
|
+
|
|
4093
|
+
|
|
4094
|
+
class MeetingStatus {
|
|
4095
|
+
|
|
4096
|
+
|
|
4097
|
+
|
|
4098
|
+
|
|
4099
|
+
constructor({
|
|
4100
|
+
full,
|
|
4101
|
+
} = {}) {
|
|
4102
|
+
this.full = full;
|
|
4103
|
+
|
|
4104
|
+
// Useful to compare instead of instanceof with minified code
|
|
4105
|
+
this.type = 'MeetingStatus';
|
|
4106
|
+
}
|
|
4107
|
+
|
|
4108
|
+
static parse(plain ) {
|
|
4109
|
+
return new MeetingStatus({
|
|
4110
|
+
full: plain.full,
|
|
4111
|
+
});
|
|
4112
|
+
}
|
|
4113
|
+
|
|
4114
|
+
}
|
|
4115
|
+
|
|
4088
4116
|
/* */
|
|
4089
4117
|
|
|
4090
4118
|
|
|
@@ -4279,6 +4307,8 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4279
4307
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
4280
4308
|
ApiRequester.successResponseParser),
|
|
4281
4309
|
|
|
4310
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
4311
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
4282
4312
|
});
|
|
4283
4313
|
|
|
4284
4314
|
//
|
|
@@ -5981,6 +6011,7 @@ class WebRTCClient extends Emitter {
|
|
|
5981
6011
|
|
|
5982
6012
|
|
|
5983
6013
|
|
|
6014
|
+
|
|
5984
6015
|
|
|
5985
6016
|
// sugar
|
|
5986
6017
|
|
|
@@ -6043,6 +6074,7 @@ class WebRTCClient extends Emitter {
|
|
|
6043
6074
|
this.conferences = {};
|
|
6044
6075
|
this.networkMonitoringInterval = {};
|
|
6045
6076
|
this.sessionNetworkStats = {};
|
|
6077
|
+
this.forceClosed = false;
|
|
6046
6078
|
|
|
6047
6079
|
this._boundOnHeartbeat = this._onHeartbeat.bind(this);
|
|
6048
6080
|
this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
|
|
@@ -6164,6 +6196,8 @@ class WebRTCClient extends Emitter {
|
|
|
6164
6196
|
skipRegister: this.skipRegister,
|
|
6165
6197
|
};
|
|
6166
6198
|
|
|
6199
|
+
this.forceClosed = false;
|
|
6200
|
+
|
|
6167
6201
|
if (this.skipRegister) {
|
|
6168
6202
|
logger$1.info('sdk webrtc skip register...', logInfo);
|
|
6169
6203
|
return Promise.resolve();
|
|
@@ -6188,7 +6222,15 @@ class WebRTCClient extends Emitter {
|
|
|
6188
6222
|
const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
|
|
6189
6223
|
|
|
6190
6224
|
const onRegisterFailed = () => {
|
|
6191
|
-
logger$1.info('sdk webrtc registering failed', {
|
|
6225
|
+
logger$1.info('sdk webrtc registering failed', {
|
|
6226
|
+
tries,
|
|
6227
|
+
registerer: !!this.registerer,
|
|
6228
|
+
forceClosed: this.forceClosed,
|
|
6229
|
+
});
|
|
6230
|
+
if (this.forceClosed) {
|
|
6231
|
+
return;
|
|
6232
|
+
}
|
|
6233
|
+
|
|
6192
6234
|
this.connectionPromise = null;
|
|
6193
6235
|
if (this.registerer && this.registerer.waiting) {
|
|
6194
6236
|
this.registerer.waitingToggle(false);
|
|
@@ -6466,8 +6508,9 @@ class WebRTCClient extends Emitter {
|
|
|
6466
6508
|
}
|
|
6467
6509
|
}
|
|
6468
6510
|
|
|
6469
|
-
async close() {
|
|
6470
|
-
logger$1.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
|
|
6511
|
+
async close(force = false) {
|
|
6512
|
+
logger$1.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
|
|
6513
|
+
this.forceClosed = force;
|
|
6471
6514
|
this._cleanupMedia();
|
|
6472
6515
|
this.connectionPromise = null;
|
|
6473
6516
|
|
|
@@ -6486,7 +6529,7 @@ class WebRTCClient extends Emitter {
|
|
|
6486
6529
|
this.userAgent.delegate = null;
|
|
6487
6530
|
this.userAgent.stateChange.removeAllListeners();
|
|
6488
6531
|
|
|
6489
|
-
await this._disconnectTransport();
|
|
6532
|
+
await this._disconnectTransport(force);
|
|
6490
6533
|
|
|
6491
6534
|
this._cleanupRegister();
|
|
6492
6535
|
|
|
@@ -7922,7 +7965,15 @@ class WebRTCClient extends Emitter {
|
|
|
7922
7965
|
return userAgent.UserAgent.makeURI(`sip:${target}@${this.config.host}`);
|
|
7923
7966
|
}
|
|
7924
7967
|
|
|
7925
|
-
async _disconnectTransport() {
|
|
7968
|
+
async _disconnectTransport(force = false) {
|
|
7969
|
+
if (force) {
|
|
7970
|
+
// Bypass sip.js state machine that prevent to close WS with the state `Connecting`
|
|
7971
|
+
this.userAgent.transport.disconnectResolve = () => {};
|
|
7972
|
+
// eslint-disable-next-line
|
|
7973
|
+
this.userAgent.transport._ws.close(1000);
|
|
7974
|
+
return;
|
|
7975
|
+
}
|
|
7976
|
+
|
|
7926
7977
|
// Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
|
|
7927
7978
|
if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
|
|
7928
7979
|
try {
|
|
@@ -4037,6 +4037,34 @@ var chatdMethods = (client , baseUrl ) => ({
|
|
|
4037
4037
|
client.get(`${baseUrl}/users/me/rooms/messages`, options),
|
|
4038
4038
|
});
|
|
4039
4039
|
|
|
4040
|
+
//
|
|
4041
|
+
|
|
4042
|
+
|
|
4043
|
+
|
|
4044
|
+
|
|
4045
|
+
|
|
4046
|
+
class MeetingStatus {
|
|
4047
|
+
|
|
4048
|
+
|
|
4049
|
+
|
|
4050
|
+
|
|
4051
|
+
constructor({
|
|
4052
|
+
full,
|
|
4053
|
+
} = {}) {
|
|
4054
|
+
this.full = full;
|
|
4055
|
+
|
|
4056
|
+
// Useful to compare instead of instanceof with minified code
|
|
4057
|
+
this.type = 'MeetingStatus';
|
|
4058
|
+
}
|
|
4059
|
+
|
|
4060
|
+
static parse(plain ) {
|
|
4061
|
+
return new MeetingStatus({
|
|
4062
|
+
full: plain.full,
|
|
4063
|
+
});
|
|
4064
|
+
}
|
|
4065
|
+
|
|
4066
|
+
}
|
|
4067
|
+
|
|
4040
4068
|
/* */
|
|
4041
4069
|
|
|
4042
4070
|
|
|
@@ -4231,6 +4259,8 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4231
4259
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
4232
4260
|
ApiRequester.successResponseParser),
|
|
4233
4261
|
|
|
4262
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
4263
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
4234
4264
|
});
|
|
4235
4265
|
|
|
4236
4266
|
//
|
|
@@ -4037,6 +4037,34 @@ var chatdMethods = (client , baseUrl ) => ({
|
|
|
4037
4037
|
client.get(`${baseUrl}/users/me/rooms/messages`, options),
|
|
4038
4038
|
});
|
|
4039
4039
|
|
|
4040
|
+
//
|
|
4041
|
+
|
|
4042
|
+
|
|
4043
|
+
|
|
4044
|
+
|
|
4045
|
+
|
|
4046
|
+
class MeetingStatus {
|
|
4047
|
+
|
|
4048
|
+
|
|
4049
|
+
|
|
4050
|
+
|
|
4051
|
+
constructor({
|
|
4052
|
+
full,
|
|
4053
|
+
} = {}) {
|
|
4054
|
+
this.full = full;
|
|
4055
|
+
|
|
4056
|
+
// Useful to compare instead of instanceof with minified code
|
|
4057
|
+
this.type = 'MeetingStatus';
|
|
4058
|
+
}
|
|
4059
|
+
|
|
4060
|
+
static parse(plain ) {
|
|
4061
|
+
return new MeetingStatus({
|
|
4062
|
+
full: plain.full,
|
|
4063
|
+
});
|
|
4064
|
+
}
|
|
4065
|
+
|
|
4066
|
+
}
|
|
4067
|
+
|
|
4040
4068
|
/* */
|
|
4041
4069
|
|
|
4042
4070
|
|
|
@@ -4231,6 +4259,8 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4231
4259
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
4232
4260
|
ApiRequester.successResponseParser),
|
|
4233
4261
|
|
|
4262
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
4263
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
4234
4264
|
});
|
|
4235
4265
|
|
|
4236
4266
|
//
|
|
@@ -4085,6 +4085,34 @@ var chatdMethods = (client , baseUrl ) => ({
|
|
|
4085
4085
|
client.get(`${baseUrl}/users/me/rooms/messages`, options),
|
|
4086
4086
|
});
|
|
4087
4087
|
|
|
4088
|
+
//
|
|
4089
|
+
|
|
4090
|
+
|
|
4091
|
+
|
|
4092
|
+
|
|
4093
|
+
|
|
4094
|
+
class MeetingStatus {
|
|
4095
|
+
|
|
4096
|
+
|
|
4097
|
+
|
|
4098
|
+
|
|
4099
|
+
constructor({
|
|
4100
|
+
full,
|
|
4101
|
+
} = {}) {
|
|
4102
|
+
this.full = full;
|
|
4103
|
+
|
|
4104
|
+
// Useful to compare instead of instanceof with minified code
|
|
4105
|
+
this.type = 'MeetingStatus';
|
|
4106
|
+
}
|
|
4107
|
+
|
|
4108
|
+
static parse(plain ) {
|
|
4109
|
+
return new MeetingStatus({
|
|
4110
|
+
full: plain.full,
|
|
4111
|
+
});
|
|
4112
|
+
}
|
|
4113
|
+
|
|
4114
|
+
}
|
|
4115
|
+
|
|
4088
4116
|
/* */
|
|
4089
4117
|
|
|
4090
4118
|
|
|
@@ -4279,6 +4307,8 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4279
4307
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
4280
4308
|
ApiRequester.successResponseParser),
|
|
4281
4309
|
|
|
4310
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
4311
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
4282
4312
|
});
|
|
4283
4313
|
|
|
4284
4314
|
//
|
|
@@ -5981,6 +6011,7 @@ class WebRTCClient extends Emitter {
|
|
|
5981
6011
|
|
|
5982
6012
|
|
|
5983
6013
|
|
|
6014
|
+
|
|
5984
6015
|
|
|
5985
6016
|
// sugar
|
|
5986
6017
|
|
|
@@ -6043,6 +6074,7 @@ class WebRTCClient extends Emitter {
|
|
|
6043
6074
|
this.conferences = {};
|
|
6044
6075
|
this.networkMonitoringInterval = {};
|
|
6045
6076
|
this.sessionNetworkStats = {};
|
|
6077
|
+
this.forceClosed = false;
|
|
6046
6078
|
|
|
6047
6079
|
this._boundOnHeartbeat = this._onHeartbeat.bind(this);
|
|
6048
6080
|
this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
|
|
@@ -6164,6 +6196,8 @@ class WebRTCClient extends Emitter {
|
|
|
6164
6196
|
skipRegister: this.skipRegister,
|
|
6165
6197
|
};
|
|
6166
6198
|
|
|
6199
|
+
this.forceClosed = false;
|
|
6200
|
+
|
|
6167
6201
|
if (this.skipRegister) {
|
|
6168
6202
|
logger.info('sdk webrtc skip register...', logInfo);
|
|
6169
6203
|
return Promise.resolve();
|
|
@@ -6188,7 +6222,15 @@ class WebRTCClient extends Emitter {
|
|
|
6188
6222
|
const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
|
|
6189
6223
|
|
|
6190
6224
|
const onRegisterFailed = () => {
|
|
6191
|
-
logger.info('sdk webrtc registering failed', {
|
|
6225
|
+
logger.info('sdk webrtc registering failed', {
|
|
6226
|
+
tries,
|
|
6227
|
+
registerer: !!this.registerer,
|
|
6228
|
+
forceClosed: this.forceClosed,
|
|
6229
|
+
});
|
|
6230
|
+
if (this.forceClosed) {
|
|
6231
|
+
return;
|
|
6232
|
+
}
|
|
6233
|
+
|
|
6192
6234
|
this.connectionPromise = null;
|
|
6193
6235
|
if (this.registerer && this.registerer.waiting) {
|
|
6194
6236
|
this.registerer.waitingToggle(false);
|
|
@@ -6466,8 +6508,9 @@ class WebRTCClient extends Emitter {
|
|
|
6466
6508
|
}
|
|
6467
6509
|
}
|
|
6468
6510
|
|
|
6469
|
-
async close() {
|
|
6470
|
-
logger.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
|
|
6511
|
+
async close(force = false) {
|
|
6512
|
+
logger.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
|
|
6513
|
+
this.forceClosed = force;
|
|
6471
6514
|
this._cleanupMedia();
|
|
6472
6515
|
this.connectionPromise = null;
|
|
6473
6516
|
|
|
@@ -6486,7 +6529,7 @@ class WebRTCClient extends Emitter {
|
|
|
6486
6529
|
this.userAgent.delegate = null;
|
|
6487
6530
|
this.userAgent.stateChange.removeAllListeners();
|
|
6488
6531
|
|
|
6489
|
-
await this._disconnectTransport();
|
|
6532
|
+
await this._disconnectTransport(force);
|
|
6490
6533
|
|
|
6491
6534
|
this._cleanupRegister();
|
|
6492
6535
|
|
|
@@ -7922,7 +7965,15 @@ class WebRTCClient extends Emitter {
|
|
|
7922
7965
|
return userAgent.UserAgent.makeURI(`sip:${target}@${this.config.host}`);
|
|
7923
7966
|
}
|
|
7924
7967
|
|
|
7925
|
-
async _disconnectTransport() {
|
|
7968
|
+
async _disconnectTransport(force = false) {
|
|
7969
|
+
if (force) {
|
|
7970
|
+
// Bypass sip.js state machine that prevent to close WS with the state `Connecting`
|
|
7971
|
+
this.userAgent.transport.disconnectResolve = () => {};
|
|
7972
|
+
// eslint-disable-next-line
|
|
7973
|
+
this.userAgent.transport._ws.close(1000);
|
|
7974
|
+
return;
|
|
7975
|
+
}
|
|
7976
|
+
|
|
7926
7977
|
// Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
|
|
7927
7978
|
if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
|
|
7928
7979
|
try {
|
|
@@ -4588,6 +4588,34 @@ var chatdMethods = (client , baseUrl ) => ({
|
|
|
4588
4588
|
client.get(`${baseUrl}/users/me/rooms/messages`, options),
|
|
4589
4589
|
});
|
|
4590
4590
|
|
|
4591
|
+
//
|
|
4592
|
+
|
|
4593
|
+
|
|
4594
|
+
|
|
4595
|
+
|
|
4596
|
+
|
|
4597
|
+
class MeetingStatus {
|
|
4598
|
+
|
|
4599
|
+
|
|
4600
|
+
|
|
4601
|
+
|
|
4602
|
+
constructor({
|
|
4603
|
+
full,
|
|
4604
|
+
} = {}) {
|
|
4605
|
+
this.full = full;
|
|
4606
|
+
|
|
4607
|
+
// Useful to compare instead of instanceof with minified code
|
|
4608
|
+
this.type = 'MeetingStatus';
|
|
4609
|
+
}
|
|
4610
|
+
|
|
4611
|
+
static parse(plain ) {
|
|
4612
|
+
return new MeetingStatus({
|
|
4613
|
+
full: plain.full,
|
|
4614
|
+
});
|
|
4615
|
+
}
|
|
4616
|
+
|
|
4617
|
+
}
|
|
4618
|
+
|
|
4591
4619
|
/* */
|
|
4592
4620
|
|
|
4593
4621
|
|
|
@@ -4782,6 +4810,8 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4782
4810
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
4783
4811
|
ApiRequester.successResponseParser),
|
|
4784
4812
|
|
|
4813
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
4814
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
4785
4815
|
});
|
|
4786
4816
|
|
|
4787
4817
|
//
|
|
@@ -5395,6 +5425,7 @@ class WebRTCClient extends Emitter {
|
|
|
5395
5425
|
|
|
5396
5426
|
|
|
5397
5427
|
|
|
5428
|
+
|
|
5398
5429
|
|
|
5399
5430
|
// sugar
|
|
5400
5431
|
|
|
@@ -5457,6 +5488,7 @@ class WebRTCClient extends Emitter {
|
|
|
5457
5488
|
this.conferences = {};
|
|
5458
5489
|
this.networkMonitoringInterval = {};
|
|
5459
5490
|
this.sessionNetworkStats = {};
|
|
5491
|
+
this.forceClosed = false;
|
|
5460
5492
|
|
|
5461
5493
|
this._boundOnHeartbeat = this._onHeartbeat.bind(this);
|
|
5462
5494
|
this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
|
|
@@ -5578,6 +5610,8 @@ class WebRTCClient extends Emitter {
|
|
|
5578
5610
|
skipRegister: this.skipRegister,
|
|
5579
5611
|
};
|
|
5580
5612
|
|
|
5613
|
+
this.forceClosed = false;
|
|
5614
|
+
|
|
5581
5615
|
if (this.skipRegister) {
|
|
5582
5616
|
logger.info('sdk webrtc skip register...', logInfo);
|
|
5583
5617
|
return Promise.resolve();
|
|
@@ -5602,7 +5636,15 @@ class WebRTCClient extends Emitter {
|
|
|
5602
5636
|
const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
|
|
5603
5637
|
|
|
5604
5638
|
const onRegisterFailed = () => {
|
|
5605
|
-
logger.info('sdk webrtc registering failed', {
|
|
5639
|
+
logger.info('sdk webrtc registering failed', {
|
|
5640
|
+
tries,
|
|
5641
|
+
registerer: !!this.registerer,
|
|
5642
|
+
forceClosed: this.forceClosed,
|
|
5643
|
+
});
|
|
5644
|
+
if (this.forceClosed) {
|
|
5645
|
+
return;
|
|
5646
|
+
}
|
|
5647
|
+
|
|
5606
5648
|
this.connectionPromise = null;
|
|
5607
5649
|
if (this.registerer && this.registerer.waiting) {
|
|
5608
5650
|
this.registerer.waitingToggle(false);
|
|
@@ -5880,8 +5922,9 @@ class WebRTCClient extends Emitter {
|
|
|
5880
5922
|
}
|
|
5881
5923
|
}
|
|
5882
5924
|
|
|
5883
|
-
async close() {
|
|
5884
|
-
logger.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
|
|
5925
|
+
async close(force = false) {
|
|
5926
|
+
logger.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
|
|
5927
|
+
this.forceClosed = force;
|
|
5885
5928
|
this._cleanupMedia();
|
|
5886
5929
|
this.connectionPromise = null;
|
|
5887
5930
|
|
|
@@ -5900,7 +5943,7 @@ class WebRTCClient extends Emitter {
|
|
|
5900
5943
|
this.userAgent.delegate = null;
|
|
5901
5944
|
this.userAgent.stateChange.removeAllListeners();
|
|
5902
5945
|
|
|
5903
|
-
await this._disconnectTransport();
|
|
5946
|
+
await this._disconnectTransport(force);
|
|
5904
5947
|
|
|
5905
5948
|
this._cleanupRegister();
|
|
5906
5949
|
|
|
@@ -7336,7 +7379,15 @@ class WebRTCClient extends Emitter {
|
|
|
7336
7379
|
return userAgent.UserAgent.makeURI(`sip:${target}@${this.config.host}`);
|
|
7337
7380
|
}
|
|
7338
7381
|
|
|
7339
|
-
async _disconnectTransport() {
|
|
7382
|
+
async _disconnectTransport(force = false) {
|
|
7383
|
+
if (force) {
|
|
7384
|
+
// Bypass sip.js state machine that prevent to close WS with the state `Connecting`
|
|
7385
|
+
this.userAgent.transport.disconnectResolve = () => {};
|
|
7386
|
+
// eslint-disable-next-line
|
|
7387
|
+
this.userAgent.transport._ws.close(1000);
|
|
7388
|
+
return;
|
|
7389
|
+
}
|
|
7390
|
+
|
|
7340
7391
|
// Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
|
|
7341
7392
|
if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
|
|
7342
7393
|
try {
|
|
@@ -4588,6 +4588,34 @@ var chatdMethods = (client , baseUrl ) => ({
|
|
|
4588
4588
|
client.get(`${baseUrl}/users/me/rooms/messages`, options),
|
|
4589
4589
|
});
|
|
4590
4590
|
|
|
4591
|
+
//
|
|
4592
|
+
|
|
4593
|
+
|
|
4594
|
+
|
|
4595
|
+
|
|
4596
|
+
|
|
4597
|
+
class MeetingStatus {
|
|
4598
|
+
|
|
4599
|
+
|
|
4600
|
+
|
|
4601
|
+
|
|
4602
|
+
constructor({
|
|
4603
|
+
full,
|
|
4604
|
+
} = {}) {
|
|
4605
|
+
this.full = full;
|
|
4606
|
+
|
|
4607
|
+
// Useful to compare instead of instanceof with minified code
|
|
4608
|
+
this.type = 'MeetingStatus';
|
|
4609
|
+
}
|
|
4610
|
+
|
|
4611
|
+
static parse(plain ) {
|
|
4612
|
+
return new MeetingStatus({
|
|
4613
|
+
full: plain.full,
|
|
4614
|
+
});
|
|
4615
|
+
}
|
|
4616
|
+
|
|
4617
|
+
}
|
|
4618
|
+
|
|
4591
4619
|
/* */
|
|
4592
4620
|
|
|
4593
4621
|
|
|
@@ -4782,6 +4810,8 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4782
4810
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
4783
4811
|
ApiRequester.successResponseParser),
|
|
4784
4812
|
|
|
4813
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
4814
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
4785
4815
|
});
|
|
4786
4816
|
|
|
4787
4817
|
//
|
|
@@ -5395,6 +5425,7 @@ class WebRTCClient extends Emitter {
|
|
|
5395
5425
|
|
|
5396
5426
|
|
|
5397
5427
|
|
|
5428
|
+
|
|
5398
5429
|
|
|
5399
5430
|
// sugar
|
|
5400
5431
|
|
|
@@ -5457,6 +5488,7 @@ class WebRTCClient extends Emitter {
|
|
|
5457
5488
|
this.conferences = {};
|
|
5458
5489
|
this.networkMonitoringInterval = {};
|
|
5459
5490
|
this.sessionNetworkStats = {};
|
|
5491
|
+
this.forceClosed = false;
|
|
5460
5492
|
|
|
5461
5493
|
this._boundOnHeartbeat = this._onHeartbeat.bind(this);
|
|
5462
5494
|
this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
|
|
@@ -5578,6 +5610,8 @@ class WebRTCClient extends Emitter {
|
|
|
5578
5610
|
skipRegister: this.skipRegister,
|
|
5579
5611
|
};
|
|
5580
5612
|
|
|
5613
|
+
this.forceClosed = false;
|
|
5614
|
+
|
|
5581
5615
|
if (this.skipRegister) {
|
|
5582
5616
|
logger.info('sdk webrtc skip register...', logInfo);
|
|
5583
5617
|
return Promise.resolve();
|
|
@@ -5602,7 +5636,15 @@ class WebRTCClient extends Emitter {
|
|
|
5602
5636
|
const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
|
|
5603
5637
|
|
|
5604
5638
|
const onRegisterFailed = () => {
|
|
5605
|
-
logger.info('sdk webrtc registering failed', {
|
|
5639
|
+
logger.info('sdk webrtc registering failed', {
|
|
5640
|
+
tries,
|
|
5641
|
+
registerer: !!this.registerer,
|
|
5642
|
+
forceClosed: this.forceClosed,
|
|
5643
|
+
});
|
|
5644
|
+
if (this.forceClosed) {
|
|
5645
|
+
return;
|
|
5646
|
+
}
|
|
5647
|
+
|
|
5606
5648
|
this.connectionPromise = null;
|
|
5607
5649
|
if (this.registerer && this.registerer.waiting) {
|
|
5608
5650
|
this.registerer.waitingToggle(false);
|
|
@@ -5880,8 +5922,9 @@ class WebRTCClient extends Emitter {
|
|
|
5880
5922
|
}
|
|
5881
5923
|
}
|
|
5882
5924
|
|
|
5883
|
-
async close() {
|
|
5884
|
-
logger.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
|
|
5925
|
+
async close(force = false) {
|
|
5926
|
+
logger.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
|
|
5927
|
+
this.forceClosed = force;
|
|
5885
5928
|
this._cleanupMedia();
|
|
5886
5929
|
this.connectionPromise = null;
|
|
5887
5930
|
|
|
@@ -5900,7 +5943,7 @@ class WebRTCClient extends Emitter {
|
|
|
5900
5943
|
this.userAgent.delegate = null;
|
|
5901
5944
|
this.userAgent.stateChange.removeAllListeners();
|
|
5902
5945
|
|
|
5903
|
-
await this._disconnectTransport();
|
|
5946
|
+
await this._disconnectTransport(force);
|
|
5904
5947
|
|
|
5905
5948
|
this._cleanupRegister();
|
|
5906
5949
|
|
|
@@ -7336,7 +7379,15 @@ class WebRTCClient extends Emitter {
|
|
|
7336
7379
|
return userAgent.UserAgent.makeURI(`sip:${target}@${this.config.host}`);
|
|
7337
7380
|
}
|
|
7338
7381
|
|
|
7339
|
-
async _disconnectTransport() {
|
|
7382
|
+
async _disconnectTransport(force = false) {
|
|
7383
|
+
if (force) {
|
|
7384
|
+
// Bypass sip.js state machine that prevent to close WS with the state `Connecting`
|
|
7385
|
+
this.userAgent.transport.disconnectResolve = () => {};
|
|
7386
|
+
// eslint-disable-next-line
|
|
7387
|
+
this.userAgent.transport._ws.close(1000);
|
|
7388
|
+
return;
|
|
7389
|
+
}
|
|
7390
|
+
|
|
7340
7391
|
// Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
|
|
7341
7392
|
if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
|
|
7342
7393
|
try {
|