mirror of
https://github.com/aditya-K2/gspt.git
synced 2026-01-07 21:13:50 -05:00
76 lines
1.6 KiB
Go
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" }
|