From b4f48ea1f0b8d1b1a539ff843d79ef6113c9b03f Mon Sep 17 00:00:00 2001 From: LIghtJUNction Date: Fri, 20 Mar 2026 21:21:31 +0800 Subject: [PATCH] fix: resolve dashboard build type errors --- .../folder/BaseFolderItemSelector.vue | 14 +++++----- dashboard/src/utils/request.ts | 27 +++++++++++++++++++ dashboard/src/views/Settings.vue | 2 +- dashboard/src/views/WelcomePage.vue | 6 ++++- 4 files changed, 39 insertions(+), 10 deletions(-) diff --git a/dashboard/src/components/folder/BaseFolderItemSelector.vue b/dashboard/src/components/folder/BaseFolderItemSelector.vue index 32c4a51e9..5cfd29346 100644 --- a/dashboard/src/components/folder/BaseFolderItemSelector.vue +++ b/dashboard/src/components/folder/BaseFolderItemSelector.vue @@ -139,14 +139,12 @@ navigateToFolder((item as any).folderId) " > - + mdi-home {{ item.title }} diff --git a/dashboard/src/utils/request.ts b/dashboard/src/utils/request.ts index f9f854282..b373badd6 100644 --- a/dashboard/src/utils/request.ts +++ b/dashboard/src/utils/request.ts @@ -65,6 +65,33 @@ function normalizeBaseUrl(baseUrl: string | null | undefined): string { return stripTrailingSlashes(baseUrl?.trim() || ""); } +export function normalizeConfiguredApiBaseUrl( + baseUrl: string | null | undefined, +): string { + return normalizeBaseUrl(baseUrl); +} + +export function getApiBaseUrlValidationError( + baseUrl: string | null | undefined, +): string { + const normalizedBaseUrl = normalizeConfiguredApiBaseUrl(baseUrl); + + if (!normalizedBaseUrl) { + return ""; + } + + try { + const parsedUrl = new URL(normalizedBaseUrl); + if (!["http:", "https:"].includes(parsedUrl.protocol)) { + return "API Base URL must use http:// or https://"; + } + } catch { + return "API Base URL must be a valid absolute URL"; + } + + return ""; +} + export function getApiBaseUrl(): string { return normalizeBaseUrl(service.defaults.baseURL); } diff --git a/dashboard/src/views/Settings.vue b/dashboard/src/views/Settings.vue index 04aba2694..e73ac89f6 100644 --- a/dashboard/src/views/Settings.vue +++ b/dashboard/src/views/Settings.vue @@ -472,7 +472,7 @@ import SidebarCustomizer from "@/components/shared/SidebarCustomizer.vue"; import WaitingForRestart from "@/components/shared/WaitingForRestart.vue"; import MigrationDialog from "@/components/shared/MigrationDialog.vue"; import BackupDialog from "@/components/shared/BackupDialog.vue"; -import axios from "@/utils/request"; +import axios, { getApiBaseUrlValidationError } from "@/utils/request"; import { useI18n, useModuleI18n } from "@/i18n/composables"; import { useToast } from "@/utils/toast"; diff --git a/dashboard/src/views/WelcomePage.vue b/dashboard/src/views/WelcomePage.vue index 1cfb787ac..e73967a74 100644 --- a/dashboard/src/views/WelcomePage.vue +++ b/dashboard/src/views/WelcomePage.vue @@ -275,7 +275,11 @@