From 8a85e2adc1e9af5691a07d32b0797639b2df8192 Mon Sep 17 00:00:00 2001 From: Azri Kahar <42867097+azrikahar@users.noreply.github.com> Date: Tue, 22 Feb 2022 00:11:17 +0800 Subject: [PATCH] Show errors for Save as Copy action (#11761) * show errors for Save as Copy action * extract error handler for both save & saveAsCopy --- app/src/composables/use-item/use-item.ts | 52 +++++++++++------------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/app/src/composables/use-item/use-item.ts b/app/src/composables/use-item/use-item.ts index 8eeda4e617..471dbd38a3 100644 --- a/app/src/composables/use-item/use-item.ts +++ b/app/src/composables/use-item/use-item.ts @@ -144,25 +144,7 @@ export function useItem(collection: Ref, primaryKey: Ref VALIDATION_TYPES.includes(err?.extensions?.code)) - .map((err: APIError) => { - return err.extensions; - }); - - const otherErrors = err.response.data.errors.filter( - (err: APIError) => VALIDATION_TYPES.includes(err?.extensions?.code) === false - ); - - if (otherErrors.length > 0) { - otherErrors.forEach(unexpectedError); - } - } else { - unexpectedError(err); - } - - throw err; + saveErrorHandler(err); } finally { saving.value = false; } @@ -207,21 +189,33 @@ export function useItem(collection: Ref, primaryKey: Ref err?.extensions?.code === 'FAILED_VALIDATION') - .map((err: APIError) => { - return err.extensions; - }); - } else { - unexpectedError(err); - throw err; - } + saveErrorHandler(err); } finally { saving.value = false; } } + function saveErrorHandler(err: any) { + if (err?.response?.data?.errors) { + validationErrors.value = err.response.data.errors + .filter((err: APIError) => VALIDATION_TYPES.includes(err?.extensions?.code)) + .map((err: APIError) => { + return err.extensions; + }); + + const otherErrors = err.response.data.errors.filter( + (err: APIError) => VALIDATION_TYPES.includes(err?.extensions?.code) === false + ); + + if (otherErrors.length > 0) { + otherErrors.forEach(unexpectedError); + } + } else { + unexpectedError(err); + } + throw err; + } + async function archive() { if (!collectionInfo.value?.meta?.archive_field) return;