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;