Merge pull request #355 from adamantike/misc/migrate-artists-page-to-gridview

misc: Migrate Artists page to GridView
This commit is contained in:
Drew Weymouth
2024-03-31 08:06:07 -07:00
committed by GitHub
12 changed files with 254 additions and 220 deletions
+25
View File
@@ -2,6 +2,7 @@ package widgets
import (
"context"
"fmt"
"math"
"sync"
@@ -65,6 +66,30 @@ func NewGridViewAlbumIterator(iter mediaprovider.AlbumIterator) GridViewIterator
return gridViewAlbumIterator{iter: NewBatchingIterator(iter)}
}
type gridViewArtistIterator struct {
iter BatchingIterator[mediaprovider.Artist]
}
func (g gridViewArtistIterator) NextN(n int) []GridViewItemModel {
artists := g.iter.NextN(n)
return sharedutil.MapSlice(artists, func(ar *mediaprovider.Artist) GridViewItemModel {
albumsLabel := "albums"
if ar.AlbumCount == 1 {
albumsLabel = "album"
}
return GridViewItemModel{
Name: ar.Name,
ID: ar.ID,
CoverArtID: ar.CoverArtID,
Secondary: []string{fmt.Sprintf("%d %s", ar.AlbumCount, albumsLabel)},
}
})
}
func NewGridViewArtistIterator(iter mediaprovider.ArtistIterator) GridViewIterator {
return gridViewArtistIterator{iter: NewBatchingIterator(iter)}
}
type GridView struct {
widget.BaseWidget