fix: Restore playlist switching functionality - Add previousPlaylistRef to properly detect playlist changes - Fix playlist change detection logic that was broken by ref updates - Ensure playlist switching works while maintaining infinite scroll fix

This commit is contained in:
Geert Rademakes 2025-08-06 10:43:18 +02:00
parent 08de2afa0e
commit e8bb2a4326

View File

@ -24,6 +24,7 @@ export const usePaginatedSongs = (options: UsePaginatedSongsOptions = {}) => {
const loadingRef = useRef(false);
const currentPlaylistRef = useRef(playlistName);
const currentSearchQueryRef = useRef(searchQuery);
const previousPlaylistRef = useRef(playlistName);
const abortControllerRef = useRef<AbortController | null>(null);
// Cleanup function to prevent memory leaks
@ -134,20 +135,14 @@ export const usePaginatedSongs = (options: UsePaginatedSongsOptions = {}) => {
};
}, []);
// Update refs when values change
useEffect(() => {
currentPlaylistRef.current = playlistName;
}, [playlistName]);
useEffect(() => {
currentSearchQueryRef.current = searchQuery;
}, [searchQuery]);
// Handle playlist changes
useEffect(() => {
if (currentPlaylistRef.current !== playlistName) {
if (!isInitialLoad && previousPlaylistRef.current !== playlistName) {
// Update refs
currentPlaylistRef.current = playlistName;
if (!isInitialLoad) {
currentSearchQueryRef.current = searchQuery;
previousPlaylistRef.current = playlistName;
// Clear songs for new playlist to replace them
setSongs([]);
setHasMore(true);
@ -159,7 +154,6 @@ export const usePaginatedSongs = (options: UsePaginatedSongsOptions = {}) => {
loadPage(1, initialSearch, playlistName);
}, 0);
}
}
}, [playlistName, isInitialLoad, initialSearch, loadPage]);
return {