Files
plezy/lib/utils/hierarchical_event_mixin.dart
T
edde746 4307c49cd2 refactor: remove unreachable code paths and unused members
Drops dead code across services, models, utils and widgets, including the
connection auth service, which had no implementer, and the Live TV DVR
provisioning models, which had no caller.

Tests that only covered deleted behaviour are removed or trimmed. No
behaviour change.
2026-07-26 06:09:47 +02:00

41 lines
1.3 KiB
Dart

import 'global_key_utils.dart';
import '../media/ids.dart';
/// Mixin providing hierarchical event matching methods.
///
/// Events that represent changes to media items often need to check if they
/// affect a specific item or any of its parents in the hierarchy. This mixin
/// provides common matching logic for such events.
mixin HierarchicalEventMixin {
/// The id of the affected item (Plex ratingKey, Jellyfin GUID, …).
String get itemId;
String get globalKey;
ServerId get serverId;
/// Parent chain for hierarchical matching.
/// For an episode: [seasonId, showId]
/// For a season: [showId]
/// For a movie: []
List<String> get parentChain;
/// Check if this event affects a specific item by id.
bool affectsItem(String itemId) => this.itemId == itemId || parentChain.contains(itemId);
/// Check if this event affects any item in a collection.
bool affectsAnyOf(Iterable<String> itemIds) {
if (itemIds.contains(itemId)) return true;
return parentChain.any(itemIds.contains);
}
/// Check if this event affects any item in a global-key collection.
bool affectsAnyGlobalKey(Iterable<String> globalKeys) {
if (globalKeys.contains(globalKey)) return true;
for (final parentId in parentChain) {
if (globalKeys.contains(buildGlobalKey(serverId, parentId))) return true;
}
return false;
}
}