From 09acc39ead0e5e2f2a4d2b8562f8b183525bd32b Mon Sep 17 00:00:00 2001 From: aditya-K2 Date: Sun, 17 Dec 2023 14:57:21 +0530 Subject: [PATCH] Implement QueueSongsVisual for playlist_view --- config/key.go | 1 + ui/app.go | 1 + ui/view_playlist.go | 16 ++++++++++++++++ 3 files changed, 18 insertions(+) diff --git a/config/key.go b/config/key.go index 7fbfea5..43324b7 100644 --- a/config/key.go +++ b/config/key.go @@ -66,6 +66,7 @@ var ( }, "visual": { {R: 'a'}: "add_to_playlist", + {R: 'q'}: "queue_entry", }, }, "top_tracks_view": { diff --git a/ui/app.go b/ui/app.go index 8ae209d..3aed2b5 100644 --- a/ui/app.go +++ b/ui/app.go @@ -378,6 +378,7 @@ func NewApplication() *tview.Application { }) playlistView.SetVisualActions(map[string]func(start, end int, e *tcell.EventKey) *tcell.EventKey{ "add_to_playlist": playlistView.AddToPlaylistVisual, + "queue_entry": playlistView.QueueSongsVisual, }) likedSongsView.SetVisualActions(map[string]func(start, end int, e *tcell.EventKey) *tcell.EventKey{ "add_to_playlist": likedSongsView.AddToPlaylistVisual, diff --git a/ui/view_playlist.go b/ui/view_playlist.go index 0c3b842..dc40a95 100644 --- a/ui/view_playlist.go +++ b/ui/view_playlist.go @@ -72,6 +72,22 @@ func (p *PlaylistView) AddToPlaylistVisual(start, end int, e *tcell.EventKey) *t return nil } +func (p *PlaylistView) QueueSongsVisual(start, end int, e *tcell.EventKey) *tcell.EventKey { + tracks := (*(*p.currentUserFullPlaylist).Tracks)[start : end+1] + msg := SendNotificationWithChan(fmt.Sprintf("Queueing %d tracks...", len(tracks))) + go func() { + err := spt.QueueTracks(Map(tracks, + func(s spotify.PlaylistTrack) spotify.ID { + return s.Track.ID + })...) + if err != nil { + msg <- err.Error() + } + msg <- fmt.Sprintf("Queued %d tracks!", len(tracks)) + }() + return nil +} + func (p *PlaylistView) OpenEntry() { r, _ := Main.GetSelection() if err := spt.PlaySongWithContext(p.currentPlaylist.URI, r); err != nil {