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]