fix: clear saved track time when changing tracks in AudioPlayer and AudioPlayerContext
This commit is contained in:
@@ -56,6 +56,9 @@ export const AudioPlayer: React.FC = () => {
|
|||||||
const audioCurrent = audioRef.current;
|
const audioCurrent = audioRef.current;
|
||||||
|
|
||||||
if (currentTrack && audioCurrent && audioCurrent.src !== currentTrack.url) {
|
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;
|
audioCurrent.src = currentTrack.url;
|
||||||
|
|
||||||
// Check for saved timestamp (only restore if more than 10 seconds in)
|
// Check for saved timestamp (only restore if more than 10 seconds in)
|
||||||
@@ -76,12 +79,8 @@ export const AudioPlayer: React.FC = () => {
|
|||||||
} else {
|
} else {
|
||||||
audioCurrent.addEventListener('loadeddata', restorePosition);
|
audioCurrent.addEventListener('loadeddata', restorePosition);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
// Clear saved time if we're not restoring it
|
|
||||||
localStorage.removeItem('navidrome-current-track-time');
|
|
||||||
}
|
}
|
||||||
} else {
|
// Always clear after attempting to restore
|
||||||
// Clear saved time if no saved time exists
|
|
||||||
localStorage.removeItem('navidrome-current-track-time');
|
localStorage.removeItem('navidrome-current-track-time');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -93,6 +93,9 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c
|
|||||||
}, [api]);
|
}, [api]);
|
||||||
|
|
||||||
const playTrack = useCallback((track: Track) => {
|
const playTrack = useCallback((track: Track) => {
|
||||||
|
// Clear saved timestamp when manually playing a track
|
||||||
|
localStorage.removeItem('navidrome-current-track-time');
|
||||||
|
|
||||||
if (currentTrack) {
|
if (currentTrack) {
|
||||||
setPlayedTracks((prev) => [...prev, currentTrack]);
|
setPlayedTracks((prev) => [...prev, currentTrack]);
|
||||||
}
|
}
|
||||||
@@ -117,6 +120,9 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const playNextTrack = useCallback(() => {
|
const playNextTrack = useCallback(() => {
|
||||||
|
// Clear saved timestamp when changing tracks
|
||||||
|
localStorage.removeItem('navidrome-current-track-time');
|
||||||
|
|
||||||
if (queue.length > 0) {
|
if (queue.length > 0) {
|
||||||
const nextTrack = queue[0];
|
const nextTrack = queue[0];
|
||||||
setQueue((prevQueue) => prevQueue.slice(1));
|
setQueue((prevQueue) => prevQueue.slice(1));
|
||||||
@@ -125,6 +131,9 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c
|
|||||||
}, [queue, playTrack]);
|
}, [queue, playTrack]);
|
||||||
|
|
||||||
const playPreviousTrack = useCallback(() => {
|
const playPreviousTrack = useCallback(() => {
|
||||||
|
// Clear saved timestamp when changing tracks
|
||||||
|
localStorage.removeItem('navidrome-current-track-time');
|
||||||
|
|
||||||
if (playedTracks.length > 0) {
|
if (playedTracks.length > 0) {
|
||||||
const previousTrack = playedTracks[playedTracks.length - 1];
|
const previousTrack = playedTracks[playedTracks.length - 1];
|
||||||
setPlayedTracks((prevPlayedTracks) => prevPlayedTracks.slice(0, -1));
|
setPlayedTracks((prevPlayedTracks) => prevPlayedTracks.slice(0, -1));
|
||||||
|
|||||||
Reference in New Issue
Block a user