diff --git a/src/components/frontend/storage/ManageStorageDialog.tsx b/src/components/frontend/storage/ManageStorageDialog.tsx index 7cc0541..c31df2d 100644 --- a/src/components/frontend/storage/ManageStorageDialog.tsx +++ b/src/components/frontend/storage/ManageStorageDialog.tsx @@ -1,6 +1,7 @@ "use client"; import { useState, useEffect, useTransition, useCallback } from "react"; +import { useRouter } from "next/navigation"; import { Dialog, DialogContent, @@ -32,7 +33,7 @@ import { Loader2Icon, } from "lucide-react"; import { Progress } from "@/components/ui/progress"; -import { cn } from "@/lib/utils"; +import { cn, pluralize } from "@/lib/utils"; interface ManageStorageDialogProps { structureId: number; @@ -54,6 +55,7 @@ export function ManageStorageDialog({ const [allResources, setAllResources] = useState([]); const [loading, setLoading] = useState(false); const [isPending, startTransition] = useTransition(); + const router = useRouter(); const [message, setMessage] = useState<{ type: "success" | "error"; text: string } | null>(null); // Form state @@ -258,7 +260,8 @@ export function ManageStorageDialog({ if (result.success) { setMessage({ type: "success", text: "Resource deposited successfully." }); setDepositAmount("1"); - fetchData(); + await fetchData(); + router.refresh(); } else { setMessage({ type: "error", text: result.error ?? "Unknown error." }); } @@ -278,7 +281,8 @@ export function ManageStorageDialog({ if (result.success) { setMessage({ type: "success", text: "Resource withdrawn successfully." }); setWithdrawAmount("1"); - fetchData(); + await fetchData(); + router.refresh(); } else { setMessage({ type: "error", text: result.error ?? "Unknown error." }); } @@ -299,7 +303,8 @@ export function ManageStorageDialog({ if (result.success) { setMessage({ type: "success", text: "Transfer completed successfully." }); setTransferAmount("1"); - fetchData(); + await fetchData(); + router.refresh(); } else { setMessage({ type: "error", text: result.error ?? "Unknown error." }); } @@ -437,7 +442,7 @@ export function ManageStorageDialog({ if (!resource || typeof resource === "number") return null; return ( - {resource.name} ({entry.amount.toLocaleString()} {resource.unitOfMeasure}) + {resource.name} ({entry.amount.toLocaleString()} {pluralize(entry.amount, resource.unitOfMeasure)}) ); })} @@ -510,7 +515,7 @@ export function ManageStorageDialog({ if (!resource || typeof resource === "number") return null; return ( - {resource.name} ({entry.amount.toLocaleString()} {resource.unitOfMeasure}) + {resource.name} ({entry.amount.toLocaleString()} {pluralize(entry.amount, resource.unitOfMeasure)}) ); })} diff --git a/src/components/frontend/storage/ResourceList.tsx b/src/components/frontend/storage/ResourceList.tsx index 6eaeba7..6be8d26 100644 --- a/src/components/frontend/storage/ResourceList.tsx +++ b/src/components/frontend/storage/ResourceList.tsx @@ -1,5 +1,6 @@ import { Resource, GameStructure } from "@/payload-types"; import { convertLexicalToPlaintext } from "@payloadcms/richtext-lexical/plaintext"; +import { pluralize } from "@/lib/utils"; import { Item, ItemContent, @@ -92,7 +93,7 @@ export function ResourceList({ storedResources, maxCapacityMass }: ResourceListP /> {resource.name} - {entry.amount.toLocaleString()} {resource.unitOfMeasure} + {entry.amount.toLocaleString()} {pluralize(entry.amount, resource.unitOfMeasure)} {description && ( @@ -103,7 +104,7 @@ export function ResourceList({ storedResources, maxCapacityMass }: ResourceListP
- {entry.amount.toLocaleString()} {resource.unitOfMeasure} + {entry.amount.toLocaleString()} {pluralize(entry.amount, resource.unitOfMeasure)}
{mass > 0 && `${mass.toLocaleString()} kg mass`}