"use client";

import { useTranslations } from "next-intl";
import { useRouter } from "next/navigation";
import { useTransition } from "react";
import { toast } from "sonner";

import { Button } from "@/components/ui/button";
import { acceptInvitation, rejectInvitation } from "@/lib/actions/organization";

export function InvitationActions({ invitationId }: { invitationId: string }) {
  const t = useTranslations("Invitation");
  const router = useRouter();
  const [isPending, startTransition] = useTransition();

  function onAccept() {
    startTransition(async () => {
      try {
        await acceptInvitation({ invitationId });
        router.push("/dashboard");
      } catch {
        toast.error(t("acceptFailed"));
      }
    });
  }

  function onReject() {
    startTransition(async () => {
      try {
        await rejectInvitation({ invitationId });
        router.push("/");
      } catch {
        toast.error(t("rejectFailed"));
      }
    });
  }

  return (
    <div className="flex flex-col gap-3">
      <Button type="button" onClick={onAccept} disabled={isPending}>
        {isPending ? t("accepting") : t("accept")}
      </Button>
      <Button type="button" variant="ghost" onClick={onReject} disabled={isPending}>
        {isPending ? t("rejecting") : t("reject")}
      </Button>
    </div>
  );
}
