1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-06-05 22:09:38 +02:00

fix: Fix snackbar quando il salvataggio fallisce

This commit is contained in:
Maicol Battistini
2022-02-03 00:15:31 +01:00
parent 6ee6bff137
commit 0f462cd511
3 changed files with 52 additions and 11 deletions

View File

@@ -2,6 +2,7 @@
<profile version="1.0"> <profile version="1.0">
<option name="myName" value="Project Default" /> <option name="myName" value="Project Default" />
<inspection_tool class="ContractViolationInspection" enabled="false" level="WARNING" enabled_by_default="false" /> <inspection_tool class="ContractViolationInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ES6MissingAwait" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="ES6UnusedImports" enabled="false" level="WARNING" enabled_by_default="false" /> <inspection_tool class="ES6UnusedImports" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="EditorConfigPartialOverride" enabled="false" level="WEAK WARNING" enabled_by_default="false" /> <inspection_tool class="EditorConfigPartialOverride" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" /> <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />

View File

@@ -31,11 +31,13 @@ import type {
TextAreaT, TextAreaT,
TextFieldT TextFieldT
} from '../../typings'; } from '../../typings';
import {JSONAPI} from '../../typings';
import { import {
getFormData, getFormData,
isFormValid, isFormValid,
showSnackbar showSnackbar
} from '../../utils'; } from '../../utils';
import type {Select} from '../../WebComponents';
import DataTable from '../DataTable/DataTable'; import DataTable from '../DataTable/DataTable';
import TableCell from '../DataTable/TableCell'; import TableCell from '../DataTable/TableCell';
import TableColumn from '../DataTable/TableColumn'; import TableColumn from '../DataTable/TableColumn';
@@ -43,7 +45,6 @@ import TableRow from '../DataTable/TableRow';
import LoadingButton from '../LoadingButton'; import LoadingButton from '../LoadingButton';
import Mdi from '../Mdi'; import Mdi from '../Mdi';
import Page from '../Page'; import Page from '../Page';
import {Select} from '../../WebComponents';
export type ColumnT = { export type ColumnT = {
id?: string id?: string
@@ -388,14 +389,14 @@ export class RecordsPage extends Page {
} }
this.rows.put(model.getId(), model); this.rows.put(model.getId(), model);
loading.hide();
m.redraw(); m.redraw();
await showSnackbar(__('Record salvato'), 4000); await showSnackbar(__('Record salvato'), 4000);
} }
} else { } else {
loading.hide();
await showSnackbar(__('Campi non validi. Controlla i dati inseriti')); await showSnackbar(__('Campi non validi. Controlla i dati inseriti'));
} }
loading.hide();
} }
async setter(model: IModel, data: Collection<File | string>) { async setter(model: IModel, data: Collection<File | string>) {
@@ -410,16 +411,23 @@ export class RecordsPage extends Page {
await this.saveFields(model, relations, data); await this.saveFields(model, relations, data);
// Save relations try {
for (const [relation, relatedModel] of Object.entries(relations)) { // Save relations
const response = await relatedModel.save(); for (const [relation, relatedModel] of Object.entries(relations)) {
if (response.getModelId()) { const response = await relatedModel.save();
model.setRelation(relation, response.getModel()); if (response.getModelId()) {
model.setRelation(relation, response.getModel());
}
} }
}
const response = await model.save(); const response = await model.save();
return response.getModelId(); return response.getModelId();
} catch (error) {
const {errors} = (error as JSONAPI.RequestError).response.data;
const errorMessage = errors.map((error_) => error_.detail)
.join(';\n');
void showSnackbar(__('Errore durante il salvataggio: :error', {error: errorMessage}), false);
}
} }
// eslint-disable-next-line @typescript-eslint/require-await // eslint-disable-next-line @typescript-eslint/require-await

View File

@@ -13,3 +13,35 @@ export type JSXElement<T> = Omit<Partial<T>, 'children' | 'style'>
style?: string | CSSStyleDeclaration style?: string | CSSStyleDeclaration
}; };
export declare namespace JSONAPI {
export interface Trace {
file: string;
line: number;
function: string;
class: string;
type: string;
}
export interface Meta {
exception: string;
file: string;
line: number;
trace: Trace[];
}
export interface Error {
detail: string;
meta: Meta;
status: string;
title: string;
}
export interface RequestError {
response: {
data: {
errors: JSONAPI.Error[]
}
};
}
}