import * as React from "react";

import { redirect } from "next/navigation";
import { cookies } from "next/headers";

import { AuthorizeContainer } from "@/components/core/authorize";

export interface AuthorizeParams {
  client_id?: string,
  response_type?: string,
  redirect_uri?: string,
  scope?: string,
  state?: string,
}

export default async function AuthorizePage({ searchParams }: { searchParams: Promise<AuthorizeParams> }) {
  const params = await searchParams;
  
  const cookieStore = await cookies();
  const token = cookieStore.get("token");


  const queryString = new URLSearchParams(
    Object.entries(params).filter(([, v]) => v !== undefined) as [string, string][]
  ).toString();
  
  if (!token) {
    redirect(`/?returnTo=/authorize?${queryString}`);
  }

  return (
    <div className="flex justify-center items-center h-screen">
      <AuthorizeContainer 
        applicationName="SecNex" 
        applicationUrl="https://secnex.io" 
        client_id={params.client_id || ""} 
        redirect_uri={params.redirect_uri || ""} 
        response_type={params.response_type || "code"} 
        scope={params.scope || "profile email"} 
        returnTo={`/authorize?${queryString}`}
      />
    </div>
  )
}