mirror of
https://github.com/dergigi/boris.git
synced 2026-02-23 07:54:59 +01:00
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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user