From aad6ef5d72317c763e686e76500140746190abc5 Mon Sep 17 00:00:00 2001 From: eyjhb Date: Sat, 8 Feb 2025 23:56:56 +0100 Subject: [PATCH] if a already queued item is selected, it is moved to the front --- cmd/player.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/cmd/player.go b/cmd/player.go index a22a0bf..7494f66 100644 --- a/cmd/player.go +++ b/cmd/player.go @@ -1,7 +1,6 @@ package cmd import ( - "errors" "fmt" "regexp" "strings" @@ -103,13 +102,19 @@ func (m *playerModel) View() string { func (m *playerModel) queue(f feedEntry) error { // check if already exists // TODO: handle actually showing errros? - for _, e := range m.playQueue { + queueIndex := -1 + for i, e := range m.playQueue { if e.ID == f.ID { - return errors.New("already exists") + queueIndex = i } } - m.playQueue = append(m.playQueue, f) + if queueIndex >= 0 && len(m.playQueue) > 1 { + m.playQueue = append([]feedEntry{f}, append(m.playQueue[:queueIndex], m.playQueue[queueIndex+1:]...)...) + + } else { + m.playQueue = append(m.playQueue, f) + } if len(m.playQueue) == 1 && m.mpv.IsPlaying() == false { m.currentlyPlaying = &m.playQueue[0]