page-timeline.tsx 879 B

123456789101112131415161718192021222324252627
  1. import type { IPageHasId } from '@growi/core';
  2. import useSWRInfinite, { SWRInfiniteResponse } from 'swr/infinite';
  3. import { apiv3Get } from '~/client/util/apiv3-client';
  4. type PageTimelineResult = {
  5. pages: IPageHasId[],
  6. totalCount: number,
  7. offset: number,
  8. }
  9. export const useSWRINFxPageTimeline = (path: string | undefined, limit: number) : SWRInfiniteResponse<PageTimelineResult, Error> => {
  10. return useSWRInfinite(
  11. (pageIndex, previousPageData) => {
  12. if (previousPageData != null && previousPageData.pages.length === 0) return null;
  13. if (path === undefined) return null;
  14. return ['/pages/list', path, pageIndex + 1, limit];
  15. },
  16. ([endpoint, path, page, limit]) => apiv3Get<PageTimelineResult>(endpoint, { path, page, limit }).then(response => response.data),
  17. {
  18. revalidateFirstPage: false,
  19. revalidateAll: false,
  20. },
  21. );
  22. };