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

76 lines
1.6 KiB
Go

package ui
import (
"github.com/aditya-K2/gspt/spt"
)
type AlbumsView struct {
*DefaultViewNone
savedAlbums *spt.SavedAlbums
}
func NewAlbumsView() *AlbumsView {
a := &AlbumsView{
&DefaultViewNone{&defView{}},
nil,
}
return a
}
func (a *AlbumsView) Content() func() [][]Content {
return func() [][]Content {
c := make([][]Content, 0)
if a.savedAlbums == nil {
msg := SendNotificationWithChan("Fetching Albums from your Library...")
sa, ch := spt.CurrentUserSavedAlbums()
go func() {
err := <-ch
if err != nil {
msg <- err.Error()
} else {
msg <- "Albums loaded Succesfully!"
}
}()
a.savedAlbums = sa
}
if a.savedAlbums != nil {
for _, v := range *a.savedAlbums {
c = append(c, []Content{
{Content: v.Name, Style: AlbumStyle},
{Content: artistName(v.Artists), Style: ArtistStyle},
{Content: v.ReleaseDate, Style: TimeStyle},
})
}
}
return c
}
}
func (a *AlbumsView) OpenEntry() {
r, _ := Main.GetSelection()
albumView.SetAlbum((*a.savedAlbums)[r].Name, &(*a.savedAlbums)[r].ID)
SetCurrentView(albumView)
}
func (a *AlbumsView) PlayEntry() {
r, _ := Main.GetSelection()
if err := spt.PlayContext((*a.savedAlbums)[r].URI); err != nil {
SendNotification(err.Error())
}
}
func (a *AlbumsView) QueueEntry() {
r, _ := Main.GetSelection()
alb := (*a.savedAlbums)[r]
msg := SendNotificationWithChan("Queueing " + alb.Name + "...")
go func() {
if err := spt.QueueAlbum(alb.ID); err != nil {
msg <- err.Error()
return
}
msg <- (alb.Name) + " queued succesfully!"
}()
}
func (a *AlbumsView) Name() string { return "AlbumsView" }