import type { Metadata } from "next";
import { SITE_NAME, TAGLINE } from "@/lib/constants";

const fallbackSiteUrl = "https://bashistaauto.com";

export const siteUrl = (process.env.NEXT_PUBLIC_SITE_URL ?? fallbackSiteUrl).replace(
  /\/$/,
  "",
);

export function absoluteUrl(path: string) {
  if (path.startsWith("http")) {
    return path;
  }

  return `${siteUrl}${path.startsWith("/") ? path : `/${path}`}`;
}

type PageMetadataOptions = {
  title: string;
  description: string;
  path: string;
};

export function createPageMetadata({
  title,
  description,
  path,
}: PageMetadataOptions): Metadata {
  const ogTitle = title === SITE_NAME ? `${SITE_NAME} | ${TAGLINE}` : `${title} | ${SITE_NAME}`;

  return {
    title,
    description,
    alternates: {
      canonical: absoluteUrl(path),
    },
    openGraph: {
      title: ogTitle,
      description,
      url: absoluteUrl(path),
      siteName: SITE_NAME,
      type: "website",
    },
  };
}
