From ad7a1edaf159f98691f15a56dc7e480779076902 Mon Sep 17 00:00:00 2001 From: magical Date: Sat, 1 Jan 2022 00:52:31 +0000 Subject: [PATCH] fix FeedSource item sorting we were sorting by strings instead of parsed dates and it was getting confused by RFC1123 dates that looked like Thu, 02 Dec 2021 00:00:00 -0700 Mon, 20 Sep 2021 00:00:00 -0600 Mon, 06 Sep 2021 00:00:00 -0600 Thu, 02 Sep 2021 00:00:00 -0600 Sun, 22 Aug 2021 00:00:00 -0600 which of course sort like Thu, 02 Sep 2021 00:00:00 -0600 Thu, 02 Dec 2021 00:00:00 -0700 Sun, 22 Aug 2021 00:00:00 -0600 Mon, 20 Sep 2021 00:00:00 -0600 Mon, 06 Sep 2021 00:00:00 -0600 --- main.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index 59f1093..aa9faad 100644 --- a/main.go +++ b/main.go @@ -146,8 +146,20 @@ func (src *FeedSource) update(ctx context.Context) { } items := feed.Items - sort.Slice(items, func(i, j int) bool { - return items[i].Updated >= items[j].Updated + sort.SliceStable(items, func(i, j int) bool { + var d1, d2 time.Time + if items[i].PublishedParsed != nil { + d1 = *items[i].PublishedParsed + } else if items[i].UpdatedParsed != nil { + d1 = *items[i].UpdatedParsed + } + + if items[j].PublishedParsed != nil { + d2 = *items[j].PublishedParsed + } else if items[j].UpdatedParsed != nil { + d2 = *items[j].UpdatedParsed + } + return !d1.Before(d2) }) src.Title = feed.Title src.Items = items