fix(geschichte): uniform onSubmit rejects-on-failure contract
The c3afd57e fix made the edit page's handleSubmit throw on !res.ok but
only JourneyEditor caught it. Now: GeschichteEditor.save() catches and
keeps its dirty state (no unhandled rejection -> no GlitchTip noise on a
failed STORY save); StoryCreate throws on failure so a failed STORY
create no longer silently disarms the unsaved guard; both handleSubmit
implementations catch network rejections, surface a message, and rethrow.
Contract documented on both editors' Props. GeschichteEditor also gets
the title maxlength=255. Spec: rejecting onSubmit is caught and the
editor stays usable.
Review round 3: Felix §2, Tobias S1, Nora (3), Markus (concern 1).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -31,10 +31,18 @@ async function handleSubmit(payload: {
|
||||
if (!res.ok) {
|
||||
const code = (await res.json().catch(() => ({})))?.code;
|
||||
errorMessage = getErrorMessage(code);
|
||||
return;
|
||||
throw new Error('create failed');
|
||||
}
|
||||
const created = await res.json();
|
||||
goto(`/geschichten/${created.id}`);
|
||||
} catch (e) {
|
||||
if (!errorMessage) {
|
||||
console.error('Story create failed', e);
|
||||
errorMessage = getErrorMessage(undefined);
|
||||
}
|
||||
// Contract: onSubmit rejects on failure — GeschichteEditor catches and
|
||||
// keeps its dirty state instead of disarming the unsaved-changes guard.
|
||||
throw e;
|
||||
} finally {
|
||||
submitting = false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user