From 0bd097ad26664f1cb6249f316a03cdcca294107e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E7=99=BB=E5=B1=B1?= Date: Sun, 14 Jun 2026 13:38:52 +0800 Subject: [PATCH] fix: correct pool operation console status --- app/(dashboard)/pool-decommission/page.tsx | 25 ++++++---- app/(dashboard)/rebalance/page.tsx | 9 +++- components/pools/overview.tsx | 56 ++++++++++++++-------- lib/pool-operations.ts | 33 ++++++++++--- tests/lib/pool-decommission-page.test.js | 9 +++- tests/lib/pool-operations.test.js | 38 +++++++++++++++ tests/lib/pool-overview-source.test.js | 37 ++++++++++++++ 7 files changed, 168 insertions(+), 39 deletions(-) create mode 100644 tests/lib/pool-overview-source.test.js diff --git a/app/(dashboard)/pool-decommission/page.tsx b/app/(dashboard)/pool-decommission/page.tsx index 383d908..7074b6a 100644 --- a/app/(dashboard)/pool-decommission/page.tsx +++ b/app/(dashboard)/pool-decommission/page.tsx @@ -78,6 +78,10 @@ function getPoolStatusBadgeVariant(state: DecommissionDisplayState) { return "secondary" } +function hasDecommissionProgress(state: DecommissionDisplayState) { + return ["running", "canceling", "completed", "failed", "canceled"].includes(state) +} + export default function PoolDecommissionPage() { const { t } = useTranslation() const message = useMessage() @@ -167,6 +171,7 @@ export default function PoolDecommissionPage() { rebalanceState, confirmingPoolId === activePoolId, ) + const showActiveProgress = Boolean(activeStatus) && hasDecommissionProgress(activeDisplayState) const canCancelActive = activePoolId ? getPoolDisplayState(activeStatus, overview.supportState, rebalanceState) === "running" : false @@ -264,7 +269,7 @@ export default function PoolDecommissionPage() {
- + {overview.supportState === "unsupported" ? ( @@ -328,11 +333,15 @@ export default function PoolDecommissionPage() {

{t("Progress")}

-

{Math.round(activeStatus?.progressPercent ?? 0)}%

+

+ {showActiveProgress ? `${Math.round(activeStatus?.progressPercent ?? 0)}%` : "--"} +

{t("Bytes Moved")}

-

{formatBytesValue(activeStatus?.bytes)}

+

+ {showActiveProgress ? formatBytesValue(activeStatus?.bytes) : "--"} +

@@ -357,7 +366,7 @@ export default function PoolDecommissionPage() { ) : ( poolRows.map(({ pool, status: rowStatus, displayState: rowState }) => { - const hasDecommissionStarted = Boolean(rowStatus) + const showProgress = Boolean(rowStatus) && hasDecommissionProgress(rowState) const canRequestStart = !submitting && rowState === "ready" const canConfirm = !submitting && rowState === "confirming" const canCancel = !submitting && rowState === "running" @@ -376,7 +385,7 @@ export default function PoolDecommissionPage() { {formatBytesValue(pool.used)} - {hasDecommissionStarted ? ( + {showProgress ? (
@@ -387,8 +396,8 @@ export default function PoolDecommissionPage() { "--" )} - {hasDecommissionStarted ? (rowStatus?.objects ?? "--") : "--"} - {hasDecommissionStarted ? formatBytesValue(rowStatus?.bytes) : "--"} + {showProgress ? (rowStatus?.objects ?? "--") : "--"} + {showProgress ? formatBytesValue(rowStatus?.bytes) : "--"}
{rowState === "confirming" ? ( @@ -423,7 +432,7 @@ export default function PoolDecommissionPage() {