Skip to content

Commit b895a53

Browse files
author
Mikael Wills
committed
Added local video stream to localStreaMedia so you can mute your video on an upgrade, and now can await unregister
1 parent 9e1b995 commit b895a53

File tree

5 files changed

+28
-9
lines changed

5 files changed

+28
-9
lines changed

lib/src/registrator.dart

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,11 +276,11 @@ class Registrator {
276276
request_sender.send();
277277
}
278278

279-
void unregister(bool unregister_all) {
279+
Future<bool> unregister(bool unregister_all) async {
280280
if (_registered == false) {
281281
logger.d('already unregistered');
282282

283-
return;
283+
return true;
284284
}
285285

286286
_registered = false;
@@ -314,11 +314,14 @@ class Registrator {
314314
extraHeaders);
315315

316316
EventManager handlers = EventManager();
317+
Completer<bool> completer = Completer<bool>();
317318
handlers.on(EventOnRequestTimeout(), (EventOnRequestTimeout value) {
318319
_unregistered(null, DartSIP_C.CausesType.REQUEST_TIMEOUT);
320+
completer.complete(false);
319321
});
320322
handlers.on(EventOnTransportError(), (EventOnTransportError value) {
321323
_unregistered(null, DartSIP_C.CausesType.CONNECTION_ERROR);
324+
completer.complete(false);
322325
});
323326
handlers.on(EventOnAuthenticated(), (EventOnAuthenticated response) {
324327
// Increase the CSeq on authentication.
@@ -329,17 +332,20 @@ class Registrator {
329332
String status_code = event.response!.status_code.toString();
330333
if (utils.test2XX(status_code)) {
331334
_unregistered(event.response);
335+
completer.complete(true);
332336
} else if (utils.test1XX(status_code)) {
333337
// Ignore provisional responses.
334338
} else {
335339
String cause = utils.sipErrorCause(event.response!.status_code);
336340
_unregistered(event.response, cause);
341+
completer.complete(true);
337342
}
338343
});
339344

340345
RequestSender request_sender = RequestSender(_ua, request, handlers);
341346

342347
request_sender.send();
348+
return completer.future;
343349
}
344350

345351
void close() {

lib/src/rtc_session.dart

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2091,10 +2091,13 @@ class RTCSession extends EventManager implements Owner {
20912091
for (MediaStreamTrack track in localStream.getTracks()) {
20922092
if (track.kind == 'video') {
20932093
_connection!.addTrack(track, localStream);
2094+
_localMediaStream?.addTrack(track);
20942095
}
20952096
}
20962097
emit(EventStream(
2097-
session: this, originator: Originator.local, stream: localStream));
2098+
session: this,
2099+
originator: Originator.local,
2100+
stream: _localMediaStream));
20982101
} else {
20992102
logger.w(
21002103
'Remote wants to upgrade to video but no camera available to send');
@@ -3249,17 +3252,27 @@ class RTCSession extends EventManager implements Owner {
32493252

32503253
void _toggleMuteAudio(bool mute) {
32513254
if (_localMediaStream != null) {
3255+
if (_localMediaStream!.getAudioTracks().isEmpty) {
3256+
logger.w('Went to mute video but local stream has no video tracks');
3257+
}
32523258
for (MediaStreamTrack track in _localMediaStream!.getAudioTracks()) {
32533259
track.enabled = !mute;
32543260
}
3261+
} else {
3262+
logger.w('Went to mute audio but local stream is null');
32553263
}
32563264
}
32573265

32583266
void _toggleMuteVideo(bool mute) {
32593267
if (_localMediaStream != null) {
3268+
if (_localMediaStream!.getVideoTracks().isEmpty) {
3269+
logger.w('Went to mute video but local stream has no video tracks');
3270+
}
32603271
for (MediaStreamTrack track in _localMediaStream!.getVideoTracks()) {
32613272
track.enabled = !mute;
32623273
}
3274+
} else {
3275+
logger.w('Went to mute video but local stream is null');
32633276
}
32643277
}
32653278

lib/src/sip_ua_helper.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,13 @@ class SIPUAHelper extends EventManager {
8686
_ua!.register();
8787
}
8888

89-
void unregister([bool all = true]) {
89+
Future<bool> unregister([bool all = true]) async {
9090
if (_ua != null) {
9191
assert(registered, 'ERROR: you must call register first.');
92-
_ua!.unregister(all: all);
92+
return _ua!.unregister(all: all);
9393
} else {
9494
logger.e('ERROR: unregister called, you must call start first.');
95+
return false;
9596
}
9697
}
9798

lib/src/ua.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,11 +185,11 @@ class UA extends EventManager {
185185
/**
186186
* Unregister.
187187
*/
188-
void unregister({bool all = false}) {
188+
Future<bool> unregister({bool all = false}) {
189189
logger.d('unregister()');
190190

191191
_dynConfiguration!.register = false;
192-
_registrator.unregister(all);
192+
return _registrator.unregister(all);
193193
}
194194

195195
/**

pubspec.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ environment:
99
dependencies:
1010
collection: ^1.18.0
1111
crypto: ^3.0.3
12-
flutter_webrtc: ^0.12.4
12+
flutter_webrtc: ^0.12.6
1313
intl: ^0.20.1
1414
logger: ^2.0.2+1
1515
path: ^1.6.4
@@ -18,7 +18,6 @@ dependencies:
1818
text: ^0.2.0
1919
uuid: ^4.2.1
2020

21-
2221
dev_dependencies:
2322
import_sorter: ^4.6.0
2423
lints: ^4.0.0

0 commit comments

Comments
 (0)