"use client";

import { useState, useTransition } from "react";
import { toast } from "sonner";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
import { setStudentApplicationEmail } from "./admin-email-actions";

export function AdminEmailForm({
  applicationId,
  currentEmail,
  studentInvited,
}: {
  applicationId: string;
  currentEmail: string | null;
  studentInvited: boolean;
}) {
  const [email, setEmail] = useState(currentEmail ?? "");
  const [pending, startTransition] = useTransition();

  if (studentInvited) {
    return (
      <p className="text-sm text-muted-foreground">
        Student email: <span className="font-medium text-foreground">{currentEmail}</span>
      </p>
    );
  }

  function onSubmit(e: React.FormEvent) {
    e.preventDefault();
    startTransition(async () => {
      const res = await setStudentApplicationEmail(applicationId, email);
      if (res.error) toast.error(res.error);
      else toast.success("Student email saved");
    });
  }

  return (
    <form onSubmit={onSubmit} className="flex flex-col gap-3 sm:flex-row sm:items-end">
      <div className="flex-1 space-y-2">
        <Label htmlFor="student-email">Student email (admin only)</Label>
        <Input
          id="student-email"
          type="email"
          value={email}
          onChange={(e) => setEmail(e.target.value)}
          placeholder="student@example.com"
          required
        />
      </div>
      <Button type="submit" disabled={pending}>
        {pending ? "Saving…" : "Save email"}
      </Button>
    </form>
  );
}
