All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 40s
commit 579f0878e5240dc17db69be1e0b0c0f5af7ef9fe
Author: Arno Kaimbacher <arno.kaimbacher@geosphere.at>
Date: Tue Jun 9 09:25:44 2026 +0200
feat: Refactor error handling in Dataset Edit form and improve validation messages
- Updated error handling in the Dataset Edit form to use a centralized formatError function for displaying validation messages.
- Enhanced user feedback by ensuring that error messages are displayed consistently across various fields.
- Modified the validation rule for arrayContainsTypes to provide clearer error messages for missing main and translated titles/abstracts.
- Introduced a new ValidationService to manage manual construction of validation errors.
- Updated Vite configuration to streamline asset loading and improve performance.
- Adjusted Inertia setup to utilize dynamic imports for page-specific assets.
- Cleaned up unnecessary comments and code in various files for better readability.
commit 5efddc2a58c0e164fef585cc7344c06155dbc2c1
Author: Arno Kaimbacher <arno.kaimbacher@geosphere.at>
Date: Mon Jan 12 17:02:47 2026 +0100
feat: add dataset change detection and form submission composables
- Implemented `useDatasetChangeDetection` for tracking unsaved changes in dataset forms, including comparisons for licenses, basic properties, files, coverage, and more.
- Added `useDatasetFormSubmission` for handling dataset form submissions with validation, success/error handling, and auto-save functionality.
53 lines
No EOL
1.9 KiB
TypeScript
53 lines
No EOL
1.9 KiB
TypeScript
import app from '@adonisjs/core/services/app'
|
|
import { HttpContext, ExceptionHandler } from '@adonisjs/core/http'
|
|
import type { StatusPageRange, StatusPageRenderer } from '@adonisjs/core/types/http'
|
|
|
|
export default class HttpExceptionHandler extends ExceptionHandler {
|
|
protected debug = !app.inProduction
|
|
protected renderStatusPages = true
|
|
|
|
protected statusPages: Record<StatusPageRange, StatusPageRenderer> = {
|
|
'404': (error, ctx) =>
|
|
ctx.inertia
|
|
? ctx.inertia.render('Errors/ServerError', { error: error.message, code: error.status })
|
|
: ctx.response.status(error.status).send(error.message),
|
|
'401..403': (error, ctx) => {
|
|
if (ctx.inertia) {
|
|
return ctx.inertia.render('Errors/ServerError', { error: error.message, code: error.status });
|
|
}
|
|
return ctx.response.status(error.status).send(error.message);
|
|
},
|
|
'500..599': (error, ctx) => {
|
|
const isDbError =
|
|
error.code === 'ECONNREFUSED' &&
|
|
(error.errors?.some((e: any) => e.port === 5432) ?? error.message?.includes('5432'));
|
|
|
|
if (isDbError && ctx.inertia) {
|
|
return ctx.inertia.render('Errors/postgres_error', {
|
|
status: 'error',
|
|
message: 'PostgreSQL database connection failed.',
|
|
details: {
|
|
code: error.code,
|
|
type: error.status
|
|
// Entferne das .map() auf error.errors, da es oft undefined ist
|
|
}
|
|
});
|
|
}
|
|
|
|
if (ctx.inertia) {
|
|
return ctx.inertia.render('Errors/ServerError', { error: error.message, code: 500 });
|
|
}
|
|
return ctx.response.status(500).send(error.message);
|
|
}
|
|
};
|
|
|
|
public async handle(error: any, ctx: HttpContext) {
|
|
/**
|
|
* WICHTIG: Validierungsfehler (422) NICHT manuell abfangen!
|
|
* AdonisJS 6 + VineJS + Inertia machen das automatisch.
|
|
* Wenn du es hier manuell machst, überschreibst du den Standard-Flow.
|
|
*/
|
|
|
|
return super.handle(error, ctx)
|
|
}
|
|
} |