import type { WarehouseDetailDto, WarehouseLocationDto } from "@mrp/shared/dist/inventory/types.js"; import { permissions } from "@mrp/shared"; import { useEffect, useState } from "react"; import { Link, useParams } from "react-router-dom"; import { useAuth } from "../../auth/AuthProvider"; import { api, ApiError } from "../../lib/api"; export function WarehouseDetailPage() { const { token, user } = useAuth(); const { warehouseId } = useParams(); const [warehouse, setWarehouse] = useState(null); const [status, setStatus] = useState("Loading warehouse..."); const canManage = user?.permissions.includes(permissions.inventoryWrite) ?? false; useEffect(() => { if (!token || !warehouseId) { return; } api .getWarehouse(token, warehouseId) .then((nextWarehouse) => { setWarehouse(nextWarehouse); setStatus("Warehouse loaded."); }) .catch((error: unknown) => { const message = error instanceof ApiError ? error.message : "Unable to load warehouse."; setStatus(message); }); }, [token, warehouseId]); if (!warehouse) { return
{status}
; } return (

Warehouse Detail

{warehouse.code}

{warehouse.name}

Last updated {new Date(warehouse.updatedAt).toLocaleString()}.

Back to warehouses {canManage ? ( Edit warehouse ) : null}

Notes

{warehouse.notes || "No warehouse notes recorded."}

Created {new Date(warehouse.createdAt).toLocaleDateString()}

Locations

Stock locations

{warehouse.locations.length === 0 ? (
No stock locations have been defined for this warehouse yet.
) : (
{warehouse.locations.map((location: WarehouseLocationDto) => (
{location.code}
{location.name}
{location.notes || "No notes."}
))}
)}
); }