From 1a184a73de9bcaee0dff22d4c00150097976cde7 Mon Sep 17 00:00:00 2001 From: jeffvli Date: Fri, 26 Dec 2025 14:55:53 -0800 Subject: [PATCH] revert behavior for queue add by id --- src/renderer/store/player.store.ts | 43 +++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/src/renderer/store/player.store.ts b/src/renderer/store/player.store.ts index 9b6ce0c9a..e214fb4da 100644 --- a/src/renderer/store/player.store.ts +++ b/src/renderer/store/player.store.ts @@ -1065,7 +1065,48 @@ export const usePlayerStoreBase = createWithEqualityFn()( } }); - emitPlayerPlayEvent(targetSongUniqueId, set, get); + // If playSongId is provided, find the song and start playback on it + if (targetSongUniqueId) { + let playIndex: number | undefined; + set((state) => { + const queue = state.getQueue(); + const queueIndex = queue.items.findIndex( + (item) => item._uniqueId === targetSongUniqueId, + ); + + if (queueIndex !== -1) { + if ( + state.player.shuffle === PlayerShuffle.TRACK && + state.queue.shuffled.length > 0 + ) { + // Find the shuffled position for this queue index + const shuffledPosition = state.queue.shuffled.findIndex( + (idx) => idx === queueIndex, + ); + if (shuffledPosition !== -1) { + state.player.index = shuffledPosition; + playIndex = shuffledPosition; + } else { + state.player.index = queueIndex; + playIndex = queueIndex; + } + } else { + state.player.index = queueIndex; + playIndex = queueIndex; + } + state.player.status = PlayerStatus.PLAYING; + setTimestampStore(0); + } + }); + + // Emit PLAYER_PLAY event if playback was started + if (playIndex !== undefined) { + eventEmitter.emit('PLAYER_PLAY', { + id: targetSongUniqueId, + index: playIndex, + }); + } + } }, clearQueue: () => { set((state) => {