feat(subsonic): support OS clearing play queue (#3399)

This commit is contained in:
Deluan Quintão
2024-10-16 10:59:22 -04:00
committed by GitHub
parent 00c6a0ed1f
commit 8b5af67647
2 changed files with 10 additions and 7 deletions
+3
View File
@@ -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()
+7 -7
View File
@@ -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
} }