import { useMemo } from "react";
import { useQuery } from "@tanstack/react-query";
import { getProfile } from "@/lib/services/profile.service";

export const useLinksData = () => {
  const profileQuery = useQuery({
    queryKey: ["profile"],
    queryFn: getProfile,
  });

  const links = profileQuery.data?.data?.links ?? [];

  const portfolioLinks = useMemo(() => {
    return links
      .filter((link: any) => link.is_portfolio)
      .map((link: any) => ({
        ...link,
        id: link.uuid,
        label: link.platform,
        url: link.url,
      }));
  }, [links]);

  const socialMediaLinks = useMemo(() => {
    return links
      .filter((link: any) => !link.is_portfolio)
      .map((link: any) => ({
        ...link,
        id: link.uuid,
        label: link.platform,
        url: link.url,

        // Helpful for duplicate filtering
        socialMediaPlatformId: link.social_media_platform?.uuid,
        socialMediaPlatformName: link.social_media_platform?.name,
      }));
  }, [links]);

  // UUIDs of platforms already added by the user
  const usedSocialMediaPlatformIds = useMemo(() => {
    return new Set(
      socialMediaLinks
        .map((link: any) => link.socialMediaPlatformId)
        .filter(Boolean)
    );
  }, [socialMediaLinks]);

  return {
    portfolioLinks,
    socialMediaLinks,
    usedSocialMediaPlatformIds,
    isLoading: profileQuery.isLoading,
    refetch: profileQuery.refetch,
  };
};