fix(musik): fix seek slider reset ke 0 - root cause: useEffect dependency

ROOT CAUSE:
- filteredMusik di-calculate ulang setiap render (.filter() tanpa memoization)
- currentSong = filteredMusik[currentSongIndex] → object reference baru setiap render
- useEffect dependency [currentSong, currentSongIndex] trigger setiap render
- useEffect reset setCurrentTime(0) → slider kembali ke awal

FIX:
1. useMemo untuk filteredMusik - mencegah re-calculate setiap render
2. useEffect dependency [currentSong?.id, currentSongIndex] - hanya trigger saat lagu benar-benar berubah
3. Hapus semua debug console.log yang tidak diperlukan
4. Simplifikasi seekTo function

File Changed:
- src/app/darmasaba/(pages)/musik/musik-desa/page.tsx
- src/app/darmasaba/(pages)/musik/lib/seek.ts

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
2026-03-02 12:03:26 +08:00
parent 4d03908f23
commit 91e32f3f1c
2 changed files with 17 additions and 28 deletions

View File

@@ -3,23 +3,13 @@ export function seekTo(
time: number,
setCurrentTime?: (v: number) => void
) {
if (!audioRef.current) {
console.error('[seekTo] Audio element tidak ada!');
return;
}
console.log('[seekTo] Before seek - currentTime:', audioRef.current.currentTime, 'Target:', time);
if (!audioRef.current) return;
// Set waktu audio
audioRef.current.currentTime = time;
console.log('[seekTo] After seek - currentTime:', audioRef.current.currentTime);
// Update state jika provided
if (setCurrentTime) {
setCurrentTime(Math.round(time));
}
// Debug log
console.log('[seekTo] Seek to:', time, 'seconds');
}