import 'dart:async'; import '../utils/base_notifier.dart'; import '../utils/hierarchical_event_mixin.dart'; /// Creates a filtered stream subscription for hierarchical events. /// /// Used internally by [DeletionAware] and [WatchStateAware] to avoid /// duplicating the subscription and filtering logic. StreamSubscription subscribeToHierarchicalEvents({ required BaseNotifier notifier, required bool Function() mounted, required String? Function() serverId, required Set? Function() globalKeys, required Set? Function() itemIds, required void Function(E event) onEvent, }) { return notifier.stream.listen((event) { if (!mounted()) return; final sid = serverId(); if (sid != null && event.serverId != sid) return; final gk = globalKeys(); if (gk != null) { if (event.affectsAnyGlobalKey(gk)) { onEvent(event); } return; } final ids = itemIds(); if (ids == null || event.affectsAnyOf(ids)) { onEvent(event); } }); }