import { fetchBillById } from '@/app/lib/actions/billActions'; import { ViewBillCard } from '@/app/ui/ViewBillCard'; import { Main } from '@/app/ui/Main'; import { notFound } from 'next/navigation'; import { validateShareAccess } from '@/app/lib/actions/locationActions'; export default async function Page({ params: { id } }: { params: { id: string } }) { // Split combined ID: shareId (40 chars) + '-' + billID (24 chars) // ShareId = locationId (24) + checksum (16) = 40 chars const shareId = id.substring(0, 40); const billID = id.substring(41); // Skip the '-' separator // Validate share access (checks checksum + TTL, extracts locationId) const accessValidation = await validateShareAccess(shareId); if (!accessValidation.valid || !accessValidation.locationId) { return (

{accessValidation.error || 'This content is no longer shared'}

); } const locationID = accessValidation.locationId; // Fetch bill data const [location, bill] = await fetchBillById(locationID, billID) ?? []; if (!bill || !location) { return notFound(); } return (
); }