// src/lib/onboarding/activation/actions.ts
"use server";

// La LECTURE n'est plus une action : elle vit dans ./snapshot.ts, appelée par
// les RSC (layout (app), page Settings → Compte). Ne restent ici que les deux
// écritures — chaque export "use server" est un endpoint public, on n'en expose
// pas un de plus que nécessaire.
import { revalidatePath } from "next/cache";
import { getActiveOrgId, getActiveUserId } from "@/lib/active-org";
import { isImpersonating } from "@/lib/auth/impersonation-guard";
import { dismissActivation, restoreActivation } from "./dismiss";

// `activation_dismissals` est clé sur (userId, orgId) : en impersonation
// `userId` EST la cible, l'opérateur masquerait (ou ferait réapparaître) la
// carte d'activation chez elle de façon durable. On saute l'écriture.
export async function dismissActivationAction(): Promise<void> {
  if (await isImpersonating()) return;
  const userId = await getActiveUserId();
  const orgId = await getActiveOrgId();
  await dismissActivation(userId, orgId);
}

export async function restoreActivationAction(): Promise<void> {
  if (await isImpersonating()) return;
  const userId = await getActiveUserId();
  const orgId = await getActiveOrgId();
  await restoreActivation(userId, orgId);
  // La checklist vit dans le layout (app) : sans revalidation du layout, elle ne
  // réapparaîtrait dans la barre latérale qu'à la navigation suivante. Le
  // MASQUAGE, lui, n'en a pas besoin — il est appliqué de façon optimiste par
  // ActivationCard, et revalider ferait clignoter la carte avant sa disparition.
  revalidatePath("/", "layout");
}
