hook up favorite button in tracklist; reload all 3 views in favorites page

This commit is contained in:
Drew Weymouth
2023-02-21 18:20:20 -08:00
parent 3bf8266e67
commit 4cef01f1ca
3 changed files with 62 additions and 12 deletions
+43 -8
View File
@@ -121,11 +121,40 @@ func (a *FavoritesPage) Route() Route {
}
func (a *FavoritesPage) Reload() {
// reload favorite albums view
if a.searchText != "" {
a.doSearchAlbums(a.searchText)
} else {
a.grid.Reset(a.lm.StarredIter())
}
if a.tracklistCtr != nil || a.artistListCtr != nil {
go func() {
// re-fetch starred info from server
starred, err := a.sm.Server.GetStarred2(nil)
if err != nil {
log.Printf("error getting starred items: %s", err.Error())
return
}
if a.tracklistCtr != nil {
// refresh favorite songs view
tr := a.tracklistCtr.Objects[0].(*widgets.Tracklist)
tr.Tracks = starred.Song
if a.toggleBtns.ActivatedButtonIndex() == 2 {
// favorite songs view is visible
tr.Refresh()
}
}
if a.artistListCtr != nil {
// refresh favorite artists view
al := a.artistListCtr.Objects[0].(*widgets.ArtistGenrePlaylist)
al.Items = buildArtistListModel(starred.Artist)
if a.toggleBtns.ActivatedButtonIndex() == 1 {
// favorite artists view is visible
al.Refresh()
}
}
}()
}
}
func (a *FavoritesPage) Save() SavedPage {
@@ -167,7 +196,7 @@ func (a *FavoritesPage) OnSearched(query string) {
var _ CanShowNowPlaying = (*FavoritesPage)(nil)
func (a *FavoritesPage) OnSongChange(song *subsonic.Child) {
func (a *FavoritesPage) OnSongChange(song *subsonic.Child, _ *subsonic.Child) {
a.nowPlayingID = ""
if song != nil {
a.nowPlayingID = song.ID
@@ -216,13 +245,7 @@ func (a *FavoritesPage) onShowFavoriteArtists() {
log.Printf("error getting starred items: %s", err.Error())
return
}
model := make([]widgets.ArtistGenrePlaylistItemModel, 0)
for _, ar := range s.Artist {
model = append(model, widgets.ArtistGenrePlaylistItemModel{
Name: ar.Name,
AlbumCount: ar.AlbumCount,
})
}
model := buildArtistListModel(s.Artist)
artistList := widgets.NewArtistGenrePlaylist(model)
artistList.ShowAlbumCount = true
artistList.OnNavTo = func(artistID string) {
@@ -241,6 +264,18 @@ func (a *FavoritesPage) onShowFavoriteArtists() {
}
}
func buildArtistListModel(artists []*subsonic.ArtistID3) []widgets.ArtistGenrePlaylistItemModel {
model := make([]widgets.ArtistGenrePlaylistItemModel, 0)
for _, ar := range artists {
model = append(model, widgets.ArtistGenrePlaylistItemModel{
ID: ar.ID,
Name: ar.Name,
AlbumCount: ar.AlbumCount,
})
}
return model
}
func (a *FavoritesPage) onShowFavoriteSongs() {
a.searcher.Entry.Hide() // disable search on songs for now
if a.tracklistCtr == nil {