diff --git a/src/components/FormModel.vue b/src/components/FormModel.vue index 6eb386955..f5d51bc5e 100644 --- a/src/components/FormModel.vue +++ b/src/components/FormModel.vue @@ -233,10 +233,8 @@ async function fetch() { } } -async function handleResponse(response, showCreatedNotification = false) { - if (showCreatedNotification) { - notify('globals.dataCreated', 'positive'); - } +async function handleResponse(promise) { + const response = await Promise.allSettled([promise]); updateAndEmit('onDataSaved', { val: formData.value, res: response?.data, @@ -247,24 +245,21 @@ async function handleResponse(response, showCreatedNotification = false) { } async function create() { - formData.value = trimData(formData.value); - const url = $props.urlCreate; - const response = await Promise.resolve( - $props.saveFn ? $props.saveFn(formData.value) : axios.post(url, formData.value), - ); - await handleResponse(response, true); + const promise = $props.saveFn + ? $props.saveFn(formData.value) + : axios.post($props.urlCreate, formData.value); + + await handleResponse(promise); + notify('globals.dataCreated', 'positive'); } async function update() { - formData.value = trimData(formData.value); const body = mapper.value ? mapper.value(originalData.value, formData.value) : formData.value; const url = $props.urlUpdate || $props.url || arrayData.store.url; - const response = await Promise.resolve( - $props.saveFn ? $props.saveFn(body) : axios.patch(url, body), - ); - await handleResponse(response); + const promise = $props.saveFn ? $props.saveFn(body) : axios.patch(url, body); + await handleResponse(promise); } async function save() { @@ -273,7 +268,8 @@ async function save() { isLoading.value = true; try { - if ($props.urlCreate != null) { + formData.value = trimData(formData.value); + if ($props.urlCreate) { await create(); } else { await update();