Skip to content

Commit e29d6cd

Browse files
update to compile against flutter 3.27 beta, toJS cannot be used on anonymous functions anymore
1 parent baf6d5b commit e29d6cd

File tree

5 files changed

+203
-202
lines changed

5 files changed

+203
-202
lines changed

lib/src/frame_cryptor_impl.dart

Lines changed: 53 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -372,63 +372,60 @@ class KeyProviderImpl implements KeyProvider {
372372
class FrameCryptorFactoryImpl implements FrameCryptorFactory {
373373
FrameCryptorFactoryImpl._internal() {
374374
worker = web.Worker('e2ee.worker.dart.js'.toJS);
375-
worker.addEventListener(
376-
'message',
377-
(web.MessageEvent msg) {
378-
final data = msg.data.dartify() as Map;
379-
//print('master got $data');
380-
var type = data['type'];
381-
var msgId = data['msgId'];
382-
var msgType = data['msgType'];
383-
384-
if (msgType == 'response') {
385-
events.emit(WorkerResponse(msgId, data));
386-
} else if (msgType == 'event') {
387-
if (type == 'cryptorState') {
388-
var trackId = data['trackId'];
389-
var participantId = data['participantId'];
390-
var frameCryptor = _frameCryptors.values.firstWhereOrNull(
391-
(element) =>
392-
(element as FrameCryptorImpl).trackId == trackId);
393-
var state = data['state'];
394-
var frameCryptorState = FrameCryptorState.FrameCryptorStateNew;
395-
switch (state) {
396-
case 'ok':
397-
frameCryptorState = FrameCryptorState.FrameCryptorStateOk;
398-
break;
399-
case 'decryptError':
400-
frameCryptorState =
401-
FrameCryptorState.FrameCryptorStateDecryptionFailed;
402-
break;
403-
case 'encryptError':
404-
frameCryptorState =
405-
FrameCryptorState.FrameCryptorStateEncryptionFailed;
406-
break;
407-
case 'missingKey':
408-
frameCryptorState =
409-
FrameCryptorState.FrameCryptorStateMissingKey;
410-
break;
411-
case 'internalError':
412-
frameCryptorState =
413-
FrameCryptorState.FrameCryptorStateInternalError;
414-
break;
415-
case 'keyRatcheted':
416-
frameCryptorState =
417-
FrameCryptorState.FrameCryptorStateKeyRatcheted;
418-
break;
419-
}
420-
frameCryptor?.onFrameCryptorStateChanged
421-
?.call(participantId, frameCryptorState);
422-
}
375+
376+
void Function(web.MessageEvent) onMessage = (web.MessageEvent msg) {
377+
final data = msg.data.dartify() as Map;
378+
//print('master got $data');
379+
var type = data['type'];
380+
var msgId = data['msgId'];
381+
var msgType = data['msgType'];
382+
383+
if (msgType == 'response') {
384+
events.emit(WorkerResponse(msgId, data));
385+
} else if (msgType == 'event') {
386+
if (type == 'cryptorState') {
387+
var trackId = data['trackId'];
388+
var participantId = data['participantId'];
389+
var frameCryptor = _frameCryptors.values.firstWhereOrNull(
390+
(element) => (element as FrameCryptorImpl).trackId == trackId);
391+
var state = data['state'];
392+
var frameCryptorState = FrameCryptorState.FrameCryptorStateNew;
393+
switch (state) {
394+
case 'ok':
395+
frameCryptorState = FrameCryptorState.FrameCryptorStateOk;
396+
break;
397+
case 'decryptError':
398+
frameCryptorState =
399+
FrameCryptorState.FrameCryptorStateDecryptionFailed;
400+
break;
401+
case 'encryptError':
402+
frameCryptorState =
403+
FrameCryptorState.FrameCryptorStateEncryptionFailed;
404+
break;
405+
case 'missingKey':
406+
frameCryptorState = FrameCryptorState.FrameCryptorStateMissingKey;
407+
break;
408+
case 'internalError':
409+
frameCryptorState =
410+
FrameCryptorState.FrameCryptorStateInternalError;
411+
break;
412+
case 'keyRatcheted':
413+
frameCryptorState =
414+
FrameCryptorState.FrameCryptorStateKeyRatcheted;
415+
break;
423416
}
424-
}.toJS,
425-
false.toJS);
426-
worker.addEventListener(
427-
'error',
428-
(web.ErrorEvent err) {
429-
print('worker error: $err');
430-
}.toJS,
431-
false.toJS);
417+
frameCryptor?.onFrameCryptorStateChanged
418+
?.call(participantId, frameCryptorState);
419+
}
420+
}
421+
};
422+
423+
worker.addEventListener('message', onMessage.toJS, false.toJS);
424+
425+
void Function(web.ErrorEvent err) onError = (web.ErrorEvent err) {
426+
print('worker error: $err');
427+
};
428+
worker.addEventListener('error', onError.toJS, false.toJS);
432429
}
433430

434431
static final FrameCryptorFactoryImpl instance =

lib/src/media_recorder_impl.dart

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -35,33 +35,30 @@ class MediaRecorderWeb extends MediaRecorder {
3535
if (onDataChunk == null) {
3636
var _chunks = <web.Blob>[];
3737
_completer = Completer<String>();
38-
_recorder.addEventListener(
39-
'dataavailable',
40-
(web.Event event) {
41-
final blob = event.getProperty('data'.toJS) as web.Blob;
42-
if (blob.size > 0) {
43-
_chunks.add(blob);
44-
}
45-
if (_recorder.state == 'inactive') {
46-
final blob =
47-
web.Blob(_chunks.toJS, web.BlobPropertyBag(type: mimeType));
48-
_completer.complete(web.URL.createObjectURL(blob));
49-
}
50-
}.toJS);
51-
_recorder.addEventListener(
52-
'error',
53-
(JSAny error) {
54-
_completer.completeError(error);
55-
}.toJS);
38+
final void Function(web.Event event) callback = (web.Event event) {
39+
final blob = event.getProperty('data'.toJS) as web.Blob;
40+
if (blob.size > 0) {
41+
_chunks.add(blob);
42+
}
43+
if (_recorder.state == 'inactive') {
44+
final blob =
45+
web.Blob(_chunks.toJS, web.BlobPropertyBag(type: mimeType));
46+
_completer.complete(web.URL.createObjectURL(blob));
47+
}
48+
};
49+
final void Function(JSAny) onError = (JSAny error) {
50+
_completer.completeError(error);
51+
};
52+
_recorder.addEventListener('dataavailable', callback.toJS);
53+
_recorder.addEventListener('error', onError.toJS);
5654
} else {
57-
_recorder.addEventListener(
58-
'dataavailable',
59-
(web.Event event) {
60-
onDataChunk(
61-
event.getProperty('data'.toJS),
62-
_recorder.state == 'inactive',
63-
);
64-
}.toJS);
55+
final void Function(web.Event event) callback = (web.Event event) {
56+
onDataChunk(
57+
event.getProperty('data'.toJS),
58+
_recorder.state == 'inactive',
59+
);
60+
};
61+
_recorder.addEventListener('dataavailable', callback.toJS);
6562
}
6663
_recorder.start(timeSlice);
6764
}

lib/src/media_stream_track_impl.dart

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,15 @@ import 'utils.dart';
99

1010
class MediaStreamTrackWeb extends MediaStreamTrack {
1111
MediaStreamTrackWeb(this.jsTrack) {
12-
jsTrack.addEventListener('ended', ((event) => onEnded?.call()).toJS);
13-
jsTrack.addEventListener('mute', ((event) => onMute?.call()).toJS);
14-
jsTrack.addEventListener('unmute', ((event) => onUnMute?.call()).toJS);
12+
if (onEnded != null) {
13+
jsTrack.addEventListener('ended', onEnded?.toJS);
14+
}
15+
if (onMute != null) {
16+
jsTrack.addEventListener('mute', onMute?.toJS);
17+
}
18+
if (onUnMute != null) {
19+
jsTrack.addEventListener('unmute', onUnMute?.toJS);
20+
}
1521
}
1622

1723
final web.MediaStreamTrack jsTrack;
@@ -99,9 +105,10 @@ class MediaStreamTrackWeb extends MediaStreamTrack {
99105
renderer.transferFromImageBitmap(bitmap);
100106

101107
final blobCompleter = Completer<web.Blob>();
102-
canvas.toBlob((web.Blob blob) {
108+
final void Function(web.Blob blob) toBlob = (web.Blob blob) {
103109
blobCompleter.complete(blob);
104-
}.toJS);
110+
};
111+
canvas.toBlob(toBlob.toJS);
105112

106113
final blod = await blobCompleter.future;
107114

lib/src/rtc_data_channel_impl.dart

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -8,36 +8,33 @@ class RTCDataChannelWeb extends RTCDataChannel {
88
RTCDataChannelWeb(this._jsDc) {
99
stateChangeStream = _stateChangeController.stream;
1010
messageStream = _messageController.stream;
11-
_jsDc.addEventListener(
12-
'close',
13-
(_) {
14-
_state = RTCDataChannelState.RTCDataChannelClosed;
15-
_stateChangeController.add(_state);
16-
onDataChannelState?.call(_state);
17-
}.toJS,
18-
false.toJS);
19-
_jsDc.addEventListener(
20-
'open',
21-
(_) {
22-
_state = RTCDataChannelState.RTCDataChannelOpen;
23-
_stateChangeController.add(_state);
24-
onDataChannelState?.call(_state);
25-
}.toJS,
26-
false.toJS);
27-
_jsDc.addEventListener(
28-
'message',
11+
final void Function(JSAny) onClose = (_) {
12+
_state = RTCDataChannelState.RTCDataChannelClosed;
13+
_stateChangeController.add(_state);
14+
onDataChannelState?.call(_state);
15+
};
16+
17+
final void Function(JSAny) onOpen = (_) {
18+
_state = RTCDataChannelState.RTCDataChannelOpen;
19+
_stateChangeController.add(_state);
20+
onDataChannelState?.call(_state);
21+
};
22+
23+
final void Function(web.MessageEvent event) onMessageCb =
2924
(web.MessageEvent event) async {
30-
var msg = await _parse(event.data);
31-
_messageController.add(msg);
32-
onMessage?.call(msg);
33-
}.toJS,
34-
false.toJS);
35-
_jsDc.addEventListener(
36-
'bufferedamountlow',
37-
(_) {
38-
onBufferedAmountLow?.call(bufferedAmount ?? 0);
39-
}.toJS,
40-
false.toJS);
25+
var msg = await _parse(event.data);
26+
_messageController.add(msg);
27+
onMessage?.call(msg);
28+
};
29+
30+
final void Function(JSAny) toLow = (_) {
31+
onBufferedAmountLow?.call(bufferedAmount ?? 0);
32+
};
33+
34+
_jsDc.addEventListener('close', onClose.toJS, false.toJS);
35+
_jsDc.addEventListener('open', onOpen.toJS, false.toJS);
36+
_jsDc.addEventListener('message', onMessageCb.toJS, false.toJS);
37+
_jsDc.addEventListener('bufferedamountlow', toLow.toJS, false.toJS);
4138
}
4239

4340
final web.RTCDataChannel _jsDc;

0 commit comments

Comments
 (0)