feat(subsonic): support OS clearing play queue (#3399)
This commit is contained in:
@@ -42,6 +42,9 @@ func (r *playQueueRepository) Store(q *model.PlayQueue) error {
|
|||||||
log.Error(r.ctx, "Error deleting previous playqueue", "user", u.UserName, err)
|
log.Error(r.ctx, "Error deleting previous playqueue", "user", u.UserName, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if len(q.Items) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
pq := r.fromModel(q)
|
pq := r.fromModel(q)
|
||||||
if pq.ID == "" {
|
if pq.ID == "" {
|
||||||
pq.CreatedAt = time.Now()
|
pq.CreatedAt = time.Now()
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package subsonic
|
package subsonic
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -73,9 +74,12 @@ func (api *Router) GetPlayQueue(r *http.Request) (*responses.Subsonic, error) {
|
|||||||
|
|
||||||
repo := api.ds.PlayQueue(r.Context())
|
repo := api.ds.PlayQueue(r.Context())
|
||||||
pq, err := repo.Retrieve(user.ID)
|
pq, err := repo.Retrieve(user.ID)
|
||||||
if err != nil {
|
if err != nil && !errors.Is(err, model.ErrNotFound) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if pq == nil || len(pq.Items) == 0 {
|
||||||
|
return newResponse(), nil
|
||||||
|
}
|
||||||
|
|
||||||
response := newResponse()
|
response := newResponse()
|
||||||
response.PlayQueue = &responses.PlayQueue{
|
response.PlayQueue = &responses.PlayQueue{
|
||||||
@@ -91,11 +95,7 @@ func (api *Router) GetPlayQueue(r *http.Request) (*responses.Subsonic, error) {
|
|||||||
|
|
||||||
func (api *Router) SavePlayQueue(r *http.Request) (*responses.Subsonic, error) {
|
func (api *Router) SavePlayQueue(r *http.Request) (*responses.Subsonic, error) {
|
||||||
p := req.Params(r)
|
p := req.Params(r)
|
||||||
ids, err := p.Strings("id")
|
ids, _ := p.Strings("id")
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
current, _ := p.String("current")
|
current, _ := p.String("current")
|
||||||
position := p.Int64Or("position", 0)
|
position := p.Int64Or("position", 0)
|
||||||
|
|
||||||
@@ -118,7 +118,7 @@ func (api *Router) SavePlayQueue(r *http.Request) (*responses.Subsonic, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
repo := api.ds.PlayQueue(r.Context())
|
repo := api.ds.PlayQueue(r.Context())
|
||||||
err = repo.Store(pq)
|
err := repo.Store(pq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user