27 lines
1.1 KiB
Dart
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;
|
|
}
|