Files
plezy/lib/utils/downloaded_version_match.dart
T

27 lines
1.1 KiB
Dart

import '../database/app_database.dart';
/// Single source of truth for "does this downloaded row satisfy a version
/// request".
///
/// Source-id comparison wins when both sides have one — Jellyfin merged
/// versions can reorder between item fetches, so the stable id is the only
/// trustworthy discriminator there. Otherwise fall back to the media index.
/// A null [requestedMediaIndex] means "any version" (the caller has no
/// version opinion, e.g. external-player launches keyed by item only).
bool downloadedVersionMatches(DownloadedMediaItem row, {int? requestedMediaIndex, String? requestedMediaSourceId}) {
final downloadedSourceId = row.mediaSourceId;
final requestedSourceId = requestedMediaSourceId?.trim();
final comparedBySourceId =
requestedSourceId != null &&
requestedSourceId.isNotEmpty &&
downloadedSourceId != null &&
downloadedSourceId.isNotEmpty;
if (comparedBySourceId) {
return downloadedSourceId == requestedSourceId;
}
if (requestedMediaIndex == null) {
return true;
}
return row.mediaIndex == requestedMediaIndex;
}