assume incoming play queue current is an ID
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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"`
|
||||
|
||||
@@ -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, ",")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user