import { defineStore } from "pinia";
import { Loading, QSpinnerCube } from "quasar";

export const useCounterMixin = defineStore("mixin", () => {
  function date2Thai(srcDate: Date, isFullMonth = false, isTime = false) {
    if (srcDate == null) {
      return null;
      `
        `;
    }
    const date = new Date(srcDate);
    const isValidDate = Boolean(+date);
    if (!isValidDate) return srcDate.toString();
    if (isValidDate && date.getFullYear() < 1000) return srcDate.toString();
    const fullMonthThai = [
      "มกราคม",
      "กุมภาพันธ์",
      "มีนาคม",
      "เมษายน",
      "พฤษภาคม",
      "มิถุนายน",
      "กรกฎาคม",
      "สิงหาคม",
      "กันยายน",
      "ตุลาคม",
      "พฤศจิกายน",
      "ธันวาคม",
    ];
    const abbrMonthThai = [
      "ม.ค.",
      "ก.พ.",
      "มี.ค.",
      "เม.ย.",
      "พ.ค.",
      "มิ.ย.",
      "ก.ค.",
      "ส.ค.",
      "ก.ย.",
      "ต.ค.",
      "พ.ย.",
      "ธ.ค.",
    ];
    let dstYear = 0;
    if (date.getFullYear() > 2500) {
      dstYear = date.getFullYear();
    } else {
      dstYear = date.getFullYear() + 543;
    }
    let dstMonth = "";
    if (isFullMonth) {
      dstMonth = fullMonthThai[date.getMonth()];
    } else {
      dstMonth = abbrMonthThai[date.getMonth()];
    }
    let dstTime = "";
    if (isTime) {
      const H = date.getHours().toString().padStart(2, "0");
      const M = date.getMinutes().toString().padStart(2, "0");
      // const S = date.getSeconds().toString().padStart(2, "0")
      // dstTime = " " + H + ":" + M + ":" + S + " น."
      dstTime = " " + H + ":" + M + " น.";
    }
    return (
      date.getDate().toString().padStart(2, "0") +
      " " +
      dstMonth +
      " " +
      dstYear +
      dstTime
    );
  }

  const showLoader = () => {
    Loading.show({
      spinner: QSpinnerCube,
      spinnerSize: 140,
      spinnerColor: "primary",
      backgroundColor: "white",
    });
  };

  const hideLoader = () => {
    Loading.hide();
  };

  return {
    date2Thai,
    showLoader,
    hideLoader,
  };
});
