doOnMessage method
Implementation of org.unifiedpush.Connector2.Message()
Implementation
Future<DBusMethodResponse> doOnMessage(
String instance,
Map<String, DBusValue> args
) async {
final onMessage = _onMessage;
if (onMessage == null) return _dbusSuccess;
var serializedKey = await storage.keys.get(instance);
var bytesMessage = args["message"]?.asByteArray().toList();
if (bytesMessage == null) return DBusMethodErrorResponse.invalidArgs();
var message = PushMessage(
Uint8List.fromList(bytesMessage),
false,
);
try {
if (serializedKey != null) {
var key = await WebPushKeySet.deserialize(serializedKey);
message = PushMessage(
await WebPush().decrypt(key, message.content),
true
);
} else {
throw Exception("No webpush key found for $instance");
}
} catch(e) {
if (e is ArgumentError || e is KeyError || e is DecryptionError) {
debugPrint("Could not decrypt message: ${e.runtimeType}");
} else {
debugPrint("Could not decrypt message: $e");
}
} finally {
onMessage.call(message, instance);
}
return _dbusSuccess;
}