import { PublicKey } from "@solana/web3.js"; import { useMemo } from "react"; import type { SWRResponse } from "swr"; import useSWR from "swr"; import { REWARDERS_LIST_URL } from "../constants"; const fetcher = (url: string) => fetch(url).then((res) => res.json()); /** * Information about a Rewarder. */ export interface LegacyRewarderInfo extends Omit { rewarder: PublicKey; tokens: PublicKey[]; } export interface RewarderInfoRaw { rewarder: string; tokens: string[]; info?: { name: string; color: string; description: string; website: string; }; } /** * @deprecated Use useGithubRewarderRegistry instead. * Fetches all rewarders. * @returns */ export const useAllRewarders = (): Omit< SWRResponse, "data" > & { data?: LegacyRewarderInfo[]; } => { const { data: rawData, ...result } = useSWR( REWARDERS_LIST_URL, fetcher ); const data = useMemo(() => { if (!rawData) { return rawData; } return rawData.map(({ rewarder, tokens, ...rest }) => ({ ...rest, rewarder: new PublicKey(rewarder), tokens: tokens.map((token) => new PublicKey(token)), })); }, [rawData]); return { ...result, data, }; };