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:
@@ -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');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user