All three wizards now submit through the backend aanvraag lifecycle, so a
submitted Concept actually transitions (dashboard shows it correctly in F).
- blockActions(status) (domain + spec): the pure per-status action decision
(Concept → resume/cancel; In behandeling → viewDocuments; resolved → none).
- createDraftSync.submit(): ensure the Concept exists, then
POST /applications/{id}/submit; folded into a Result like the old commands.
- registratie: submit via draftSync (duo → auto, handmatig → manual pending — the
old 422 path is gone from the wizard).
- intake + herregistratie: adopt createDraftSync (persistence + resume-by-link);
intake retires sessionStorage `intake-v3`; herregistratie gains persistence.
Both submit through the aanvraag too. hasProgress added to each machine (+spec).
- Delete now-dead submit-registratie/submit-intake/submit-herregistratie commands.
Deferred: the old /registrations, /intakes, /herregistraties backend endpoints +
RejectRegistratie are now unused by the FE but still present (+ tested) — retiring
them cascades into backend test rewrites, so it's a focused follow-up cleanup.
Gates green: vitest 128, lint, build; backend unchanged (dotnet 56).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
19 lines
608 B
TypeScript
19 lines
608 B
TypeScript
import { AanvraagStatus } from './aanvraag';
|
|
|
|
/** What a dashboard "Mijn aanvragen" block offers per status. The badge itself
|
|
follows directly from `status.tag` (the UI maps tag → colour + label), so this
|
|
pure function owns only the *actions* decision. */
|
|
export type BlockAction = 'resume' | 'cancel' | 'viewDocuments';
|
|
|
|
export function blockActions(status: AanvraagStatus): BlockAction[] {
|
|
switch (status.tag) {
|
|
case 'Concept':
|
|
return ['resume', 'cancel'];
|
|
case 'InBehandeling':
|
|
return ['viewDocuments'];
|
|
case 'Goedgekeurd':
|
|
case 'Afgewezen':
|
|
return [];
|
|
}
|
|
}
|