/* eslint-disable @typescript-eslint/no-unused-vars */
import { getApiBaseUrl } from "@/components/main/BaseUrl";

export async function fetchBillboards(
  page: number,
  limit: number,
  filters: {
    province?: string;
    city?: string;
    category?: string;
    sort?: string;
    search?: string;
  },
  token: string
) {
  const validFilters = Object.entries(filters || {})
    .filter(([_, value]) => value !== undefined && value !== "")
    .reduce((acc, [key, value]) => {
      acc[key] = value;
      return acc;
    }, {} as Record<string, string>);

  const queryParams = new URLSearchParams({
    page: page.toString(),
    limit: limit.toString(),
    ...validFilters,
    timestamp: Date.now().toString(), // اضافه کردن timestamp برای جلوگیری از کش
  }).toString();

  const apiUrl = `${getApiBaseUrl()}/advertising/web?${queryParams}`;

  const controller = new AbortController();
  const timeoutId = setTimeout(() => controller.abort(), 90_000);

  let response: Response;
  try {
    response = await fetch(apiUrl, {
      cache: "no-store",
      signal: controller.signal,
      headers: {
        Authorization: token ? `Bearer ${token}` : "",
      },
    });
  } catch (error) {
    console.error("[fetchBillboards] fetch failed:", apiUrl, error);
    return { advertisings: [], totalItems: 0, totalPages: 0 };
  } finally {
    clearTimeout(timeoutId);
  }

  if (!response.ok) {
    console.error("[fetchBillboards] bad response:", response.status, apiUrl);
    return { advertisings: [], totalItems: 0, totalPages: 0 };
  }

  return response.json();
}
