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/params"
|
||||||
"go.senan.xyz/gonic/server/ctrlsubsonic/spec"
|
"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/db"
|
||||||
"go.senan.xyz/gonic/server/lastfm"
|
"go.senan.xyz/gonic/server/lastfm"
|
||||||
"go.senan.xyz/gonic/server/scanner"
|
"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 = &spec.PlayQueue{}
|
||||||
sub.PlayQueue.Username = user.Name
|
sub.PlayQueue.Username = user.Name
|
||||||
sub.PlayQueue.Position = queue.Position
|
sub.PlayQueue.Position = queue.Position
|
||||||
sub.PlayQueue.Current = queue.Current
|
sub.PlayQueue.Current = queue.CurrentSID()
|
||||||
sub.PlayQueue.Changed = queue.UpdatedAt
|
sub.PlayQueue.Changed = queue.UpdatedAt
|
||||||
sub.PlayQueue.ChangedBy = queue.ChangedBy
|
sub.PlayQueue.ChangedBy = queue.ChangedBy
|
||||||
trackIDs := queue.GetItems()
|
trackIDs := queue.GetItems()
|
||||||
@@ -164,7 +165,7 @@ func (c *Controller) ServeSavePlayQueue(r *http.Request) *spec.Response {
|
|||||||
user := r.Context().Value(CtxUser).(*db.User)
|
user := r.Context().Value(CtxUser).(*db.User)
|
||||||
queue := &db.PlayQueue{UserID: user.ID}
|
queue := &db.PlayQueue{UserID: user.ID}
|
||||||
c.DB.Where(queue).First(queue)
|
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.Position = params.GetOrInt("position", 0)
|
||||||
queue.ChangedBy = params.GetOr("c", "") // must exist, middleware checks
|
queue.ChangedBy = params.GetOr("c", "") // must exist, middleware checks
|
||||||
queue.SetItems(trackIDs)
|
queue.SetItems(trackIDs)
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ type Genre struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type PlayQueue 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"`
|
Position int `xml:"position,attr,omitempty" json:"position,omitempty"`
|
||||||
Username string `xml:"username,attr" json:"username"`
|
Username string `xml:"username,attr" json:"username"`
|
||||||
Changed time.Time `xml:"changed,attr" json:"changed"`
|
Changed time.Time `xml:"changed,attr" json:"changed"`
|
||||||
|
|||||||
@@ -224,6 +224,10 @@ type PlayQueue struct {
|
|||||||
Items string
|
Items string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *PlayQueue) CurrentSID() *specid.ID {
|
||||||
|
return &specid.ID{Type: specid.Track, Value: p.Current}
|
||||||
|
}
|
||||||
|
|
||||||
func (p *PlayQueue) GetItems() []int {
|
func (p *PlayQueue) GetItems() []int {
|
||||||
return splitInt(p.Items, ",")
|
return splitInt(p.Items, ",")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user