"use client";

import NextLink from "next/link";
import { usePathname as useNextPathname } from "next/navigation";
import { useLocale } from "../context/LocaleContext";
import {
  isInternalNavigationClick,
  startNavigation,
} from "@/app/lib/navigation-loading";

type LocaleLinkProps = React.ComponentProps<typeof NextLink>;

export function LocaleLink({ href, onClick, ...props }: LocaleLinkProps) {
  const locale = useLocale();
  const hrefStr = typeof href === "string" ? href : href.pathname ?? "/";
  const localeHref =
    hrefStr.startsWith("/api/") || hrefStr.startsWith("/_next")
      ? hrefStr
      : hrefStr.startsWith("/")
        ? `/${locale}/digital${hrefStr === "/" ? "" : hrefStr}`
        : hrefStr;

  return (
    <NextLink
      href={localeHref}
      onClick={(event) => {
        if (isInternalNavigationClick(event.nativeEvent, event.currentTarget)) {
          startNavigation();
        }
        onClick?.(event);
      }}
      {...props}
    />
  );
}

export function usePathname() {
  const path = useNextPathname();
  const match = path?.match(/^\/(zh|en)\/digital(\/.*)?$/);
  return match ? (match[2] ?? "/") : path ?? "/";
}
