From c498363abde9e3bc29d5f1e8c422cef83188085c Mon Sep 17 00:00:00 2001 From: Zhengchao An Date: Sat, 4 Jul 2026 13:15:33 +0800 Subject: [PATCH] fix: remove unsupported tier providers (#144) --- app/(dashboard)/tiers/page.tsx | 4 ---- components/tiers/new-form.tsx | 7 ------- hooks/use-tiers.ts | 7 ++++--- public/svg/huaweiyun.svg | 1 - public/svg/tenxunyun.svg | 1 - tests/lib/tier-support-source.test.js | 19 +++++++++++++++++++ 6 files changed, 23 insertions(+), 16 deletions(-) delete mode 100644 public/svg/huaweiyun.svg delete mode 100644 public/svg/tenxunyun.svg create mode 100644 tests/lib/tier-support-source.test.js diff --git a/app/(dashboard)/tiers/page.tsx b/app/(dashboard)/tiers/page.tsx index cc9e9ee..20db329 100644 --- a/app/(dashboard)/tiers/page.tsx +++ b/app/(dashboard)/tiers/page.tsx @@ -26,10 +26,6 @@ function getConfig(row: TierRow): TierConfig | undefined { return row.s3 case "aliyun": return row.aliyun - case "tencent": - return row.tencent - case "huaweicloud": - return row.huaweicloud case "azure": return row.azure case "gcs": diff --git a/components/tiers/new-form.tsx b/components/tiers/new-form.tsx index dbcb86e..1e657ad 100644 --- a/components/tiers/new-form.tsx +++ b/components/tiers/new-form.tsx @@ -23,13 +23,6 @@ const TYPE_OPTIONS = [ { labelKey: "Minio", value: "minio", icon: "/svg/minio.svg", descKey: "External MinIO tier" }, { labelKey: "AWS S3", value: "s3", icon: "/svg/aws.svg", descKey: "Standard AWS S3 tier" }, { labelKey: "Aliyun OSS", value: "aliyun", icon: "/svg/aliyun.svg", descKey: "Alibaba Cloud Object Storage Service" }, - { labelKey: "Tencent COS", value: "tencent", icon: "/svg/tenxunyun.svg", descKey: "Tencent Cloud Object Storage" }, - { - labelKey: "Huawei OBS", - value: "huaweicloud", - icon: "/svg/huaweiyun.svg", - descKey: "Huawei Cloud Object Storage Service", - }, { labelKey: "Azure Blob", value: "azure", icon: "/svg/azure.svg", descKey: "Microsoft Azure Blob Storage" }, { labelKey: "Google Cloud Storage", value: "gcs", icon: "/svg/google.svg", descKey: "Google Cloud Storage" }, { labelKey: "Cloudflare R2", value: "r2", icon: "/svg/cloudflare.svg", descKey: "Cloudflare R2 Storage" }, diff --git a/hooks/use-tiers.ts b/hooks/use-tiers.ts index 8986cd4..d6d0e3d 100644 --- a/hooks/use-tiers.ts +++ b/hooks/use-tiers.ts @@ -18,14 +18,14 @@ export interface TierRow { minio?: TierConfig s3?: TierConfig aliyun?: TierConfig - tencent?: TierConfig - huaweicloud?: TierConfig azure?: TierConfig gcs?: TierConfig r2?: TierConfig [key: string]: unknown } +const UNSUPPORTED_TIER_TYPES = new Set(["huaweicloud", "tencent"]) + export function useTiers() { const api = useApi() @@ -44,7 +44,8 @@ export function useTiers() { ) const listTiers = useCallback(async () => { - return api.get("/tier") as Promise + const tiers = (await api.get("/tier")) as TierRow[] | undefined + return (tiers ?? []).filter((tier) => !UNSUPPORTED_TIER_TYPES.has(tier.type)) }, [api]) const removeTiers = useCallback( diff --git a/public/svg/huaweiyun.svg b/public/svg/huaweiyun.svg deleted file mode 100644 index b5c6b29..0000000 --- a/public/svg/huaweiyun.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/svg/tenxunyun.svg b/public/svg/tenxunyun.svg deleted file mode 100644 index 9cab2b5..0000000 --- a/public/svg/tenxunyun.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/lib/tier-support-source.test.js b/tests/lib/tier-support-source.test.js new file mode 100644 index 0000000..beb61f9 --- /dev/null +++ b/tests/lib/tier-support-source.test.js @@ -0,0 +1,19 @@ +import test from "node:test" +import assert from "node:assert/strict" +import fs from "node:fs" + +test("tier UI no longer offers Huawei or Tencent storage support", () => { + const newFormSource = fs.readFileSync("components/tiers/new-form.tsx", "utf8") + const pageSource = fs.readFileSync("app/(dashboard)/tiers/page.tsx", "utf8") + const hookSource = fs.readFileSync("hooks/use-tiers.ts", "utf8") + + assert.equal(newFormSource.includes("Huawei OBS"), false) + assert.equal(newFormSource.includes("huaweiyun.svg"), false) + assert.equal(newFormSource.includes("Tencent COS"), false) + assert.equal(newFormSource.includes("tenxunyun.svg"), false) + assert.equal(pageSource.includes("row.huaweicloud"), false) + assert.equal(pageSource.includes("row.tencent"), false) + assert.equal(hookSource.includes("huaweicloud?: TierConfig"), false) + assert.equal(hookSource.includes("tencent?: TierConfig"), false) + assert.equal(hookSource.includes('UNSUPPORTED_TIER_TYPES = new Set(["huaweicloud", "tencent"])'), true) +})