Newer
Older
taehui / taehui-fe / src / want / useGetWant.ts
@Taehui Taehui on 13 Mar 915 bytes v1.0.0
import { useInfiniteQuery } from "@tanstack/react-query";

import { wwwAXIOS } from "src/Www";
import { GetWantAPIComment, GetWantAPIEssay } from "src/wwwAPI";

export default function useGetWant(
  wantVariety: "essay" | "comment",
  wantInput: string,
) {
  return useInfiniteQuery({
    queryKey: ["want", wantVariety, wantInput],
    queryFn: async ({ pageParam }) => {
      const { data } = await wwwAXIOS.get<
        (GetWantAPIEssay | GetWantAPIComment)[]
      >(`/want/${wantVariety}/${wantInput}/${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,
    }),
  });
}