From 6ea0a29638946b35c27948f26afd77dcb49dabae Mon Sep 17 00:00:00 2001 From: Jason Dove <1695733+jasongdove@users.noreply.github.com> Date: Mon, 20 Apr 2026 08:49:17 -0500 Subject: [PATCH] fix: consistently apply playout offset when generating xmltv (#2863) --- CHANGELOG.md | 1 + .../Commands/RefreshChannelDataHandler.cs | 27 +++++++++---------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7134f958c..d1a51607d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Fix `Add Playout` button not opening drop down menu (regression from v26.4.0) +- Consistently apply playout offset when generating XMLTV ## [26.4.0] - 2026-04-18 ### Changed diff --git a/ErsatzTV.Application/Channels/Commands/RefreshChannelDataHandler.cs b/ErsatzTV.Application/Channels/Commands/RefreshChannelDataHandler.cs index 5d0207327..fb43cb66f 100644 --- a/ErsatzTV.Application/Channels/Commands/RefreshChannelDataHandler.cs +++ b/ErsatzTV.Application/Channels/Commands/RefreshChannelDataHandler.cs @@ -215,6 +215,18 @@ public class RefreshChannelDataHandler : IRequestHandler .AsSplitQuery() .ToListAsync(cancellationToken); + // apply playout offset to all items consistently + foreach (Playout playout in playouts) + { + foreach (PlayoutItem item in playout.Items) + { + item.Start += playoutOffset; + item.GuideStart += playoutOffset; + item.Finish += playoutOffset; + item.GuideFinish += playoutOffset; + } + } + await using RecyclableMemoryStream ms = _recyclableMemoryStreamManager.GetStream(); await using var xml = XmlWriter.Create( ms, @@ -238,11 +250,6 @@ public class RefreshChannelDataHandler : IRequestHandler .OrderBy(pi => pi.Start) .Filter(pi => pi.StartOffset <= finish) .ToList(); - foreach (var item in floodSorted) - { - item.Start += playoutOffset; - item.Finish += playoutOffset; - } await WritePlayoutXml( request, @@ -264,11 +271,6 @@ public class RefreshChannelDataHandler : IRequestHandler .OrderBy(pi => pi.Start) .Filter(pi => pi.StartOffset <= finish) .ToList(); - foreach (var item in blockSorted) - { - item.Start += playoutOffset; - item.Finish += playoutOffset; - } await WriteBlockPlayoutXml( request, @@ -288,11 +290,6 @@ public class RefreshChannelDataHandler : IRequestHandler var externalJsonSorted = (await CollectExternalJsonItems(playout.ScheduleFile)) .Filter(pi => pi.StartOffset <= finish) .ToList(); - foreach (var item in externalJsonSorted) - { - item.Start += playoutOffset; - item.Finish += playoutOffset; - } await WritePlayoutXml( request,