From 095f01717d6054972617f5821ea84a1d0515935b Mon Sep 17 00:00:00 2001 From: Javier Segarra <jsegarra@verdnatura.es> Date: Thu, 6 Mar 2025 10:01:35 +0100 Subject: [PATCH] perf: refs #8725 handle axios.error --- src/components/FormModel.vue | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/components/FormModel.vue b/src/components/FormModel.vue index 02afae2c6..184913c49 100644 --- a/src/components/FormModel.vue +++ b/src/components/FormModel.vue @@ -1,6 +1,15 @@ <script setup> import axios from 'axios'; -import { onMounted, onUnmounted, computed, ref, watch, nextTick, useAttrs } from 'vue'; +import { + onMounted, + onUnmounted, + computed, + ref, + watch, + nextTick, + useAttrs, + inject, +} from 'vue'; import { onBeforeRouteLeave, useRouter, useRoute } from 'vue-router'; import { useI18n } from 'vue-i18n'; import { useQuasar } from 'quasar'; @@ -13,7 +22,7 @@ import VnConfirm from './ui/VnConfirm.vue'; import { tMobile } from 'src/composables/tMobile'; import { useArrayData } from 'src/composables/useArrayData'; import { getDifferences, getUpdatedValues } from 'src/filters'; - +const app = inject('app'); const { push } = useRouter(); const quasar = useQuasar(); const state = useState(); @@ -134,12 +143,15 @@ const defaultButtons = computed(() => ({ ...$props.defaultButtons, })); -const submitForm = () => { - myForm.value.validate().then((success) => { - if (success) { - save(); +const submitForm = async () => { + const valid = await myForm.value.validate(); + if (valid) { + try { + await save(); + } catch (error) { + app.config.errorHandler(error); } - }); + } }; onMounted(async () => { @@ -237,10 +249,9 @@ async function save() { const method = $props.urlCreate ? 'post' : 'patch'; const url = $props.urlCreate || $props.urlUpdate || $props.url || arrayData.store.url; - let response; - - if ($props.saveFn) response = await $props.saveFn(body); - else response = await axios[method](url, body); + const response = await Promise.resolve( + $props.saveFn ? $props.saveFn(body) : axios[method](url, body), + ); if ($props.urlCreate) notify('globals.dataCreated', 'positive');