@@ -7,6 +7,7 @@ library messaging;
7
7
8
8
import 'dart:convert' ;
9
9
10
+ import 'package:dwds/data/serializers.dart' ;
10
11
import 'package:js/js.dart' ;
11
12
12
13
import 'web_api.dart' ;
@@ -21,7 +22,7 @@ enum Script {
21
22
}
22
23
23
24
enum MessageType {
24
- dartAppReady ;
25
+ debugInfo ;
25
26
26
27
factory MessageType .fromString (String value) {
27
28
return MessageType .values.byName (value);
@@ -57,34 +58,34 @@ class Message {
57
58
58
59
String toJSON () {
59
60
return jsonEncode ({
60
- 'type' : type.name,
61
61
'to' : to.name,
62
62
'from' : from.name,
63
- 'encodedBody' : body,
63
+ 'type' : type.name,
64
+ 'body' : body,
64
65
if (error != null ) 'error' : error,
65
66
});
66
67
}
67
68
}
68
69
69
- void interceptMessage ({
70
+ void interceptMessage < T > ({
70
71
required String ? message,
71
72
required MessageType expectedType,
72
73
required Script expectedSender,
73
74
required Script expectedRecipient,
74
- required void Function (String message) messageHandler,
75
+ required void Function (T message) messageHandler,
75
76
}) {
77
+ if (message == null ) return ;
76
78
try {
77
- if (message == null ) return ;
78
79
final decodedMessage = Message .fromJSON (message);
79
80
if (decodedMessage.type != expectedType ||
80
81
decodedMessage.to != expectedRecipient ||
81
82
decodedMessage.from != expectedSender) {
82
83
return ;
83
84
}
84
- messageHandler (decodedMessage.body);
85
+ messageHandler (
86
+ serializers.deserialize (jsonDecode (decodedMessage.body)) as T );
85
87
} catch (error) {
86
88
console.warn (
87
- 'Error intercepting $expectedType message from $expectedSender to $expectedRecipient : $error ' );
88
- return ;
89
+ 'Error intercepting $expectedType from $expectedSender to $expectedRecipient : $error ' );
89
90
}
90
91
}
0 commit comments