// modules/admin/pages/assets/ViewDocumentAsset.jsx import { useParams, useNavigate } from "react-router-dom"; import { ArrowLeft, Lock, Globe, FileText, Pencil } from "lucide-react"; import { useDateFormat } from "@/hooks/useDateFormat"; import { useAssetFetchState } from "@/hooks/useAssetFetchState"; import { useAssetPreviewSrc } from "@/hooks/useAssetPreviewSrc"; import { formatFileSize } from "@/utils/format.util"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Separator } from "@/components/ui/separator"; import FileZoomViewer from "@/components/generic/FileZoomViewer"; import AssetPageLoader from "@/components/generic/AssetLoader"; function MetaRow({ label, value }) { if (!value && value !== 0) return null; return (
{label} {String(value)}
); } const PREVIEWABLE = ["pdf", "txt", "html", "htm", "csv", "md"]; export default function ViewDocumentAsset() { const { assetId } = useParams(); const navigate = useNavigate(); const { fmtDateTime } = useDateFormat(); const { asset: selectedAsset, loading, notFound } = useAssetFetchState(assetId); const { src: streamUrl, loading: previewLoading } = useAssetPreviewSrc(selectedAsset, { scope: "admin" }); if (loading) { return ; } if (notFound) { return (

File not found.

); } const a = selectedAsset; const ext = (a.extension ?? "").toLowerCase(); const canPreview = PREVIEWABLE.includes(ext); const isPdf = ext === "pdf"; return (
{/* ── Header ── */}

{a.display_name ?? a.original_name}

{a.mime_type}

{/* ── Document preview ── */}
{isPdf ? (
) : canPreview && streamUrl ? (