From 096682929d028a8a30827c5d257c2aad028f2ed3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=B6rdle=20Bot?= Date: Sat, 24 Jan 2026 12:42:26 +0100 Subject: [PATCH] =?UTF-8?q?Fix:=20Skip-Button=20startet=20jetzt=20beim=20n?= =?UTF-8?q?=C3=A4chsten=20Segment=20+=20Initialisierung=20f=C3=BCr=20Speci?= =?UTF-8?q?als?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - autoPlay verwendet jetzt startPos statt startTime beim Skip - hasPlayedOnce wird nur bei Song-Wechsel zurückgesetzt, nicht bei mehr Zeit - processedSrc/processedUnlockedSeconds initial auf null für korrekte Initialisierung - Sicherstellt, dass Specials weiterhin vom markierten Ausschnitt starten --- components/AudioPlayer.tsx | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/components/AudioPlayer.tsx b/components/AudioPlayer.tsx index 72683d1..61c7387 100644 --- a/components/AudioPlayer.tsx +++ b/components/AudioPlayer.tsx @@ -22,8 +22,8 @@ const AudioPlayer = forwardRef(({ src, unlocke const [progress, setProgress] = useState(0); const [hasPlayedOnce, setHasPlayedOnce] = useState(false); - const [processedSrc, setProcessedSrc] = useState(src); - const [processedUnlockedSeconds, setProcessedUnlockedSeconds] = useState(unlockedSeconds); + const [processedSrc, setProcessedSrc] = useState(null); + const [processedUnlockedSeconds, setProcessedUnlockedSeconds] = useState(null); useEffect(() => { console.log('[AudioPlayer] MOUNTED'); @@ -41,7 +41,7 @@ const AudioPlayer = forwardRef(({ src, unlocke let startPos = startTime; // If same song but more time unlocked, start from where previous segment ended - if (src === processedSrc && unlockedSeconds > processedUnlockedSeconds) { + if (processedSrc !== null && src === processedSrc && processedUnlockedSeconds !== null && unlockedSeconds > processedUnlockedSeconds) { startPos = startTime + processedUnlockedSeconds; } @@ -62,8 +62,11 @@ const AudioPlayer = forwardRef(({ src, unlocke const initialPercent = unlockedSeconds > 0 ? (initialElapsed / unlockedSeconds) * 100 : 0; setProgress(Math.min(initialPercent, 100)); - setHasPlayedOnce(false); // Reset for new segment - onHasPlayedChange?.(false); // Notify parent + // Only reset hasPlayedOnce if the song changed, not if just more time was unlocked + if (processedSrc !== null && src !== processedSrc) { + setHasPlayedOnce(false); // Reset for new song + onHasPlayedChange?.(false); // Notify parent + } // Update processed state setProcessedSrc(src); @@ -73,8 +76,9 @@ const AudioPlayer = forwardRef(({ src, unlocke // Delay play slightly to ensure currentTime sticks setTimeout(() => { if (audioRef.current) { - // Ensure currentTime is set before playing - audioRef.current.currentTime = startTime; + // Use startPos (which may be startTime + processedUnlockedSeconds if more time was unlocked) + // instead of always using startTime + audioRef.current.currentTime = startPos; const playPromise = audioRef.current.play(); if (playPromise !== undefined) { playPromise