import { getTranslations, setRequestLocale } from "next-intl/server";
import { Link } from "@/i18n/navigation";
import { CopyButton } from "@/components/copy-button";
import { ShopSetupForm } from "@/components/shop-setup-form";
import { getShopByOwner, listOrders, listProducts, productPublicUrl, shopPublicUrl } from "@/lib/shop";
import { requireUser } from "@/lib/session";

export default async function ShopDashboardPage({
  params,
}: {
  params: Promise<{ locale: string }>;
}) {
  const { locale } = await params;
  setRequestLocale(locale);
  const session = await requireUser();
  const t = await getTranslations("shop");
  const shop = await getShopByOwner(session.user.id);
  const [products, orders] = shop
    ? await Promise.all([listProducts(shop.id), listOrders(session.user.id)])
    : [[], []];
  const url = shop ? await shopPublicUrl(shop.slug) : "";
  const latestLink =
    shop && products[0] ? await productPublicUrl(shop.slug, products[0].id) : "";

  return (
    <div className="space-y-6">
      <div>
        <h1 className="page-title">{t("title")}</h1>
        <p className="mt-2 max-w-3xl text-muted">{t("intro")}</p>
      </div>
      {shop ? (
        <section className="card flex flex-col gap-3 p-5 sm:flex-row sm:items-center sm:justify-between">
          <div>
            <p className="text-xs font-semibold uppercase tracking-wide text-gold">{t("yourLink")}</p>
            <p className="mt-1 break-all font-medium" dir="ltr">
              {url}
            </p>
          </div>
          <CopyButton value={url} />
        </section>
      ) : null}
      <ShopSetupForm shop={shop} />
      {shop ? (
        <div className="flex flex-wrap gap-3">
          <Link href="/dashboard/shop/products" className="btn-primary">
            {t("manageProducts")}
          </Link>
          <Link href="/dashboard/shop/orders" className="btn-secondary">
            {t("orders")} ({orders.length})
          </Link>
          <a href={url} className="btn-ghost" target="_blank" rel="noreferrer">
            {t("openStore")}
          </a>
        </div>
      ) : null}
      {shop && products[0] ? (
        <section className="card p-5">
          <h2 className="font-semibold">{t("latestProduct")}</h2>
          <p className="mt-2">{products[0].title}</p>
          <div className="mt-3 flex items-center gap-2">
            <span className="truncate text-sm" dir="ltr">
              {latestLink}
            </span>
            <CopyButton value={latestLink} />
          </div>
        </section>
      ) : null}
    </div>
  );
}
