diff --git a/app/(dashboard)/table-catalog/page.tsx b/app/(dashboard)/table-catalog/page.tsx
index 5fa609e7..e307e156 100644
--- a/app/(dashboard)/table-catalog/page.tsx
+++ b/app/(dashboard)/table-catalog/page.tsx
@@ -48,6 +48,7 @@ import { ViewDialog, type ViewDialogMode } from "@/components/table-catalog/view
import { ViewDetailDialog } from "@/components/table-catalog/view-detail-dialog"
import { useDialog } from "@/lib/feedback/dialog"
import { useMessage } from "@/lib/feedback/message"
+import { confirmTableBucketDisable } from "@/lib/table-catalog-disable"
import { copyToClipboard } from "@/lib/clipboard"
import { cn } from "@/lib/utils"
import { displayNamespace, resolveTableCatalogPrefix, TABLE_CATALOG_PREFIX } from "@/lib/table-catalog-paths"
@@ -101,6 +102,7 @@ export default function TableCatalogPage() {
getCatalogConfig,
getTableBucket,
enableTableBucket,
+ disableTableBucket,
listNamespaces,
dropNamespace,
listTables,
@@ -472,6 +474,19 @@ export default function TableCatalogPage() {
})
}
+ const handleDisableBucket = () => {
+ confirmTableBucketDisable({
+ bucket: selectedBucket,
+ canManage: canEnableBucket,
+ info: selectedInfo,
+ disable: disableTableBucket,
+ onDisabled: (bucket, info) => setBucketInfo((current) => ({ ...current, [bucket]: info })),
+ dialog,
+ message,
+ t,
+ })
+ }
+
const handleDeleteNamespace = React.useCallback(
(row: NamespaceSummary) => {
if (!canDeleteNamespace || !selectedBucket) return
@@ -925,6 +940,18 @@ export default function TableCatalogPage() {
) : selectedInfo ? (
{t("Not enabled")}
) : null}
+ {selectedInfo?.enabled && selectedInfo.disableSupported ? (
+
+ ) : null}
{selectedInfo?.enabled && activeTab === "tables" ? (