const REMOTE_API = "https://api.modstagram.ir";
const DEV_PORT = process.env.PORT ?? "3004";

/** آدرس API — در مرورگر همیشه relative (پروکسی Next) */
export function getApiBaseUrl(): string {
  if (typeof window !== "undefined") {
    return process.env.NEXT_PUBLIC_BASE_URL || "/api/v1";
  }
  if (process.env.NODE_ENV === "development") {
    return (
      process.env.SERVER_API_BASE_URL ||
      `http://127.0.0.1:${DEV_PORT}/api/v1`
    );
  }
  return process.env.NEXT_PUBLIC_BASE_URL || `${REMOTE_API}/api/v1`;
}

/** آدرس storage — در مرورگر relative */
export function getStorageBaseUrl(): string {
  if (typeof window !== "undefined") {
    return process.env.NEXT_PUBLIC_IMAGE_BASE_URL || "/storage";
  }
  if (process.env.NODE_ENV === "development") {
    return (
      process.env.SERVER_STORAGE_BASE_URL ||
      `http://127.0.0.1:${DEV_PORT}/storage`
    );
  }
  return process.env.NEXT_PUBLIC_IMAGE_BASE_URL || `${REMOTE_API}/storage`;
}

export const SOCKET_URL =
  process.env.NEXT_PUBLIC_SOCKET_URL ?? REMOTE_API;

/** @deprecated از getApiBaseUrl() استفاده کنید */
export const BASE_URL = getApiBaseUrl();

/** @deprecated از getStorageBaseUrl() استفاده کنید */
export const IMAGE_BASE_URL = getStorageBaseUrl();

/** نسخه آیکون‌ها — با هر تغییر آیکون این مقدار را افزایش دهید */
export const ICON_VERSION =
  process.env.NEXT_PUBLIC_ICON_VERSION ?? "7";

/** URL آیکون استاتیک با cache-busting */
export function staticIconUrl(path: string): string {
  if (!path) return "";
  const normalized = path.startsWith("/") ? path : `/${path}`;
  const separator = normalized.includes("?") ? "&" : "?";
  return `${normalized}${separator}v=${ICON_VERSION}`;
}

/** ساخت URL کامل فایل storage — مسیرهای DB را یکسان می‌کند */
export function buildStorageUrl(path: string | null | undefined): string {
  if (!path) return "";
  if (path.startsWith("http://") || path.startsWith("https://")) return path;

  let normalized = String(path).replace(/\\/g, "/");
  normalized = normalized.replace("/root/modstagram-back/storage", "");

  if (normalized.startsWith("/storage/")) {
    normalized = normalized.slice("/storage".length);
  } else if (normalized.startsWith("storage/")) {
    normalized = `/${normalized.slice("storage/".length)}`;
  }

  if (!normalized.startsWith("/")) normalized = `/${normalized}`;
  return `${getStorageBaseUrl().replace(/\/$/, "")}${normalized}`;
}
