From 06525584cab94e4d4690b144be22fb43b11fd3db Mon Sep 17 00:00:00 2001 From: Rcst20 <1945826346@qq.com> Date: Mon, 20 Jul 2026 16:20:33 +0800 Subject: [PATCH 1/3] fix: show progress when saving plugin config --- dashboard/src/views/extension/useExtensionPage.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/dashboard/src/views/extension/useExtensionPage.js b/dashboard/src/views/extension/useExtensionPage.js index 3ceecc85bc..ed039886f6 100644 --- a/dashboard/src/views/extension/useExtensionPage.js +++ b/dashboard/src/views/extension/useExtensionPage.js @@ -1045,22 +1045,30 @@ export const useExtensionPage = () => { }; const updateConfig = async () => { + loadingDialog.title = tm("status.loading"); + loadingDialog.statusCode = 0; + loadingDialog.result = ""; + loadingDialog.show = true; try { const res = await axios.post( "/api/config/plugin/update?plugin_name=" + curr_namespace.value, extension_config.config, ); - if (res.data.status === "ok") { - toast(res.data.message, "success"); - } else { + if (res.data.status !== "ok") { toast(res.data.message, "error"); + onLoadingDialogResult(2, res.data.message, -1); + return; } + + toast(res.data.message, "success"); + onLoadingDialogResult(1, res.data.message); configDialog.value = false; extension_config.metadata = {}; extension_config.config = {}; getExtensions(); } catch (err) { toast(err, "error"); + onLoadingDialogResult(2, err.message || String(err), -1); } }; From 4fa35d7a388054255afbfe1d1e48bbbfb80a4364 Mon Sep 17 00:00:00 2001 From: Rcst20 <1945826346@qq.com> Date: Mon, 20 Jul 2026 17:30:26 +0800 Subject: [PATCH 2/3] fix: normalize error message shown when saving plugin config fails --- dashboard/src/views/extension/useExtensionPage.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dashboard/src/views/extension/useExtensionPage.js b/dashboard/src/views/extension/useExtensionPage.js index ed039886f6..cf3d14f2b7 100644 --- a/dashboard/src/views/extension/useExtensionPage.js +++ b/dashboard/src/views/extension/useExtensionPage.js @@ -1067,8 +1067,9 @@ export const useExtensionPage = () => { extension_config.config = {}; getExtensions(); } catch (err) { - toast(err, "error"); - onLoadingDialogResult(2, err.message || String(err), -1); + const errMsg = resolveErrorMessage(err, tm("messages.operationFailed")); + toast(errMsg, "error"); + onLoadingDialogResult(2, errMsg, -1); } }; From bad53afe54020b42e8a46648a229764f8a487681 Mon Sep 17 00:00:00 2001 From: Rcst20 <1945826346@qq.com> Date: Mon, 20 Jul 2026 18:16:49 +0800 Subject: [PATCH 3/3] feat: animate plugin config save progress dialog --- dashboard/src/views/ExtensionPage.vue | 38 +++++++++++++++++---------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/dashboard/src/views/ExtensionPage.vue b/dashboard/src/views/ExtensionPage.vue index e379be890f..129b2f011f 100644 --- a/dashboard/src/views/ExtensionPage.vue +++ b/dashboard/src/views/ExtensionPage.vue @@ -290,7 +290,12 @@ const { - + {{ loadingDialog.title }} @@ -301,19 +306,24 @@ const { class="mb-4" > -
- -
{{ loadingDialog.result }}
-
+ +
+ +
{{ loadingDialog.result }}
+
+

{{ tm("dialogs.loading.logs") }}