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 (
            <Main>
                <div className="alert alert-error">
                    <p>{accessValidation.error || 'This content is no longer shared'}</p>
                </div>
            </Main>
        );
    }

    const locationID = accessValidation.locationId;

    // Fetch bill data
    const [location, bill] = await fetchBillById(locationID, billID) ?? [];

    if (!bill || !location) {
        return notFound();
    }

    return (
        <Main>
            <ViewBillCard location={location} bill={bill} shareId={shareId} />
        </Main>
    );
}