import { Button, Typography } from "@carrot-kpi/ui";
import React, { useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
import { Link } from "react-router-dom";
import { CardHorizontal } from "../../components/ui/cards-horizontal";
import { Empty } from "../../components/ui/empty";
import { KPITokenCard } from "../../components/ui/kpi-token-card";
import { useLatestKPITokens } from "../../hooks/useLatestKPITokens";
import {
ChainId,
type FeaturedBlacklistedKPITokens,
type FeaturedBlacklistedKPITokensInChain,
} from "@carrot-kpi/sdk";
import { useChainId, usePublicClient } from "wagmi";
import { usePreferDecentralization } from "@carrot-kpi/react";
const LATEST_TOKEN_AMOUNTS = 5;
const placeholder = new Array(LATEST_TOKEN_AMOUNTS)
.fill(null)
.map((_, index) => );
interface LatestCampaignsSectionProps {
featuredBlacklistedKPITokenAddresses?: FeaturedBlacklistedKPITokens;
}
export const LatestCampaignsSection = ({
featuredBlacklistedKPITokenAddresses,
}: LatestCampaignsSectionProps) => {
const { t } = useTranslation();
const publicClient = usePublicClient();
const preferDecentralization = usePreferDecentralization();
const chainId = useChainId();
const [
featuredBlacklistedKPITokensInChain,
setFeaturedBlacklistedKPITokensInChain,
] = useState(null);
const { isLoading: loading, data: kpiTokens } = useLatestKPITokens({
publicClient,
preferDecentralization,
blacklistedAddresses: featuredBlacklistedKPITokensInChain?.blacklisted,
limit: LATEST_TOKEN_AMOUNTS,
});
useEffect(() => {
if (!featuredBlacklistedKPITokenAddresses || !(chainId in ChainId))
return;
setFeaturedBlacklistedKPITokensInChain(
featuredBlacklistedKPITokenAddresses[chainId as ChainId],
);
}, [chainId, featuredBlacklistedKPITokenAddresses]);
return (
{t("home.latestCampaigns")}
{loading || !kpiTokens ? (
placeholder
) : Object.values(kpiTokens).length > 0 ? (
Object.values(kpiTokens).map((kpiToken) => (
))
) : (
)}
);
};