"use server";

import { ServerAction } from "@/lib/actions";
import { ServerRequest, ServerResponse } from "@/lib/actions";
import unzipFile from "@/services/unzipp";
import uploadFolders from "@/services/uploadFolders";
import { rm } from "fs/promises";
import { v4 } from "uuid";

export default async function massiveUpload(formData: FormData) {
  const { error, con, dict } = await ServerAction();

  if (error) {
    return ServerResponse({
      operation: false,
      data: error,
    });
  }

  const files = formData.get("files") as File;

  const baseDir = `public/tmp/${v4()}`;

  try {
    const errores: string[] = [];

    const unzipResponse = await ServerRequest(unzipFile(files, baseDir));

    if (!unzipResponse.operation) {
      return ServerResponse(unzipResponse);
    }

    await uploadFolders(baseDir, errores);

    return ServerResponse({
      operation: true,
      message: `No alert has been setting up`,
      data: {
        errores,
      },
    });
  } catch (error) {
    return ServerResponse({
      operation: false,
      message: dict.alerts.general.unexpected_error,
      data: error,
    });
  } finally {
    con.release();
    await rm(baseDir, { recursive: true, force: true });
  }
}
