diff --git a/CHANGELOG.md b/CHANGELOG.md index 9dcdd2451..c9b40900b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Properly order elements - Omit channels with no programmes - Properly identify channels using the format number.etv like `15.etv` +- Fix sorting episodes without episode metadata + - This bug prevented playouts from building and was most often seen when grouping multi-part episodes, as shows are sorted chronologically before checking for multi-part episodes ## [0.0.55-alpha] - 2021-09-03 ### Fixed diff --git a/ErsatzTV.Core/Scheduling/ChronologicalMediaComparer.cs b/ErsatzTV.Core/Scheduling/ChronologicalMediaComparer.cs index 22331d2e7..3c6add122 100644 --- a/ErsatzTV.Core/Scheduling/ChronologicalMediaComparer.cs +++ b/ErsatzTV.Core/Scheduling/ChronologicalMediaComparer.cs @@ -66,13 +66,17 @@ namespace ErsatzTV.Core.Scheduling int episode1 = x switch { - Episode e => e.EpisodeMetadata.Max(em => em.EpisodeNumber), + Episode e => e.EpisodeMetadata.HeadOrNone().Match( + em => em.EpisodeNumber, + () => int.MaxValue), _ => int.MaxValue }; int episode2 = y switch { - Episode e => e.EpisodeMetadata.Max(em => em.EpisodeNumber), + Episode e => e.EpisodeMetadata.HeadOrNone().Match( + em => em.EpisodeNumber, + () => int.MaxValue), _ => int.MaxValue };