import { NextRequest, NextResponse } from "next/server";
import createMiddleware from "next-intl/middleware";
import { localePrefix } from "@/config/locales";
import locales from "@/config/locales";

const userOnlyRoutes = ["/cart", "/profile"];

const SESSION_COOKIE = "session";

export default function middleware(request: NextRequest) {
  const hasLangCookie = request.cookies.get("NEXT_LOCALE")?.value;

  if (!hasLangCookie) {
    const response = NextResponse.redirect(request.nextUrl);
    response.cookies.set("NEXT_LOCALE", "ar", { path: "/" });
    return response;
  }

  const intlMiddleware = createMiddleware({
    locales,
    defaultLocale: "ar",
    localePrefix,
  });

  const response = intlMiddleware(request);

  const { pathname } = request.nextUrl;
  const isUserRoute = userOnlyRoutes.some((route) =>
    pathname.startsWith(route)
  );

  if (isUserRoute) {
    const sessionCookie = request.cookies.get("session")?.value;

    if (!sessionCookie) {
      const redirectUrl = new URL("/auth/require-login", request.url);
      /*       redirectUrl.searchParams.set("next", pathname);
       */ return NextResponse.redirect(redirectUrl);
    }
  }

  return response;
}

export const config = {
  matcher: ["/((?!_next|_vercel|.*\\..*).*)"],
};
