fix(reading): stabilize tracking enabled state to prevent reset loops

Split tracking enable logic into two effects:
1. Reset to false when article changes (selectedUrl)
2. Enable after 500ms if isTextContent is true AND not already enabled

Prevents isTextContent flipping from resetting the timer repeatedly, which was preventing isTrackingEnabled from ever becoming true.
This commit is contained in:
Gigi
2025-10-22 23:59:06 +02:00
parent 4801c0d621
commit cabf897df8

View File

@@ -207,15 +207,23 @@ const ContentPanel: React.FC<ContentPanelProps> = ({
// Delay enabling position tracking to ensure content is stable
const [isTrackingEnabled, setIsTrackingEnabled] = useState(false)
// Reset tracking when article changes
useEffect(() => {
if (isTextContent) {
setIsTrackingEnabled(false)
}, [selectedUrl])
// Enable tracking after content is stable
useEffect(() => {
if (isTextContent && !isTrackingEnabled) {
// Wait 500ms after content loads before enabling tracking
const timer = setTimeout(() => setIsTrackingEnabled(true), 500)
const timer = setTimeout(() => {
console.log('[reading-position] ✅ Enabling tracking after stability delay')
setIsTrackingEnabled(true)
}, 500)
return () => clearTimeout(timer)
} else {
setIsTrackingEnabled(false)
}
}, [isTextContent, selectedUrl])
}, [isTextContent, isTrackingEnabled])
const { progressPercentage, saveNow, suppressSavesFor } = useReadingPosition({
enabled: isTrackingEnabled,