Fix sub-session tab switching: reset step state on sessionId change
Some checks failed
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-school (push) Successful in 25s
CI / test-go-edu-search (push) Successful in 25s
CI / test-python-klausur (push) Failing after 1m53s
CI / test-python-agent-core (push) Successful in 15s
CI / test-nodejs-website (push) Successful in 17s
Some checks failed
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-school (push) Successful in 25s
CI / test-go-edu-search (push) Successful in 25s
CI / test-python-klausur (push) Failing after 1m53s
CI / test-python-agent-core (push) Successful in 15s
CI / test-nodejs-website (push) Successful in 17s
Step components (Deskew, Dewarp, Crop, Orientation) had local state guards that prevented reloading when sessionId changed via sub-session tab clicks. Added useEffect reset hooks that clear all local state when sessionId changes, allowing the component to properly reload the new session's data. Also renamed "Box N" to "Seite N" in BoxSessionTabs per user feedback. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -59,7 +59,7 @@ export function BoxSessionTabs({ parentSessionId, subSessions, activeSessionId,
|
||||
title={sub.name}
|
||||
>
|
||||
<span className="mr-1">{icon}</span>
|
||||
Box {sub.box_index + 1}
|
||||
Seite {sub.box_index + 1}
|
||||
</button>
|
||||
)
|
||||
})}
|
||||
|
||||
@@ -17,6 +17,13 @@ export function StepCrop({ sessionId, onNext }: StepCropProps) {
|
||||
const [error, setError] = useState<string | null>(null)
|
||||
const [hasRun, setHasRun] = useState(false)
|
||||
|
||||
// Reset state when sessionId changes (e.g. switching sub-sessions)
|
||||
useEffect(() => {
|
||||
setCropResult(null)
|
||||
setHasRun(false)
|
||||
setError(null)
|
||||
}, [sessionId])
|
||||
|
||||
// Auto-trigger crop on mount
|
||||
useEffect(() => {
|
||||
if (!sessionId || hasRun) return
|
||||
|
||||
@@ -22,6 +22,14 @@ export function StepDeskew({ sessionId, onNext }: StepDeskewProps) {
|
||||
const [error, setError] = useState<string | null>(null)
|
||||
const [hasAutoRun, setHasAutoRun] = useState(false)
|
||||
|
||||
// Reset state when sessionId changes (e.g. switching sub-sessions)
|
||||
useEffect(() => {
|
||||
setSession(null)
|
||||
setDeskewResult(null)
|
||||
setHasAutoRun(false)
|
||||
setError(null)
|
||||
}, [sessionId])
|
||||
|
||||
// Load session and auto-trigger deskew
|
||||
useEffect(() => {
|
||||
if (!sessionId || session) return
|
||||
|
||||
@@ -20,6 +20,13 @@ export function StepDewarp({ sessionId, onNext }: StepDewarpProps) {
|
||||
const [showGrid, setShowGrid] = useState(true)
|
||||
const [error, setError] = useState<string | null>(null)
|
||||
|
||||
// Reset state when sessionId changes (e.g. switching sub-sessions)
|
||||
useEffect(() => {
|
||||
setDewarpResult(null)
|
||||
setDeskewResult(null)
|
||||
setError(null)
|
||||
}, [sessionId])
|
||||
|
||||
// Load session info to get deskew_result (for fine-tuning init values)
|
||||
useEffect(() => {
|
||||
if (!sessionId) return
|
||||
|
||||
@@ -30,6 +30,14 @@ export function StepOrientation({ sessionId: existingSessionId, onNext, onSubSes
|
||||
const [dragOver, setDragOver] = useState(false)
|
||||
const [sessionName, setSessionName] = useState('')
|
||||
|
||||
// Reset state when sessionId changes
|
||||
useEffect(() => {
|
||||
setSession(null)
|
||||
setOrientationResult(null)
|
||||
setPageSplitResult(null)
|
||||
setError(null)
|
||||
}, [existingSessionId])
|
||||
|
||||
// Reload session data when navigating back
|
||||
useEffect(() => {
|
||||
if (!existingSessionId || session) return
|
||||
|
||||
Reference in New Issue
Block a user