fix event broadcasting

Signed-off-by: Deluan <deluan@navidrome.org>
This commit is contained in:
Deluan
2025-05-29 21:36:01 -04:00
parent 5a1e9f96f7
commit f4d06fa820
4 changed files with 9 additions and 8 deletions

View File

@@ -53,6 +53,7 @@ func NewPlaylistRepository(ctx context.Context, db dbx.Builder) model.PlaylistRe
r.db = db
r.tableName = "playlist"
r.registerModel(&model.Playlist{}, map[string]filterFunc{
"id": idFilter(r.tableName),
"q": playlistFilter,
"smart": smartPlaylistFilter,
"starred": booleanFilter,
@@ -97,7 +98,7 @@ func (r *playlistRepository) CountAll(options ...model.QueryOptions) (int64, err
}
func (r *playlistRepository) Exists(id string) (bool, error) {
return r.exists(And{Eq{"id": id}, r.userFilter()})
return r.exists(And{Eq{"playlist.id": id}, r.userFilter()})
}
func (r *playlistRepository) Delete(id string) error {
@@ -111,7 +112,7 @@ func (r *playlistRepository) Delete(id string) error {
return rest.ErrPermissionDenied
}
}
return r.delete(And{Eq{"id": id}, r.userFilter()})
return r.delete(And{Eq{"playlist.id": id}, r.userFilter()})
}
func (r *playlistRepository) Put(p *model.Playlist) error {

View File

@@ -147,7 +147,9 @@ func (api *Router) setStar(ctx context.Context, star bool, ids ...string) error
if err != nil {
return err
}
event = event.With("playlist", id)
event = event.With("playlist", "*")
// Ensure the refresh event is sent to all clients, including the originator
ctx = events.BroadcastToAll(ctx)
continue
}
err = tx.MediaFile(ctx).SetStar(star, id)

View File

@@ -45,8 +45,7 @@ var _ = Describe("MediaAnnotationController", func() {
event := eventBroker.Events[0].(*events.RefreshResource)
data := event.Data(event)
Expect(data).To(ContainSubstring("playlist"))
Expect(data).To(ContainSubstring("pls-1"))
Expect(data).To(ContainSubstring(`"playlist":["*"]`))
})
It("should send refresh resource event when unstarring a playlist", func() {
@@ -63,8 +62,7 @@ var _ = Describe("MediaAnnotationController", func() {
event := eventBroker.Events[0].(*events.RefreshResource)
data := event.Data(event)
Expect(data).To(ContainSubstring("playlist"))
Expect(data).To(ContainSubstring("pls-1"))
Expect(data).To(ContainSubstring(`"playlist":["*"]`))
})
})

View File

@@ -51,7 +51,7 @@ const PlaylistMenuItemLink = ({ pls, sidebarIsOpen }) => {
const PlaylistsSubMenu = ({ state, setState, sidebarIsOpen, dense }) => {
const history = useHistory()
useResourceRefresh('playlist')
useResourceRefresh()
const { data, loaded } = useQueryWithStore({
type: 'getList',
resource: 'playlist',