// src/lib/connectors/actions.ts — connecteur Mangools (BYOK gratuit) : status +
// connect/disconnect pour Settings→Intégrations. "use server" : ces wrappers
// sont appelés directement par l'UI et n'exposent DÉLIBÉRÉMENT aucun paramètre
// `deps` — les arguments d'une Server Action sont contrôlés par le client
// (surface réseau), donc injecter `canManage`/`ping`/`orgId` depuis l'appelant
// contournerait la gate owner/admin ou permettrait de stocker un token jamais
// validé (finding de sécurité Critical). La DI (nécessaire pour les tests) vit
// exclusivement dans core.ts, un module `server-only` non exposé au réseau.
"use server";
import { canManageOrgConnectors } from "./access";
import { connectMangools, disconnectMangools, getMangoolsStatus } from "./core";
import type { ConnectorStatus } from "./types";

export type {
  ConnectMangoolsResult,
  DisconnectMangoolsResult,
} from "./core";

/** Statut consommé par la carte : l'état du connecteur + `canManage` (owner/
 *  admin) pour décider d'afficher le formulaire. Le token n'est jamais exposé. */
export type MangoolsIntegrationStatus = ConnectorStatus & {
  canManage: boolean;
};

export async function getMangoolsStatusAction(): Promise<MangoolsIntegrationStatus> {
  const [status, canManage] = await Promise.all([
    getMangoolsStatus(),
    canManageOrgConnectors(),
  ]);
  return { ...status, canManage };
}

export async function connectMangoolsAction(token: string) {
  return connectMangools(token);
}

export async function disconnectMangoolsAction() {
  return disconnectMangools();
}
