diff --git a/web-v2/src/pages/InventoryDetailPage.tsx b/web-v2/src/pages/InventoryDetailPage.tsx new file mode 100644 index 0000000..59b8f1a --- /dev/null +++ b/web-v2/src/pages/InventoryDetailPage.tsx @@ -0,0 +1,39 @@ +import { useEffect, useState } from 'react'; +import { useParams, useSearchParams } from 'react-router'; +import { Alert, LoadingBlock, errorMessage } from '../components/Feedback'; +import { getAsset } from '../lib/api'; +import type { AssetDetail } from '../lib/api'; +import { AssetEditorPage } from './AssetEditorPage'; +import { CompanyInventoryPage } from './CompanyInventoryPage'; + +export function InventoryDetailPage() { + const { id } = useParams(); + const [params] = useSearchParams(); + const [asset, setAsset] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(''); + + useEffect(() => { + if (!id) { + setError('No se encontró el registro solicitado.'); + setLoading(false); + return; + } + setLoading(true); + setError(''); + getAsset(id) + .then(setAsset) + .catch((requestError) => setError(errorMessage(requestError))) + .finally(() => setLoading(false)); + }, [id]); + + if (loading) return ; + if (!asset) return {error || 'No se pudo cargar el registro.'}; + + const isCompany = asset.type.code.toLowerCase() === 'empresa'; + if (isCompany && params.get('advanced') !== '1') { + return ; + } + + return ; +}