import { getHeader } from "h3";
import { useRuntimeConfig, useRequestEvent } from "nuxt/app";

export const useGetGameAlias = () => {
  const config = useRuntimeConfig();
  const baseDomain = (config.public.baseDomain || ".onstove.com") as string;

  // 서버 사이드에서 실행되는 경우
  if (!import.meta.client) {
    try {
      const event = useRequestEvent();

      if (event) {
        // 미들웨어에서 설정한 gameAlias가 있다면 우선 사용
        if (event.context.gameAlias) {
          return event.context.gameAlias;
        }

        const host = getHeader(event, "host") || "";
        const isGameAliasExtractable = host.includes(baseDomain);

        if (isGameAliasExtractable) {
          const subdomain = host.split(".")[0];

          if (subdomain && subdomain !== "www") {
            return subdomain;
          }
        }
      }
    } catch (error) {
      console.log("useGetGameAlias server error: ", error);
    }
  }

  // 클라이언트 사이드에서 실행되는 경우
  if (import.meta.client) {
    try {
      const host = window.location.host;
      const isGameAliasExtractable = host.includes(baseDomain);

      if (isGameAliasExtractable) {
        const subdomain = host.split(".")[0];

        if (subdomain && subdomain !== "www") {
          return subdomain;
        }
      }
    } catch (error) {
      console.log("useGetGameAlias client error: ", error);
    }
  }
  return "";
};
