assume incoming play queue current is an ID

This commit is contained in:
sentriz
2020-06-30 20:19:13 +01:00
parent 05901180d0
commit 0581335622
3 changed files with 8 additions and 3 deletions

View File

@@ -10,6 +10,7 @@ import (
"go.senan.xyz/gonic/server/ctrlsubsonic/params"
"go.senan.xyz/gonic/server/ctrlsubsonic/spec"
"go.senan.xyz/gonic/server/ctrlsubsonic/specid"
"go.senan.xyz/gonic/server/db"
"go.senan.xyz/gonic/server/lastfm"
"go.senan.xyz/gonic/server/scanner"
@@ -135,7 +136,7 @@ func (c *Controller) ServeGetPlayQueue(r *http.Request) *spec.Response {
sub.PlayQueue = &spec.PlayQueue{}
sub.PlayQueue.Username = user.Name
sub.PlayQueue.Position = queue.Position
sub.PlayQueue.Current = queue.Current
sub.PlayQueue.Current = queue.CurrentSID()
sub.PlayQueue.Changed = queue.UpdatedAt
sub.PlayQueue.ChangedBy = queue.ChangedBy
trackIDs := queue.GetItems()
@@ -164,7 +165,7 @@ func (c *Controller) ServeSavePlayQueue(r *http.Request) *spec.Response {
user := r.Context().Value(CtxUser).(*db.User)
queue := &db.PlayQueue{UserID: user.ID}
c.DB.Where(queue).First(queue)
queue.Current = params.GetOrInt("current", 0)
queue.Current = params.GetOrID("current", specid.ID{}).Value
queue.Position = params.GetOrInt("position", 0)
queue.ChangedBy = params.GetOr("c", "") // must exist, middleware checks
queue.SetItems(trackIDs)

View File

@@ -265,7 +265,7 @@ type Genre struct {
}
type PlayQueue struct {
Current int `xml:"current,attr,omitempty" json:"current,omitempty"`
Current *specid.ID `xml:"current,attr,omitempty" json:"current,omitempty"`
Position int `xml:"position,attr,omitempty" json:"position,omitempty"`
Username string `xml:"username,attr" json:"username"`
Changed time.Time `xml:"changed,attr" json:"changed"`

View File

@@ -224,6 +224,10 @@ type PlayQueue struct {
Items string
}
func (p *PlayQueue) CurrentSID() *specid.ID {
return &specid.ID{Type: specid.Track, Value: p.Current}
}
func (p *PlayQueue) GetItems() []int {
return splitInt(p.Items, ",")
}