// src/components/settings/activation-restore.tsx — carte « réafficher la
// checklist » dans Settings → Compte. Ne rend rien tant que la checklist
// n'est pas masquée (pas de carte vide). L'état initial vient du rendu serveur
// (getActivationSnapshot) : plus de lecture au montage.
"use client";

import { useTranslations } from "next-intl";
import { useState, useTransition } from "react";
import { Button } from "@/components/ui/button";
import {
  Card,
  CardContent,
  CardDescription,
  CardHeader,
  CardTitle,
} from "@/components/ui/card";
import { restoreActivationAction } from "@/lib/onboarding/activation/actions";

export function ActivationRestore({
  initialDismissed,
}: {
  initialDismissed: boolean;
}) {
  const t = useTranslations("Activation");
  // État local pour faire disparaître la carte dès le clic, sans attendre un
  // nouveau rendu serveur.
  const [dismissed, setDismissed] = useState(initialDismissed);
  const [pending, startTransition] = useTransition();

  if (!dismissed) return null;

  return (
    <Card>
      <CardHeader>
        <CardTitle>{t("restoreTitle")}</CardTitle>
        <CardDescription>{t("restoreDescription")}</CardDescription>
      </CardHeader>
      <CardContent>
        <Button
          variant="outline"
          size="sm"
          disabled={pending}
          onClick={() =>
            startTransition(async () => {
              try {
                await restoreActivationAction();
                setDismissed(false);
              } catch (error) {
                // Fail-silent : on log et la carte reste affichée (dismissed
                // inchangé) — pas de global-error pour un bouton de confort.
                console.error("[activation]", error);
              }
            })
          }
        >
          {t("restore")}
        </Button>
      </CardContent>
    </Card>
  );
}
