subsonic-tui/internal/tui/views/artists.go
Sagi Dayan 99e8e299e4
Some checks failed
ci / check for spelling errors (pull_request) Failing after 22s
ci / Make sure build does not fail (pull_request) Successful in 2m52s
ci / code quality (lint/tests) (pull_request) Has been skipped
Added ci workflow + fixed linting issues
Signed-off-by: Sagi Dayan <sagidayan@gmail.com>
2024-12-18 17:29:16 +02:00

68 lines
1.4 KiB
Go

package views
import (
"git.dayanhub.com/sagi/subsonic-tui/internal/client"
"git.dayanhub.com/sagi/subsonic-tui/internal/config"
"github.com/delucks/go-subsonic"
"github.com/rivo/tview"
)
var _ View = &artists{}
type artists struct {
view *tview.Table
client *client.Client
artists []*subsonic.ArtistID3
selectArtistFunc func(artistId string)
openArtistFunc func(artistId string)
}
func NewArtists(client *client.Client) *artists {
list := tview.NewTable()
list.SetBackgroundColor(config.ColorBackground)
list.SetTitle("Artists [1]")
list.SetBorder(true)
list.SetFocusFunc(func() {
list.SetBorderColor(config.ColorSelectedBoarder)
list.SetSelectable(true, false)
})
list.SetBlurFunc(func() {
list.SetBorderColor(config.ColorBluredBoarder)
list.SetSelectable(false, false)
})
arts, _ := client.GetArtists()
for i, artist := range arts {
cell := tview.NewTableCell(artist.Name).SetExpansion(1)
list.SetCell(i, 0, cell)
}
resp := &artists{
view: list,
client: client,
artists: arts,
}
list.SetSelectedFunc(func(row, column int) {
resp.openArtistFunc(resp.artists[row].ID)
})
return resp
}
func (a *artists) SetSelectArtistFunc(f func(artistId string)) {
a.selectArtistFunc = f
}
func (a *artists) SetOpenArtistFunc(f func(artistId string)) {
a.openArtistFunc = f
}
func (a *artists) Update() {
}
func (a *artists) GetView() tview.Primitive {
return a.view
}