From 61ce39508db6305dfd5106d03da3459fb6ca2a07 Mon Sep 17 00:00:00 2001 From: Phantop Date: Thu, 20 Feb 2025 17:03:14 -0500 Subject: [PATCH] revert: use previous removeDuplicates to keep entry tag order Refs: 863a5b3 --- internal/storage/entry.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/internal/storage/entry.go b/internal/storage/entry.go index f22a424bc18..e3fabb36931 100644 --- a/internal/storage/entry.go +++ b/internal/storage/entry.go @@ -8,7 +8,6 @@ import ( "errors" "fmt" "log/slog" - "slices" "strings" "time" @@ -612,9 +611,18 @@ func (s *Storage) UnshareEntry(userID int64, entryID int64) (err error) { return } -func removeDuplicates(l []string) []string { - slices.Sort(l) - return slices.Compact(l) +// removeDuplicate removes duplicate entries from a slice while keeping order. +// Some feeds expect tags to be shown in order, so we preserve it rather than sort. +func removeDuplicates[T string | int](sliceList []T) []T { + allKeys := make(map[T]bool) + list := []T{} + for _, item := range sliceList { + if _, value := allKeys[item]; !value { + allKeys[item] = true + list = append(list, item) + } + } + return list } func removeEmpty(l []string) []string {