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
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 7 deletions

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)
return err
}
if len(q.Items) == 0 {
return nil
}
pq := r.fromModel(q)
if pq.ID == "" {
pq.CreatedAt = time.Now()

View file

@ -1,6 +1,7 @@
package subsonic
import (
"errors"
"net/http"
"time"
@ -73,9 +74,12 @@ func (api *Router) GetPlayQueue(r *http.Request) (*responses.Subsonic, error) {
repo := api.ds.PlayQueue(r.Context())
pq, err := repo.Retrieve(user.ID)
if err != nil {
if err != nil && !errors.Is(err, model.ErrNotFound) {
return nil, err
}
if pq == nil || len(pq.Items) == 0 {
return newResponse(), nil
}
response := newResponse()
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) {
p := req.Params(r)
ids, err := p.Strings("id")
if err != nil {
return nil, err
}
ids, _ := p.Strings("id")
current, _ := p.String("current")
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())
err = repo.Store(pq)
err := repo.Store(pq)
if err != nil {
return nil, err
}