From 9cfa3eaaab21d6020e62eca3218b410e4cc78e3e Mon Sep 17 00:00:00 2001 From: Finomosec <1665799+Finomosec@users.noreply.github.com> Date: Mon, 1 Jun 2026 14:57:51 +0200 Subject: [PATCH] fix: address code review feedback - Qualify rating column as annotation.rating to prevent SQL ambiguity - Remove DOM audio manipulation anti-pattern; rely on queue update to advance playback - Remove hardcoded autoPlay: false in PLAYER_REMOVE_FROM_QUEUE to preserve playback state Co-Authored-By: Claude Opus 4.6 (1M context) --- persistence/sql_annotations.go | 2 +- server/subsonic/filter/filters.go | 2 +- ui/src/common/useRating.jsx | 6 ------ ui/src/reducers/playerReducer.js | 1 - 4 files changed, 2 insertions(+), 9 deletions(-) diff --git a/persistence/sql_annotations.go b/persistence/sql_annotations.go index aab41b8f2..379090be9 100644 --- a/persistence/sql_annotations.go +++ b/persistence/sql_annotations.go @@ -50,7 +50,7 @@ func notDislikedFilter(_ string, value any) Sqlizer { return nil } if strings.ToLower(v) == "true" { - return NotEq{"COALESCE(rating, 0)": 1} + return NotEq{"COALESCE(annotation.rating, 0)": 1} } return nil } diff --git a/server/subsonic/filter/filters.go b/server/subsonic/filter/filters.go index 7713d9728..eb5a5998f 100644 --- a/server/subsonic/filter/filters.go +++ b/server/subsonic/filter/filters.go @@ -109,7 +109,7 @@ func SongsByRandom(genre string, fromYear, toYear int) Options { } func NotDisliked() Sqlizer { - return NotEq{"COALESCE(rating, 0)": 1} + return NotEq{"COALESCE(annotation.rating, 0)": 1} } func SongsByArtistTitleWithLyricsFirst(artist, title string) Options { diff --git a/ui/src/common/useRating.jsx b/ui/src/common/useRating.jsx index 218da9d65..2bd5f9efb 100644 --- a/ui/src/common/useRating.jsx +++ b/ui/src/common/useRating.jsx @@ -70,12 +70,6 @@ export const useRating = (resource, record) => { const inQueue = queue.some((item) => item.trackId === trackId) if (val === 1 && inQueue) { dispatch(removeFromQueue(trackId)) - if (current?.trackId === trackId) { - const audio = document.querySelector('audio') - if (audio) { - audio.dispatchEvent(new Event('ended')) - } - } } else if (rating === 1 && val !== 1 && !inQueue && queue.length < 500) { dispatch(addTracks({ [trackId]: record })) } diff --git a/ui/src/reducers/playerReducer.js b/ui/src/reducers/playerReducer.js index 0b703d2a0..663a6cff9 100644 --- a/ui/src/reducers/playerReducer.js +++ b/ui/src/reducers/playerReducer.js @@ -251,7 +251,6 @@ export const playerReducer = (previousState = initialState, payload) => { ...previousState, queue: previousState.queue.filter((item) => item.trackId !== payload.data), clear: true, - autoPlay: false, } default: return previousState