From 21534138695b1f4e4efd499af1ae8f8d2ccd3bc9 Mon Sep 17 00:00:00 2001 From: PartyDonut <42371342+PartyDonut@users.noreply.github.com> Date: Sat, 9 Nov 2024 09:20:44 +0100 Subject: [PATCH] fix: Fixed season sorting episode view (#135) Co-authored-by: PartyDonut --- lib/models/items/episode_model.dart | 33 +++++++++++++++++------------ 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/lib/models/items/episode_model.dart b/lib/models/items/episode_model.dart index 052be90..8ce5f37 100644 --- a/lib/models/items/episode_model.dart +++ b/lib/models/items/episode_model.dart @@ -1,11 +1,12 @@ -import 'package:collection/collection.dart'; -import 'package:fladder/jellyfin/enum_models.dart'; -import 'package:fladder/models/items/series_model.dart'; -import 'package:fladder/util/localization_helper.dart'; -import 'package:fladder/util/string_extensions.dart'; +import 'dart:collection'; + import 'package:flutter/material.dart'; + +import 'package:collection/collection.dart'; +import 'package:dart_mappable/dart_mappable.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:fladder/jellyfin/enum_models.dart'; import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart' as dto; import 'package:fladder/models/items/chapters_model.dart'; import 'package:fladder/models/items/images_models.dart'; @@ -13,7 +14,9 @@ import 'package:fladder/models/items/item_shared_models.dart'; import 'package:fladder/models/items/item_stream_model.dart'; import 'package:fladder/models/items/media_streams_model.dart'; import 'package:fladder/models/items/overview_model.dart'; -import 'package:dart_mappable/dart_mappable.dart'; +import 'package:fladder/models/items/series_model.dart'; +import 'package:fladder/util/localization_helper.dart'; +import 'package:fladder/util/string_extensions.dart'; part 'episode_model.mapper.dart'; @@ -164,16 +167,18 @@ class EpisodeModel extends ItemStreamModel with EpisodeModelMappable { extension EpisodeListExtensions on List { Map> get episodesBySeason { - Map> groupedItems = {}; + final Map> groupedItems = {}; for (int i = 0; i < length; i++) { - int seasonIndex = this[i].season; - if (!groupedItems.containsKey(seasonIndex)) { - groupedItems[seasonIndex] = [this[i]]; - } else { - groupedItems[seasonIndex]?.add(this[i]); - } + final int seasonIndex = this[i].season; + groupedItems.putIfAbsent(seasonIndex, () => []).add(this[i]); } - return groupedItems; + + String addPadding(int value) => value.toString().padLeft(6, '0'); + + return SplayTreeMap>.from( + groupedItems, + (a, b) => addPadding(a).compareTo(addPadding(b)), + ); } EpisodeModel? get nextUp {