import { ViewLocationCard } from '@/app/ui/ViewLocationCard';
import { fetchLocationById, setSeenByTenantAt, validateShareAccess } from '@/app/lib/actions/locationActions';
import { getUserSettingsByUserId } from '@/app/lib/actions/userSettingsActions';
import { notFound } from 'next/navigation';
import { myAuth } from '@/app/lib/auth';

export default async function LocationViewPage({ shareId }: { shareId: string }) {
    // Validate share access (checks checksum + TTL, extracts locationId)
    const accessValidation = await validateShareAccess(shareId);

    if (!accessValidation.valid || !accessValidation.locationId) {
        return (
            <div className="alert alert-error">
                <p>{accessValidation.error || 'This content is no longer shared'}</p>
            </div>
        );
    }

    const locationId = accessValidation.locationId;

    // Fetch location
    const location = await fetchLocationById(locationId);

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

    // Fetch user settings for the location owner
    const userSettings = await getUserSettingsByUserId(location.userId);

    // Check if the page was accessed by an authenticated user who is the owner
    const session = await myAuth();
    const isOwner = session?.user?.id === location.userId;

    // If the page is not visited by the owner, mark it as seen by tenant
    if (!isOwner) {
         await setSeenByTenantAt(locationId);
    }

    return (
        <ViewLocationCard
            location={location}
            userSettings={userSettings}
            shareId={shareId}
        />
    );
}