import { notFound } from "next/navigation"; import { FilePreview } from "~/app/_components/FilePreview"; import { HomeButton } from "~/app/_components/HomeButton"; // Import the client component import { Toaster } from "react-hot-toast"; import { FileActionsContainer, FileDescriptionContainer } from "~/app/_components/ActionButtons"; // Import the client component import Head from "next/head"; interface FileDetails { name: string; size: number; owner: string; ownerAvatar: string | null; uploadDate: string; id: string; isOwner: boolean; type: string; url: string; description: string; } async function fetchFileDetails(fileId: string): Promise { try { const response = await fetch( `${process.env.NEXT_PUBLIC_PAGE_URL}/api/files/share?id=${encodeURIComponent( fileId )}`, { cache: "no-store" } ); if (!response.ok) { return null; } return response.json(); } catch (err) { console.error("Failed to fetch file details:", err); return null; } } export default async function FilePreviewContainer({ searchParams, }: { searchParams: Promise<{ id?: string }>; }) { const resolvedSearchParams = await searchParams; // Resolve the promise const fileId = resolvedSearchParams.id; if (!fileId) { notFound(); } const fileDetails = await fetchFileDetails(fileId); if (!fileDetails) { return (

No File Found

); } return ( <> {fileDetails.name} - File Details 1024 * 1024 * 1024 ? (fileDetails.size / (1024 * 1024 * 1024)).toFixed(2) + " GB" : fileDetails.size > 1024 * 1024 ? (fileDetails.size / (1024 * 1024)).toFixed(2) + " MB" : fileDetails.size > 1024 ? (fileDetails.size / 1024).toFixed(2) + " KB" : fileDetails.size + " Bytes" }, Owner: ${fileDetails.owner}, Uploaded on: ${new Date( fileDetails.uploadDate ).toLocaleString()}`} />
{/* Use the client component */}

File Details

{fileDetails.type !== "unknown" && ( )}

Name: {fileDetails.name}

Size:{" "} {fileDetails.size > 1024 * 1024 * 1024 ? (fileDetails.size / (1024 * 1024 * 1024)).toFixed(2) + " GB" : fileDetails.size > 1024 * 1024 ? (fileDetails.size / (1024 * 1024)).toFixed(2) + " MB" : fileDetails.size > 1024 ? (fileDetails.size / 1024).toFixed(2) + " KB" : fileDetails.size + " Bytes"}

Owner:{" "} Owner avatar{" "} {fileDetails.owner}

Upload Date:{" "} {new Date(fileDetails.uploadDate).toLocaleString()}

Description:{" "}
); }