feat(subsonic): set sortName for OS AlbumList (#3776)

* feat(subsonic): Set SortName for OS AlbumList, test to JSON/XML

* albumlist2, star2 updated properly

* fix(subsonic): add sort or order name based on config

Signed-off-by: Deluan <deluan@navidrome.org>

---------

Signed-off-by: Deluan <deluan@navidrome.org>
Co-authored-by: Deluan <deluan@navidrome.org>
This commit is contained in:
Kendall Garner
2025-03-06 03:52:15 +00:00
committed by GitHub
parent 8732fc7226
commit 5869f7caaf
6 changed files with 145 additions and 6 deletions
+20 -4
View File
@@ -103,8 +103,8 @@ func (api *Router) GetAlbumList2(w http.ResponseWriter, r *http.Request) (*respo
w.Header().Set("x-total-count", strconv.FormatInt(pageCount, 10))
response := newResponse()
response.AlbumList2 = &responses.AlbumList{
Album: slice.MapWithArg(albums, r.Context(), childFromAlbum),
response.AlbumList2 = &responses.AlbumList2{
Album: slice.MapWithArg(albums, r.Context(), buildAlbumID3),
}
return response, nil
}
@@ -137,13 +137,29 @@ func (api *Router) GetStarred(r *http.Request) (*responses.Subsonic, error) {
}
func (api *Router) GetStarred2(r *http.Request) (*responses.Subsonic, error) {
resp, err := api.GetStarred(r)
ctx := r.Context()
artists, err := api.ds.Artist(ctx).GetAll(filter.ArtistsByStarred())
if err != nil {
log.Error(r, "Error retrieving starred artists", err)
return nil, err
}
options := filter.ByStarred()
albums, err := api.ds.Album(ctx).GetAll(options)
if err != nil {
log.Error(r, "Error retrieving starred albums", err)
return nil, err
}
mediaFiles, err := api.ds.MediaFile(ctx).GetAll(options)
if err != nil {
log.Error(r, "Error retrieving starred mediaFiles", err)
return nil, err
}
response := newResponse()
response.Starred2 = resp.Starred
response.Starred2 = &responses.Starred2{}
response.Starred2.Artist = slice.MapWithArg(artists, r, toArtistID3)
response.Starred2.Album = slice.MapWithArg(albums, ctx, buildAlbumID3)
response.Starred2.Song = slice.MapWithArg(mediaFiles, ctx, childFromMediaFile)
return response, nil
}