From 8433dcbff1c22038377554352fe577a6daa02d8c Mon Sep 17 00:00:00 2001 From: Halo Dev Bot <87291978+halo-dev-bot@users.noreply.github.com> Date: Tue, 20 Dec 2022 17:10:28 +0800 Subject: [PATCH] [release-2.0] perf: improve the prompt for upload failure of the upload component (#786) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an automated cherry-pick of #769 /assign ruibaby ```release-note 优化 Console 端上传组件的异常提示信息。 ``` --- src/components/upload/UppyUpload.vue | 14 ++++++++++++++ src/utils/api-client.ts | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/components/upload/UppyUpload.vue b/src/components/upload/UppyUpload.vue index ab8482ae..3455d900 100644 --- a/src/components/upload/UppyUpload.vue +++ b/src/components/upload/UppyUpload.vue @@ -7,6 +7,8 @@ import type { Restrictions } from "@uppy/core"; import XHRUpload from "@uppy/xhr-upload"; import zh_CN from "@uppy/locales/lib/zh_CN"; import { computed, onUnmounted } from "vue"; +import { Toast } from "@halo-dev/components"; +import type { ProblemDetail } from "@/utils/api-client"; const props = withDefaults( defineProps<{ @@ -50,6 +52,18 @@ const uppy = computed(() => { fieldName: props.name, method: props.method, limit: 5, + getResponseError: (responseText) => { + const response = JSON.parse(responseText); + const { title, detail } = (response || {}) as ProblemDetail; + const message = [title, detail].filter(Boolean).join(": "); + + if (message) { + Toast.error(message, { duration: 5000 }); + + return new Error(message); + } + return new Error("Internal Server Error"); + }, }); }); diff --git a/src/utils/api-client.ts b/src/utils/api-client.ts index 202fc9ef..363b1f30 100644 --- a/src/utils/api-client.ts +++ b/src/utils/api-client.ts @@ -44,7 +44,7 @@ const axiosInstance = axios.create({ withCredentials: true, }); -interface ProblemDetail { +export interface ProblemDetail { detail: string; instance: string; status: number;