import { notFound, redirect } from 'next/navigation'
import { getPageSession } from '@/auth/lucia'
import { prisma } from '@/lib/prisma'
import { signOut } from './action'
import Profile from './profile'
import ActionButton from '../@modal/action-button'
"use client";
import { useActionState } from "react";
import { changePassword, deleteMyAccount } from "./actions"; // <- adapte le chemin

export function ChangePasswordForm() {
  const [state, formAction] = useActionState(changePassword, { ok: false, message: "" });

  return (
    <form action={formAction} className="grid gap-3 max-w-md">
      <input name="currentPassword" type="password" placeholder="Mot de passe actuel" required className="border px-3 py-2 rounded" />
      <input name="newPassword" type="password" placeholder="Nouveau mot de passe" required minLength={8} className="border px-3 py-2 rounded" />
      <input name="confirmNewPassword" type="password" placeholder="Confirmer le nouveau" required minLength={8} className="border px-3 py-2 rounded" />
      <button className="bg-blue-600 text-white px-4 py-2 rounded">Mettre à jour</button>
      {state.message && <p className={state.ok ? "text-green-600" : "text-red-600"}>{state.message}</p>}
    </form>
  );
}

export function DeleteAccountForm() {
  const [state, formAction] = useActionState(deleteMyAccount, { ok: false, message: "" });

  return (
    <form action={formAction} className="grid gap-3 max-w-md">
      <p className="text-sm">Tape <b>DELETE</b> pour confirmer :</p>
      <input name="confirm" placeholder="DELETE" required className="border px-3 py-2 rounded" />
      <button className="bg-red-600 text-white px-4 py-2 rounded">Supprimer mon compte</button>
      {state.message && !state.ok && <p className="text-red-600 text-sm">{state.message}</p>}
    </form>
  );
}


async function getUserDetails(userId: string) {
  return await prisma.user.findUnique({
    where: { id: userId },
    // include: { StripeAccount: { select: { stripeData: true } } },
  })
}

const Page = async () => {
  const session = await getPageSession()
  if (!session) redirect('/signin/?returnTo=profile')

  const user = await getUserDetails(session?.user?.userId)
  if (!user) notFound()

  return (
    <main>
      <Profile userData={user} />

      <form action={signOut}>
        <ActionButton>Logout</ActionButton>
      </form>
    </main>
  )
}

export default Page
