From 3cc1e4d441f3250410a6bf7cf763f6cfb6e30f0d Mon Sep 17 00:00:00 2001 From: angel Date: Thu, 19 Jun 2025 22:11:07 +0000 Subject: [PATCH] fix: clear saved track time when changing tracks in AudioPlayer and AudioPlayerContext --- app/components/AudioPlayer.tsx | 9 ++++----- app/components/AudioPlayerContext.tsx | 9 +++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/app/components/AudioPlayer.tsx b/app/components/AudioPlayer.tsx index 6bd235e..353c595 100644 --- a/app/components/AudioPlayer.tsx +++ b/app/components/AudioPlayer.tsx @@ -56,6 +56,9 @@ export const AudioPlayer: React.FC = () => { const audioCurrent = audioRef.current; if (currentTrack && audioCurrent && audioCurrent.src !== currentTrack.url) { + // Always clear current track time when changing tracks + localStorage.removeItem('navidrome-current-track-time'); + audioCurrent.src = currentTrack.url; // Check for saved timestamp (only restore if more than 10 seconds in) @@ -76,12 +79,8 @@ export const AudioPlayer: React.FC = () => { } else { audioCurrent.addEventListener('loadeddata', restorePosition); } - } else { - // Clear saved time if we're not restoring it - localStorage.removeItem('navidrome-current-track-time'); } - } else { - // Clear saved time if no saved time exists + // Always clear after attempting to restore localStorage.removeItem('navidrome-current-track-time'); } diff --git a/app/components/AudioPlayerContext.tsx b/app/components/AudioPlayerContext.tsx index 934763a..dee80e1 100644 --- a/app/components/AudioPlayerContext.tsx +++ b/app/components/AudioPlayerContext.tsx @@ -93,6 +93,9 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c }, [api]); const playTrack = useCallback((track: Track) => { + // Clear saved timestamp when manually playing a track + localStorage.removeItem('navidrome-current-track-time'); + if (currentTrack) { setPlayedTracks((prev) => [...prev, currentTrack]); } @@ -117,6 +120,9 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c }, []); const playNextTrack = useCallback(() => { + // Clear saved timestamp when changing tracks + localStorage.removeItem('navidrome-current-track-time'); + if (queue.length > 0) { const nextTrack = queue[0]; setQueue((prevQueue) => prevQueue.slice(1)); @@ -125,6 +131,9 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c }, [queue, playTrack]); const playPreviousTrack = useCallback(() => { + // Clear saved timestamp when changing tracks + localStorage.removeItem('navidrome-current-track-time'); + if (playedTracks.length > 0) { const previousTrack = playedTracks[playedTracks.length - 1]; setPlayedTracks((prevPlayedTracks) => prevPlayedTracks.slice(0, -1));