fix(ui): switch alias operations from client fetch to form actions
Some checks failed
CI / Unit & Component Tests (push) Failing after 1s
CI / Backend Unit Tests (push) Failing after 2s
CI / Unit & Component Tests (pull_request) Failing after 1s
CI / Backend Unit Tests (pull_request) Failing after 1s

Replaces raw client-side fetch with SvelteKit form actions
(addAlias, removeAlias) using the server-side API client for
proper auth handling. 10 new component tests for NameHistoryEditCard.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-04-07 16:05:56 +02:00
parent 036843bf8f
commit e204ed89b6
4 changed files with 206 additions and 123 deletions

View File

@@ -86,5 +86,53 @@ export const actions = {
}
throw redirect(303, `/persons/${targetPersonId}`);
},
addAlias: async ({ request, params, fetch }) => {
const formData = await request.formData();
const lastName = formData.get('lastName')?.toString().trim();
const firstName = formData.get('firstName')?.toString().trim() || undefined;
const type = formData.get('type')?.toString();
if (!lastName) {
return fail(400, { aliasError: 'Nachname ist ein Pflichtfeld.' });
}
if (!type) {
return fail(400, { aliasError: 'Art ist ein Pflichtfeld.' });
}
const api = createApiClient(fetch);
const result = await api.POST('/api/persons/{id}/aliases', {
params: { path: { id: params.id } },
body: { lastName, firstName, type: type as 'BIRTH' | 'WIDOWED' | 'DIVORCED' | 'OTHER' }
});
if (!result.response.ok) {
const code = (result.error as unknown as { code?: string })?.code;
return fail(result.response.status, { aliasError: getErrorMessage(code) });
}
return { aliasSuccess: true };
},
removeAlias: async ({ request, params, fetch }) => {
const formData = await request.formData();
const aliasId = formData.get('aliasId')?.toString();
if (!aliasId) {
return fail(400, { aliasError: 'Alias ID fehlt.' });
}
const api = createApiClient(fetch);
const result = await api.DELETE('/api/persons/{id}/aliases/{aliasId}', {
params: { path: { id: params.id, aliasId } }
});
if (!result.response.ok) {
const code = (result.error as unknown as { code?: string })?.code;
return fail(result.response.status, { aliasError: getErrorMessage(code) });
}
return { aliasSuccess: true };
}
};