From 9e4d9a97eea10b1379f37d7c75485c1a215f1825 Mon Sep 17 00:00:00 2001 From: aditya-K2 Date: Sun, 17 Dec 2023 14:46:27 +0530 Subject: [PATCH] Implement QueueSongsVisual for album_view --- config/key.go | 1 + ui/app.go | 1 + ui/view_album.go | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/config/key.go b/config/key.go index babe004..8fbf79f 100644 --- a/config/key.go +++ b/config/key.go @@ -104,6 +104,7 @@ var ( }, "visual": { {R: 'a'}: "add_to_playlist", + {R: 'q'}: "queue_entry", }, }, "nav_menu": {}, diff --git a/ui/app.go b/ui/app.go index 0aa90b4..fcc1866 100644 --- a/ui/app.go +++ b/ui/app.go @@ -370,6 +370,7 @@ func NewApplication() *tview.Application { // Visual Actions albumView.SetVisualActions(map[string]func(start, end int, e *tcell.EventKey) *tcell.EventKey{ "add_to_playlist": albumView.AddToPlaylistVisual, + "queue_entry": albumView.QueueSongsVisual, }) recentlyPlayedView.SetVisualActions(map[string]func(start, end int, e *tcell.EventKey) *tcell.EventKey{ "add_to_playlist": recentlyPlayedView.AddToPlaylistVisual, diff --git a/ui/view_album.go b/ui/view_album.go index 896906f..7a5ca67 100644 --- a/ui/view_album.go +++ b/ui/view_album.go @@ -1,6 +1,8 @@ package ui import ( + "fmt" + "github.com/aditya-K2/gspt/spt" "github.com/gdamore/tcell/v2" "github.com/zmb3/spotify/v2" @@ -72,6 +74,22 @@ func (a *AlbumView) AddToPlaylistVisual(start, end int, e *tcell.EventKey) *tcel return nil } +func (a *AlbumView) QueueSongsVisual(start, end int, e *tcell.EventKey) *tcell.EventKey { + tracks := (*(*a.currentFullAlbum).Tracks)[start : end+1] + msg := SendNotificationWithChan(fmt.Sprintf("Queueing %d tracks...", len(tracks))) + go func() { + err := spt.QueueTracks(Map(tracks, + func(s spotify.SimpleTrack) spotify.ID { + return s.ID + })...) + if err != nil { + msg <- err.Error() + } + msg <- fmt.Sprintf("Queued %d tracks!", len(tracks)) + }() + return nil +} + func (a *AlbumView) OpenEntry() { r, _ := Main.GetSelection() if err := spt.PlaySongWithContext(a.currentFullAlbum.URI, r); err != nil {