Compare commits

...

2 commits

2 changed files with 22 additions and 5 deletions

View file

@ -3,6 +3,7 @@ package cmd
import (
"fmt"
"slices"
"strings"
"time"
"github.com/charmbracelet/bubbles/list"
@ -29,7 +30,6 @@ func (fe feedEntry) FilterValue() string { return fmt.Sprintf("%s - %s", fe.Name
type feedEntriesModel struct {
minifluxClient *miniflux.Client
entries list.Model
selectedEntry *feedEntry
}
type MsgFetchedEntries []feedEntry
@ -71,10 +71,11 @@ func (m *feedEntriesModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
switch msg.String() {
case "enter":
fnGetSelected := func() tea.Msg {
i, ok := m.entries.SelectedItem().(feedEntry)
if ok {
m.selectedEntry = &i
i, _ := m.entries.SelectedItem().(feedEntry)
if strings.HasPrefix(i.Name, "[QUEUE]") == false {
i.Name = "[QUEUE] " + i.Name
}
m.entries.SetItem(m.entries.Index(), i)
return MsgPlayEntry(i)
}

View file

@ -3,6 +3,7 @@ package cmd
import (
"fmt"
"regexp"
"strings"
"sync"
"time"
@ -80,6 +81,7 @@ func (m *playerModel) View() string {
// truncate name if needed
// name := m.entry.Name
name := m.currentlyPlaying.Name
name = strings.TrimPrefix(name, "[QUEUE] ")
if len(name) > playerMaxTitleLength {
name = name[0:playerMaxTitleLength] + "..."
}
@ -98,7 +100,21 @@ func (m *playerModel) View() string {
// other functions
func (m *playerModel) queue(f feedEntry) error {
m.playQueue = append(m.playQueue, f)
// check if already exists
// TODO: handle actually showing errros?
queueIndex := -1
for i, e := range m.playQueue {
if e.ID == f.ID {
queueIndex = i
}
}
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]