Newer
Older
taehui / taehui-fe / src / app / [language] / want / query / useGetWant.ts
@Taehui Taehui on 20 Apr 956 bytes 2024-04-20 오후 2:05
import { GetWantAPIComment, GetWantAPIEssay } from "@/type/wwwAPI";
import { wwwAPI } from "@/utilities/wwwAPI";
import { useInfiniteQuery } from "@tanstack/react-query";

export default function useGetWant(
  wantVariety: "essay" | "comment",
  wantInput?: string,
) {
  return useInfiniteQuery({
    enabled: !!wantInput,
    queryKey: ["want", wantVariety, wantInput],
    queryFn: async ({ pageParam }) => {
      const { data } = await wwwAPI.get<
        (GetWantAPIEssay | GetWantAPIComment)[]
      >(`/want/${wantVariety}/${wantInput}?page=${pageParam}`);
      return data;
    },
    initialPageParam: 1,
    initialData: {
      pages: [],
      pageParams: [1],
    },
    getNextPageParam: (lastPage, allPages, lastPageParam) => {
      return !lastPage || lastPage.length > 0 ? lastPageParam + 1 : undefined;
    },
    select: (data) => ({
      pages: data.pages.flatMap((page) => page),
      pageParams: data.pageParams,
    }),
  });
}