"use client";

import { useEffect } from "react";
import { useSearchParams, useRouter } from "next/navigation";

/**
 * Payment Success Page
 * 
 * Authentication handled via HTTP-only cookies through Next.js API route.
 * No need to pass bearer token in URL - it's automatically included via credentials: "include"
 */
export default function SuccessClient() {
  const searchParams = useSearchParams();
  const sessionId = searchParams.get("session_id");
  const router = useRouter();

  useEffect(() => {
    if (!sessionId) return;
    fetchInvoiceAndRedirect();
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [sessionId, router]);

  const fetchInvoiceAndRedirect = async () => {
    try {
      // Call Next.js API route - token sent automatically via HTTP-only cookies
      const res = await fetch(`/api/checkout/success/${sessionId}`, {
        method: "GET",
        headers: {
          "Content-Type": "application/json",
        },
        credentials: "include", // Include HTTP-only cookies for authentication
      });
      
      if (!res.ok) {
        // If unauthorized, redirect to login
        if (res.status === 401) {
          router.push('/auth/login?redirect=/bag');
          return;
        }
        throw new Error(`Error ${res.status}: ${res.statusText}`);
      }

      const data = await res.json();

      if (!data.success) {
        throw new Error(data.message || 'Failed to process payment');
      }
      
      const url = `/order?order_id=${data.data.order.order_id}&invoice_id=${data.data.order.invoice_id}`;
    
      setTimeout(() => {
        router.push(url);
      }, 3000); // Delay for 3 seconds
    } catch (err) {
      console.error("Failed to process payment response");
      // Optional: Show error message to user
    }
  };
  return (
    <div className="wrapper">
      <div className="mx-auto flex h-lvh w-full flex-col items-center justify-center gap-5 md:w-[40%] lg:w-[25%]">
        <div className="flex flex-col text-teal-300">
          <i
            className="icon-[material-symbols-light--check-circle-outline-rounded]"
            style={{ width: 80, height: 80 }}
          />
        </div>

        <div className="flex w-full flex-col gap-1 text-center">
          <h1 className="med">Payment Received</h1>
        </div>

        <div className="flex flex-row gap-1">
          <button
            disabled
            type="button"
            className="inline-flex items-center gap-2 px-5 py-2.5 text-sm focus:z-10 focus:text-teal-600"
          >
            <svg
              aria-hidden="true"
              role="status"
              className="inline h-8 w-8 animate-spin text-gray-950/25"
              viewBox="0 0 100 101"
              fill="none"
              xmlns="http://www.w3.org/2000/svg"
            >
              <path
                d="M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z"
                fill="currentColor"
              />
              <path
                d="M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539..."
                fill="#00BBA7"
              />
            </svg>
            Processing...
          </button>
        </div>

        <div className="mt-4 flex flex-col gap-2 text-center text-xs">
          <p>Redirecting you to the order thank you page.</p>
          <p>Don{"'"}t refresh or use the back button.</p>
        </div>
      </div>
    </div>
  );
}
