fix: Handle sorting for accented strings

This commit is contained in:
Michael Manganiello
2024-03-06 00:55:46 -03:00
parent 2cb002dde0
commit d917efe801
2 changed files with 6 additions and 4 deletions
@@ -1,10 +1,11 @@
package subsonic package subsonic
import ( import (
"cmp"
"log" "log"
"slices" "slices"
"strings"
"golang.org/x/text/collate"
"golang.org/x/text/language"
"github.com/dweymouth/go-subsonic/subsonic" "github.com/dweymouth/go-subsonic/subsonic"
"github.com/dweymouth/supersonic/backend/mediaprovider" "github.com/dweymouth/supersonic/backend/mediaprovider"
@@ -30,8 +31,9 @@ func (s *subsonicMediaProvider) IterateArtists(sortOrder string) mediaprovider.A
case ArtistSortNameAZ: case ArtistSortNameAZ:
return s.baseArtistIterFromSimpleSortOrder( return s.baseArtistIterFromSimpleSortOrder(
func(artists []*subsonic.ArtistID3) []*subsonic.ArtistID3 { func(artists []*subsonic.ArtistID3) []*subsonic.ArtistID3 {
c := collate.New(language.English, collate.Loose)
slices.SortFunc(artists, func(a, b *subsonic.ArtistID3) int { 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 return artists
}, },
+1 -1
View File
@@ -16,6 +16,7 @@ require (
github.com/quarckster/go-mpris-server v1.0.3 github.com/quarckster/go-mpris-server v1.0.3
github.com/zalando/go-keyring v0.2.1 github.com/zalando/go-keyring v0.2.1
golang.org/x/net v0.17.0 golang.org/x/net v0.17.0
golang.org/x/text v0.14.0
) )
require ( require (
@@ -42,7 +43,6 @@ require (
golang.org/x/image v0.14.0 // indirect golang.org/x/image v0.14.0 // indirect
golang.org/x/mobile v0.0.0-20230531173138-3c911d8e3eda // indirect golang.org/x/mobile v0.0.0-20230531173138-3c911d8e3eda // indirect
golang.org/x/sys v0.13.0 // 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 gopkg.in/yaml.v3 v3.0.1 // indirect
honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2 // indirect honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2 // indirect
) )