import { isLoggedInCookie } from "@/utils/createCookie";
import { redirect } from "react-router";
import { adminSignout } from "@/lib/features/auth/action";
import type { Route } from "./+types/logout";

export async function action({ request }: Route.ActionArgs) {
  const res = await adminSignout(request);
  const newHeaders = new Headers();

  if (res.success) {
    const setCookieHeaders = (res.data as Response).headers.getSetCookie();
    if (setCookieHeaders.length > 0) {
      setCookieHeaders?.forEach((cookie) => {
        newHeaders.append("Set-Cookie", cookie);
      });
    }
  }

  const clearIsLoggedIn = await isLoggedInCookie.serialize("", { maxAge: 0 });
  newHeaders.append("Set-Cookie", clearIsLoggedIn);

  return redirect("/auth/signin", {
    headers: newHeaders,
  });
}

export async function loader({ request }: Route.LoaderArgs) {
  const res = await adminSignout(request);
  const newHeaders = new Headers();

  if (res.success) {
    const setCookieHeaders = (res.data as Response).headers.getSetCookie();
    if (setCookieHeaders.length > 0) {
      setCookieHeaders?.forEach((cookie) => {
        newHeaders.append("Set-Cookie", cookie);
      });
    }
  }

  const clearIsLoggedIn = await isLoggedInCookie.serialize("", { maxAge: 0 });
  newHeaders.append("Set-Cookie", clearIsLoggedIn);

  return redirect("/auth/signin", {
    headers: newHeaders,
  });
}

export default function Logout() {
  return null;
}
