"use client";

/**
 * #2555: session-logout — POST /api/v1/auth/logout (revoke DB session +
 * очистка httponly cookie tradein_session), затем чистим локальный
 * TanStack Query /me-кэш и уходим на /login.
 *
 * NB: это НЕ замена legacy `@/lib/logout.ts` (Caddy basic_auth cache-bust +
 * hard reload) — тот остаётся для страниц/пользователей на старом
 * trusted-header механизме (см. `app.core.rbac` dual-mode resolver).
 * useLogout — для юзеров, залогиненных через новую /login форму (#2552).
 *
 * Backend logout — best-effort по духу (revoke конкретной сессии), поэтому
 * локальный logout (кэш + редирект) выполняется в `onSettled`, а не только
 * `onSuccess`: сетевой сбой / уже-протухшая сессия не должны запирать юзера
 * на странице без возможности разлогиниться.
 */

import { useMutation, useQueryClient } from "@tanstack/react-query";
import { useRouter } from "next/navigation";

import { apiFetch } from "@/lib/api";
import { ME_QUERY_KEY } from "@/lib/useMe";

async function logoutRequest(): Promise<void> {
  await apiFetch<{ ok: boolean }>("/api/v1/auth/logout", { method: "POST" });
}

export function useLogout() {
  const queryClient = useQueryClient();
  const router = useRouter();

  return useMutation({
    mutationFn: logoutRequest,
    onSettled: () => {
      queryClient.invalidateQueries({ queryKey: ME_QUERY_KEY });
      router.push("/login");
    },
  });
}
