From d1d7cbd74dceb003693d530385aaf7079830a4b5 Mon Sep 17 00:00:00 2001 From: PartyDonut <42371342+PartyDonut@users.noreply.github.com> Date: Sat, 17 May 2025 14:47:24 +0200 Subject: [PATCH] fix: Remove specials from nextUp selection (#343) Co-authored-by: PartyDonut --- lib/models/items/episode_model.dart | 13 ++++++++----- lib/providers/items/series_details_provider.dart | 6 +++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/models/items/episode_model.dart b/lib/models/items/episode_model.dart index 7f94a18..56ec3d5 100644 --- a/lib/models/items/episode_model.dart +++ b/lib/models/items/episode_model.dart @@ -199,15 +199,18 @@ extension EpisodeListExtensions on List { } EpisodeModel? get nextUp { - final lastProgress = - lastIndexWhere((element) => element.userData.progress != 0 && element.status == EpisodeStatus.available); + final episodes = whereNot((element) => element.season <= 0).toList(); + + final lastProgress = episodes + .lastIndexWhere((element) => element.userData.progress != 0 && element.status == EpisodeStatus.available); final lastPlayed = - lastIndexWhere((element) => element.userData.played && element.status == EpisodeStatus.available); + episodes.lastIndexWhere((element) => element.userData.played && element.status == EpisodeStatus.available); if (lastProgress == -1 && lastPlayed == -1) { - return firstWhereOrNull((element) => element.status == EpisodeStatus.available); + return episodes.firstWhereOrNull((element) => element.status == EpisodeStatus.available); } else { - return getRange(lastProgress > lastPlayed ? lastProgress : lastPlayed + 1, length) + return episodes + .getRange(lastProgress > lastPlayed ? lastProgress : lastPlayed + 1, episodes.length) .firstWhereOrNull((element) => element.status == EpisodeStatus.available); } } diff --git a/lib/providers/items/series_details_provider.dart b/lib/providers/items/series_details_provider.dart index 3bec5cb..61083b0 100644 --- a/lib/providers/items/series_details_provider.dart +++ b/lib/providers/items/series_details_provider.dart @@ -1,15 +1,15 @@ import 'package:chopper/chopper.dart'; -import 'package:fladder/models/item_base_model.dart'; -import 'package:fladder/providers/service_provider.dart'; -import 'package:fladder/providers/sync_provider.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart'; +import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/items/episode_model.dart'; import 'package:fladder/models/items/season_model.dart'; import 'package:fladder/models/items/series_model.dart'; import 'package:fladder/providers/api_provider.dart'; import 'package:fladder/providers/related_provider.dart'; +import 'package:fladder/providers/service_provider.dart'; +import 'package:fladder/providers/sync_provider.dart'; final seriesDetailsProvider = StateNotifierProvider.autoDispose.family((ref, id) {