Skip to content

Commit eb1d78f

Browse files
committed
fix: show read-only completed screen when opening a finished session
1 parent f813280 commit eb1d78f

File tree

3 files changed

+40
-1
lines changed

3 files changed

+40
-1
lines changed

packages/web/src/pages/ApprovalPage.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,14 @@ export default function ApprovalPage() {
3030
const [loading, setLoading] = useState(true)
3131
const [error, setError] = useState(false)
3232
const [callbackFailed, setCallbackFailed] = useState(false)
33+
const [isCompleted, setIsCompleted] = useState(false)
3334

3435
useEffect(() => {
3536
fetch(`/api/sessions/${id}`)
3637
.then(r => r.json())
3738
.then(data => {
3839
setPayload(data.payload as ApprovalPayload)
40+
if (data.status === 'completed') setIsCompleted(true)
3941
setLoading(false)
4042
})
4143
.catch(() => { setError(true); setLoading(false) })
@@ -79,6 +81,16 @@ export default function ApprovalPage() {
7981
</div>
8082
)
8183

84+
if (isCompleted) return (
85+
<div className="min-h-screen bg-gray-50 dark:bg-zinc-950 flex items-center justify-center">
86+
<div className="text-center">
87+
<p className="text-zinc-700 dark:text-slate-200 font-medium">Session completed.</p>
88+
<p className="text-zinc-400 dark:text-slate-500 text-sm mt-1">This approval has already been submitted.</p>
89+
<button onClick={() => navigate('/')} className="mt-4 text-sm text-blue-400 hover:text-blue-500 transition-colors">← Back to sessions</button>
90+
</div>
91+
</div>
92+
)
93+
8294
if (submitted) return (
8395
<div className="min-h-screen bg-gray-50 dark:bg-zinc-950 flex items-center justify-center">
8496
<div className="text-center">

packages/web/src/pages/CodeReviewPage.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,11 +570,16 @@ export default function CodeReviewPage() {
570570
const [loading, setLoading] = useState(true)
571571
const [error, setError] = useState(false)
572572
const [callbackFailed, setCallbackFailed] = useState(false)
573+
const [isCompleted, setIsCompleted] = useState(false)
573574

574575
useEffect(() => {
575576
fetch(`/api/sessions/${id}`)
576577
.then(r => r.json())
577-
.then(data => { setPayload(data.payload as CodePayload); setLoading(false) })
578+
.then(data => {
579+
setPayload(data.payload as CodePayload)
580+
if (data.status === 'completed') setIsCompleted(true)
581+
setLoading(false)
582+
})
578583
.catch(() => { setError(true); setLoading(false) })
579584
}, [id])
580585

@@ -619,6 +624,16 @@ export default function CodeReviewPage() {
619624
<p className="text-red-400">Session not found.</p>
620625
</div>
621626
)
627+
if (isCompleted) return (
628+
<div className="min-h-screen bg-gray-50 dark:bg-zinc-950 flex items-center justify-center">
629+
<div className="text-center">
630+
<p className="text-zinc-700 dark:text-slate-200 font-medium">Session completed.</p>
631+
<p className="text-zinc-400 dark:text-slate-500 text-sm mt-1">This review has already been submitted.</p>
632+
<button onClick={() => navigate('/')} className="mt-4 text-sm text-blue-400 hover:text-blue-500 transition-colors">← Back to sessions</button>
633+
</div>
634+
</div>
635+
)
636+
622637
if (submitted) return (
623638
<div className="min-h-screen bg-gray-50 dark:bg-zinc-950 flex items-center justify-center">
624639
<div className="text-center">

packages/web/src/pages/ReviewPage.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ export default function ReviewPage() {
103103
const [submitting, setSubmitting] = useState(false)
104104
const [loading, setLoading] = useState(true)
105105
const [error, setError] = useState(false)
106+
const [isCompleted, setIsCompleted] = useState(false)
106107
const [callbackFailed, setCallbackFailed] = useState(false)
107108
const [waitingForRewrite, setWaitingForRewrite] = useState(false)
108109
const revisionRef = useRef(0)
@@ -133,6 +134,7 @@ export default function ReviewPage() {
133134
.then(data => {
134135
setPayload(data.payload as EmailPayload | InboxPayload)
135136
revisionRef.current = data.revision ?? 0
137+
if (data.status === 'completed') setIsCompleted(true)
136138
setLoading(false)
137139
})
138140
.catch(() => { setError(true); setLoading(false) })
@@ -283,6 +285,16 @@ export default function ReviewPage() {
283285
</div>
284286
)
285287

288+
if (isCompleted) return (
289+
<div className="min-h-screen bg-gray-50 dark:bg-zinc-950 flex items-center justify-center">
290+
<div className="text-center">
291+
<p className="text-zinc-700 dark:text-slate-200 font-medium">Session completed.</p>
292+
<p className="text-zinc-400 dark:text-slate-500 text-sm mt-1">This review has already been submitted.</p>
293+
<button onClick={() => navigate('/')} className="mt-4 text-sm text-blue-400 hover:text-blue-500 transition-colors">← Back to sessions</button>
294+
</div>
295+
</div>
296+
)
297+
286298
if (submitted) return (
287299
<div className="min-h-screen bg-gray-50 dark:bg-zinc-950 flex items-center justify-center">
288300
<div className="text-center">

0 commit comments

Comments
 (0)