Implementation
@override
Stream<ContactEvent?> get contactEvents {
_eventStream ??= events.receiveBroadcastStream();
return _eventStream!.map((final input) {
if (input is! Map) {
_log.severe("Invalid contact event. Not passing through");
return null;
}
final dyn = input.cast<String, dynamic>();
try {
String? eventType = dyn["event"] as String?;
ContactEvent event;
switch (eventType) {
case "contacts-changed":
event = ContactsChangedEvent();
break;
default:
print("Unable to determine type");
event = UnknownContactEvent(dyn);
break;
}
_log.fine("Contact service event: $event");
return event;
} catch (e, stack) {
_log.severe("Error building event: $e", e, stack);
return null;
}
}).where((event) => event != null);
}