A decentralized music tracking and discovery platform built on AT Protocol 馃幍
at feat/discord-webhook 47 lines 1.4 kB view raw
1import { useInfiniteQuery, useQuery } from "@tanstack/react-query"; 2import { 3 getProfileByDid, 4 getProfileStatsByDid, 5 getRecentTracksByDid, 6} from "../api/profile"; 7 8export const useProfileByDidQuery = (did: string) => 9 useQuery({ 10 queryKey: ["profile", did], 11 queryFn: () => getProfileByDid(did), 12 }); 13 14export const useProfileStatsByDidQuery = (did: string) => 15 useQuery({ 16 queryKey: ["profile", "stats", did], 17 queryFn: () => getProfileStatsByDid(did), 18 enabled: !!did, 19 refetchInterval: 5000, 20 refetchOnWindowFocus: true, 21 }); 22 23export const useRecentTracksByDidQuery = (did: string, offset = 0, size = 10) => 24 useQuery({ 25 queryKey: ["profile", "recent-tracks", did, offset, size], 26 queryFn: () => getRecentTracksByDid(did, offset, size), 27 enabled: !!did, 28 refetchInterval: 6000, 29 refetchOnWindowFocus: true, 30 }); 31 32export const useRecentTracksByDidInfiniteQuery = (did: string, size = 20) => 33 useInfiniteQuery({ 34 queryKey: ["profile", "recent-tracks", did], 35 queryFn: async ({ pageParam = 0 }) => { 36 const data = await getRecentTracksByDid(did, pageParam * size, size); 37 return { 38 tracks: data, 39 nextOffset: pageParam + 1, 40 }; 41 }, 42 getNextPageParam: (lastPage) => { 43 return lastPage.tracks.length < size ? undefined : lastPage.nextOffset; 44 }, 45 initialPageParam: 0, 46 refetchOnMount: false, 47 });