import { queryClient } from "pages/_app";

// export const getToken = () => {
//     const tokenString : string|null = localStorage.getItem('token') ?? null;
//     const userToken = JSON.parse(tokenString || '{}');
//     return userToken
// };

export const ISSERVER = typeof window === "undefined";

export const getToken = () => {
  const tokenString: string | null = !ISSERVER
    ? localStorage.getItem("token") ?? null
    : null;
  const userToken = JSON.parse(tokenString || "{}");
  return userToken;
};

export const getTokenPro = () => {
  return new Promise((resolve, reject) => {
    let token = getToken();
    if (token) {
      resolve(token);
    } else {
      reject("Not token found");
    }
  });
};

export const isTokenValid = () => {
  const token = getToken();
  return token !== null && token !== undefined;
};

export const invalidateQueriesFunc = (queryString: string) => {
  queryClient.invalidateQueries(queryString);
};

//empty obj
//if not empty
export function isEmpty(obj: any) {
  for (var prop in obj) {
    if (obj.hasOwnProperty(prop)) return false;
  }
  return true;
}

export const getRouterTitle = (router: any) => {
  console.log("splited data", router.pathname.split("/"));
  let split = router.pathname.split("/");
  let lastItem = split[router.pathname.split("/").length - 1];

  if (split.length > 1) {
    return lastItem.replace("-", " ");
  }

  return router.pathname.slice(1).replace("-", " ");
};

export const isOnPath = (router: any, url: string) => {
  let split = router.pathname.split("/");
  let lastItem = split[router.pathname.split("/").length - 1];

  return lastItem === url;
};

export const sortHighestFunc = (a, b) => {
  return b.priceAsInt - a.priceAsInt;
};

export const sortLowestFunc = (a, b) => {
  return a.priceAsInt - b.priceAsInt;
};
export const sortByNewest = (a: any, b: any) =>
  new Date(b.created_at).getTime() - new Date(a.created_at).getTime();

export const formatAdField = (adField: string) => {
  let res = "";
  switch (adField) {
    case "agriculture":
      res = "agriculture";
      break;

    default:
      break;
  }

  return res;
};

export const isProduction = () => {
  return process.env.NODE_ENV == "production";
};

export const baseUrl = () => {
  return process.env.NODE_ENV === "development"
    ? "http://127.0.0.1:8000/api/"
    : "https://api.ashantiweb.com/api/";
};

export const magicTempUrl = () => {
  return baseUrl() + "v1/magic-temp";
};

export const randomNumb = () => {
  return "" + Math.floor(Math.random() * (100 - 1 + 1)) + 1;
};

export const base_new_url = () => {
  return process.env.NODE_ENV === "development"
    ? "http://127.0.0.1:8000"
    : "https://api.ashantiweb.com";
};

export const local_url = (url) => {
  return process.env.NODE_ENV === "development"
    ? "http://localhost:3002/" + url
    : "https://ashantiweb.com/" + url;
};

export const containsHTMLTags = (str) => {
  var htmlTagPattern = /<[a-z][\s\S]*>/i; // Regular expression to match HTML tags

  return htmlTagPattern.test(str);
};

export const capitalizeWord = (str: string) => {
  let res = str.split("");
  let u = res[0].toUpperCase();
  res[0] = u;
  return res.join("");
};

export const formatSentence = (str: string) => {
  let res = str.split(" ");
  res = res.map((item) => item.toLocaleLowerCase());

  let cw = capitalizeWord(res[0]);
  res[0] = cw; //cw;
  return res.join(" ");
};

export const formatSentenceFlex = (str: string, spliter: string) => {
  let res = str.split(spliter);
  res = res.map((item) => item.toLocaleLowerCase());
  let cw = capitalizeWord(res[0]);
  res[0] = cw; //cw;
  return res.join(" ");
};





