import { ServerRequest } from "@/lib/actions";
import deleteSubdomain from "@/services/projects/deleteSubdomain";
import { socket } from "@/socket";
import dayjs from "dayjs";
import { Dispatch, SetStateAction } from "react";
import { toast } from "sonner";

type HandleDeleteProjectProps = {
  name: string;
  dict?: Dictionary;
  setToggling?: Dispatch<SetStateAction<boolean>>;
};
export default async function handleDeleteProject({
  name,
  dict,
  setToggling,
}: HandleDeleteProjectProps) {
  const formData = new FormData();
  formData.append("site", name);

  const promise = new Promise(async (resolve, reject) => {
    const result = await ServerRequest(deleteSubdomain(formData));

    if (!result.operation) {
      if (setToggling) {
        setToggling(false);
      }
      return reject(result);
    }

    const pathname = `/${localStorage.getItem("LOCALE")}/projects`;

    socket.emit("delete-project", { name });

    const res = { ...result, callback: undefined };

    if (window.location.pathname !== pathname) {
      res.callback = "/projects";
    }

    return resolve(res);
  });

  toast.promise(promise, {
    loading: dict.alerts.delete_project.loading,
    description: dayjs().format("MMM DD, YYYY HH:MM:ss"),
    success: ({ message, callback }: any) => {
      if (callback) {
        window.location.replace(callback);
      }
      return message;
    },
    error: ({ message }: any) => message,
  });
}
