"use client";

import { useQuery } from "@tanstack/react-query";
import { optionalAddons } from "@/data/onboarding";
import { addonsService } from "@/services/addonsService";
import type { PlanCatalogId } from "@/lib/planCatalogs";
import type { Addon } from "@/types/plan";

/** Fallback quando a API não está disponível (dev offline). */
function staticAddonsFallback(): Addon[] {
  return optionalAddons.map((o, i) => ({
    id: -(i + 1),
    name: o.name,
    slug: o.moduleId ?? o.id,
    description: o.description,
    price: o.oneTimePrice,
    recurring: false,
    active: true,
    featured: false,
    sortOrder: i + 1,
  }));
}

export function usePublicAddons(catalog?: PlanCatalogId) {
  return useQuery({
    queryKey: ["addons", "public", catalog ?? "all"],
    queryFn: async () => {
      try {
        return await addonsService.listPublic(catalog);
      } catch {
        return null;
      }
    },
    staleTime: 60_000,
    select: (data) => {
      const list = data?.filter((a) => a.active) ?? [];
      if (list.length) return list.sort((a, b) => a.sortOrder - b.sortOrder);
      return staticAddonsFallback();
    },
  });
}
