Only send "refresh" event if SetRating was successful

This commit is contained in:
Deluan
2021-06-10 15:03:30 -04:00
parent cefc939909
commit e31802d2d3
+19 -17
View File
@@ -51,28 +51,30 @@ func (c *MediaAnnotationController) SetRating(w http.ResponseWriter, r *http.Req
} }
func (c *MediaAnnotationController) setRating(ctx context.Context, id string, rating int) error { func (c *MediaAnnotationController) setRating(ctx context.Context, id string, rating int) error {
var exist bool var repo model.AnnotatedRepository
var err error var resource string
if exist, err = c.ds.Artist(ctx).Exists(id); err != nil { entity, err := core.GetEntityByID(ctx, c.ds, id)
return err if err != nil {
} else if exist {
err = c.ds.Artist(ctx).SetRating(rating, id)
c.broker.SendMessage(&events.RefreshResource{Resource: "artist"})
return err return err
} }
switch entity.(type) {
if exist, err = c.ds.Album(ctx).Exists(id); err != nil { case *model.Artist:
return err repo = c.ds.Artist(ctx)
} else if exist { resource = "artist"
err = c.ds.Album(ctx).SetRating(rating, id) case *model.Album:
c.broker.SendMessage(&events.RefreshResource{Resource: "album"}) repo = c.ds.Album(ctx)
resource = "album"
default:
repo = c.ds.MediaFile(ctx)
resource = "song"
}
err = repo.SetRating(rating, id)
if err != nil {
return err return err
} }
c.broker.SendMessage(&events.RefreshResource{Resource: resource})
err = c.ds.MediaFile(ctx).SetRating(rating, id) return nil
c.broker.SendMessage(&events.RefreshResource{Resource: "song"})
return err
} }
func (c *MediaAnnotationController) Star(w http.ResponseWriter, r *http.Request) (*responses.Subsonic, error) { func (c *MediaAnnotationController) Star(w http.ResponseWriter, r *http.Request) (*responses.Subsonic, error) {