import config from "@/app.config";

import { useQuasar } from "quasar";
import { useCounterMixin } from "@/stores/mixin";
import http from "@/plugins/http";

const $q = useQuasar();

const mixin = useCounterMixin();
const { showLoader, hideLoader, messageError } = mixin;

async function generateTxt(id: string, fileName: string) {
  showLoader();
  await http
    .post(`${config.API.log}/report/logsDetail?id=${id}`, "", {
      headers: {
        "Content-Type": "text/plain;charset=utf-8",
      },
      responseType: "blob",
    })
    .then(async (res) => {
      const data = await res.data.text();
      if (data) {
        const formattedData = formatData(data);

        // สร้าง Blob จาก array buffer
        const blob = new Blob([formattedData], {
          type: "text/plain;charset=utf-8",
        });

        // สร้าง URL สำหรับไฟล์ Blob
        const url = URL.createObjectURL(blob);

        // สร้างลิงก์เพื่อดาวน์โหลดไฟล์
        const link = document.createElement("a");
        link.href = url;
        link.download = `${fileName}.txt`; // กำหนดชื่อไฟล์ที่จะดาวน์โหลด
        document.body.appendChild(link);
        link.click();

        // ลบ URL ที่สร้างขึ้นหลังจากใช้งาน
        URL.revokeObjectURL(url);
      }
    })
    .catch((err) => {
      messageError($q, err);
    })
    .finally(() => {
      hideLoader();
    });
}

function formatData(data: any) {
  // ตรวจสอบว่าเป็น JSON และจัดรูปแบบ
  try {
    const jsonData = JSON.parse(data); // แปลงข้อมูลเป็น JSON
    return JSON.stringify(jsonData, null, 2); // จัดให้สวยงาม (2 ช่องว่าง)
  } catch {
    // ถ้าไม่ใช่ JSON ให้คืนค่าข้อมูลดั้งเดิม
    return data;
  }
}

export default generateTxt;
