Files
gspt/ui/view_artists.go
2023-12-17 13:38:51 +05:30

62 lines
1.3 KiB
Go

package ui
import (
"github.com/aditya-K2/gspt/spt"
)
type ArtistsView struct {
*DefaultViewNone
followedArtists *spt.FollowedArtists
}
func NewArtistsView() *ArtistsView {
a := &ArtistsView{
&DefaultViewNone{&defView{}},
nil,
}
return a
}
func (a *ArtistsView) Content() func() [][]Content {
return func() [][]Content {
c := make([][]Content, 0)
if a.followedArtists == nil {
msg := SendNotificationWithChan("Fetching Artists from your Library...")
fa, ch := spt.CurrentUserFollowedArtists()
go func() {
err := <-ch
if err != nil {
msg <- err.Error()
} else {
msg <- "Artists loaded Succesfully!"
}
}()
a.followedArtists = fa
}
if a.followedArtists != nil {
for _, v := range *a.followedArtists {
c = append(c, []Content{
{Content: v.Name, Style: ArtistStyle},
{Content: mergeGenres(v.Genres), Style: AlbumStyle},
})
}
}
return c
}
}
func (a *ArtistsView) OpenEntry() {
r, _ := Main.GetSelection()
artistView.SetArtist(&(*a.followedArtists)[r].ID)
SetCurrentView(artistView)
}
func (a *ArtistsView) PlayEntry() {
r, _ := Main.GetSelection()
if err := spt.PlayContext((*a.followedArtists)[r].URI); err != nil {
SendNotification(err.Error())
}
}
func (a *ArtistsView) Name() string { return "ArtistsView" }