From d917efe801b568dedc35738698b4cb0828b33736 Mon Sep 17 00:00:00 2001 From: Michael Manganiello Date: Tue, 5 Mar 2024 00:56:09 -0300 Subject: [PATCH] fix: Handle sorting for accented strings --- backend/mediaprovider/subsonic/artistiterator.go | 8 +++++--- go.mod | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/backend/mediaprovider/subsonic/artistiterator.go b/backend/mediaprovider/subsonic/artistiterator.go index 97281e4..b0688fa 100644 --- a/backend/mediaprovider/subsonic/artistiterator.go +++ b/backend/mediaprovider/subsonic/artistiterator.go @@ -1,10 +1,11 @@ package subsonic import ( - "cmp" "log" "slices" - "strings" + + "golang.org/x/text/collate" + "golang.org/x/text/language" "github.com/dweymouth/go-subsonic/subsonic" "github.com/dweymouth/supersonic/backend/mediaprovider" @@ -30,8 +31,9 @@ func (s *subsonicMediaProvider) IterateArtists(sortOrder string) mediaprovider.A case ArtistSortNameAZ: return s.baseArtistIterFromSimpleSortOrder( func(artists []*subsonic.ArtistID3) []*subsonic.ArtistID3 { + c := collate.New(language.English, collate.Loose) slices.SortFunc(artists, func(a, b *subsonic.ArtistID3) int { - return cmp.Compare(strings.ToLower(a.Name), strings.ToLower(b.Name)) + return c.CompareString(a.Name, b.Name) }) return artists }, diff --git a/go.mod b/go.mod index 6e39c67..3af1b7e 100644 --- a/go.mod +++ b/go.mod @@ -16,6 +16,7 @@ require ( github.com/quarckster/go-mpris-server v1.0.3 github.com/zalando/go-keyring v0.2.1 golang.org/x/net v0.17.0 + golang.org/x/text v0.14.0 ) require ( @@ -42,7 +43,6 @@ require ( golang.org/x/image v0.14.0 // indirect golang.org/x/mobile v0.0.0-20230531173138-3c911d8e3eda // indirect golang.org/x/sys v0.13.0 // indirect - golang.org/x/text v0.14.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2 // indirect )