From ca212807348e5f070539ef89afc35fbd3d0eb2cf Mon Sep 17 00:00:00 2001 From: aditya-K2 Date: Sun, 17 Dec 2023 15:01:00 +0530 Subject: [PATCH] Implement QueueSongsVisual for liked_songs_view --- config/key.go | 1 + ui/app.go | 1 + ui/view_liked.go | 16 ++++++++++++++++ 3 files changed, 18 insertions(+) diff --git a/config/key.go b/config/key.go index 43324b7..3f3666f 100644 --- a/config/key.go +++ b/config/key.go @@ -82,6 +82,7 @@ var ( }, "visual": { {R: 'a'}: "add_to_playlist", + {R: 'q'}: "queue_entry", }, }, "artists_view": { diff --git a/ui/app.go b/ui/app.go index 3aed2b5..cb37032 100644 --- a/ui/app.go +++ b/ui/app.go @@ -382,6 +382,7 @@ func NewApplication() *tview.Application { }) likedSongsView.SetVisualActions(map[string]func(start, end int, e *tcell.EventKey) *tcell.EventKey{ "add_to_playlist": likedSongsView.AddToPlaylistVisual, + "queue_entry": likedSongsView.QueueSongsVisual, }) mappings := config.GenerateMappings() diff --git a/ui/view_liked.go b/ui/view_liked.go index dada9a2..d7ceaf0 100644 --- a/ui/view_liked.go +++ b/ui/view_liked.go @@ -60,6 +60,22 @@ func (l *LikedSongsView) AddToPlaylistVisual(start, end int, e *tcell.EventKey) return nil } +func (l *LikedSongsView) QueueSongsVisual(start, end int, e *tcell.EventKey) *tcell.EventKey { + tracks := (*l.likedSongs)[start : end+1] + msg := SendNotificationWithChan(fmt.Sprintf("Queueing %d tracks...", len(tracks))) + go func() { + err := spt.QueueTracks(Map(tracks, + func(s spotify.SavedTrack) spotify.ID { + return s.ID + })...) + if err != nil { + msg <- err.Error() + } + msg <- fmt.Sprintf("Queued %d tracks!", len(tracks)) + }() + return nil +} + func (l *LikedSongsView) OpenEntry() { r, _ := Main.GetSelection() if err := spt.PlaySong((*l.likedSongs)[r].URI); err != nil {