Harden catalog admin: fix translate/quick-add, RCON sync, and confirm UX.
Local Build and Deploy / deploy (push) Successful in 1m18s

Restore broken Quick Add search, correct Translate saves to items_base and FurnitureData, reparent page deletes, sync RCON on create/toggle/BC mutations, and replace native confirms/prompts with dialogs.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
SimoandCursor committed 2026-07-17 21:12:58 +02:00
1 parent de9f837da1
commit b52e25578d
20 files changed
+557 -216

No files matched your search

+10 -2
View File
@@ -32,6 +32,7 @@ import {
useState,
} from "react";
import { toast } from "sonner";
import { useConfirmDialog } from "@/components/admin/confirm-dialog";
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
@@ -173,6 +174,7 @@ export function CatalogTree({
catalogType = "normal",
}: CatalogTreeProps) {
const router = useRouter();
const { confirm, dialog: confirmDialog } = useConfirmDialog();
const [searchQuery, setSearchQuery] = useState("");
const [searchResults, setSearchResults] = useState<TreeNode[] | null>(null);
const [searching, setSearching] = useState(false);
@@ -280,7 +282,12 @@ export function CatalogTree({
: "";
const itemInfo =
node.itemCount > 0 ? ` ${node.itemCount} item(s) will be deleted.` : "";
if (!confirm(`Delete "${node.caption}"?${childInfo}${itemInfo}`)) return;
const ok = await confirm({
title: "Delete page",
description: `Delete "${node.caption}"?${childInfo}${itemInfo}`,
confirmLabel: "Delete",
});
if (!ok) return;
try {
const res = await fetch(
@@ -296,7 +303,7 @@ export function CatalogTree({
toast.error("Failed to delete page.");
}
},
[router, catParam],
[router, catParam, confirm],
);
const unfilteredPages = searchResults ?? rootPages;
@@ -320,6 +327,7 @@ export function CatalogTree({
catalogType,
}}
>
{confirmDialog}
<TooltipProvider delayDuration={400}>
<div className="rounded-lg border bg-card shadow-sm">
{/* Header */}