Commit 51d968c
fix: stop "subjects have already been set" during pre-checkin
Confirming subject selection failed for anyone who used the back button.
base:selectSubjects wrote CheckinSubject rows but its onStepRollback was an
empty stub, so goBack deleted the step data and left the rows behind. On the
re-run, setSubjects saw existing rows and threw. The pre-checkin flow renders a
back button on every screen and has two informational steps right after subject
selection, so this was easy to hit.
- selectSubjects: clear subjects on rollback instead of no-op.
- setSubjects: replace the set in a transaction rather than throwing. Resolves
the TODO there. Safe because nothing downstream of subject selection has run
yet, and it also unsticks sessions that died between setSubjects and
setCompleted -- those hit the error on every retry via the resume path.
- SelectSubjectScreen: block double submits, which could otherwise put two
confirmSubjects calls in flight before the step advanced.
Also guard goBack against completed/aborted sessions. Rollback hooks undo real
side effects, and step:goBack can be sent directly (admin debug panel) even
though the kiosk hides the button once the session finishes. undoCheckin stays
the one way to reverse a finished check-in.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent a674819 commit 51d968c
4 files changed
Lines changed: 51 additions & 22 deletions
File tree
- packages/backend/src/core/workflow
- plugins/base/src/selectSubjects
- backend
- frontend/screens
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
1 | 2 | | |
2 | 3 | | |
3 | 4 | | |
| |||
79 | 80 | | |
80 | 81 | | |
81 | 82 | | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
82 | 102 | | |
83 | 103 | | |
84 | 104 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
224 | 224 | | |
225 | 225 | | |
226 | 226 | | |
227 | | - | |
228 | | - | |
229 | | - | |
230 | | - | |
231 | | - | |
232 | | - | |
233 | | - | |
234 | | - | |
235 | | - | |
236 | | - | |
237 | | - | |
238 | | - | |
239 | | - | |
240 | | - | |
241 | | - | |
242 | | - | |
243 | | - | |
244 | | - | |
245 | | - | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
246 | 245 | | |
247 | 246 | | |
248 | 247 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
69 | | - | |
70 | | - | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
71 | 74 | | |
72 | 75 | | |
73 | 76 | | |
| |||
Lines changed: 8 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
| 66 | + | |
66 | 67 | | |
67 | 68 | | |
68 | 69 | | |
| |||
118 | 119 | | |
119 | 120 | | |
120 | 121 | | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
121 | 128 | | |
122 | 129 | | |
123 | 130 | | |
| |||
218 | 225 | | |
219 | 226 | | |
220 | 227 | | |
221 | | - | |
| 228 | + | |
222 | 229 | | |
223 | 230 | | |
224 | 231 | | |
| |||
0 commit comments