import { notFound, redirect } from 'next/navigation'
import { getMyParticipant, getSessionUser } from '@/lib/auth'
import { loadAccessibleTrip } from '@/lib/data/trip-page'
import { contextForTrip, tripPath } from '@/lib/page-context'

/**
 * `/trips/<id>` keeps working for every existing link (invites, emails,
 * history, alerts) but is no longer a page: it resolves the person's role ON
 * THIS TRIP and forwards to that role's trip workspace, addressed by the trip
 * number (article "Role-Specific Page Separation", 2026-09-13).
 */
export default async function TripRedirect({
  params,
  searchParams,
}: {
  params: Promise<{ id: string }>
  searchParams: Promise<{ tab?: string; permit?: string; view?: string }>
}) {
  const { id } = await params
  const { tab, permit, view } = await searchParams
  const user = await getSessionUser()
  if (!user) redirect(`/login?next=${encodeURIComponent(`/trips/${id}`)}`)
  const trip = await loadAccessibleTrip(user, id)
  if (!trip) notFound()
  const participant = await getMyParticipant(trip.id)
  const ctx = contextForTrip(participant, user.role, view, user.internal)
  const q = new URLSearchParams()
  if (tab) q.set('tab', tab)
  if (permit) q.set('permit', permit)
  const qs = q.toString()
  redirect(`${tripPath(ctx, trip.ref_code)}${qs ? `?${qs}` : ''}`)
}
