contactEvents property

  1. @override
Stream<ContactEvent?> contactEvents
override

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);
}