diff options
| author | Armand Philippot <git@armandphilippot.com> | 2023-12-01 19:34:58 +0100 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2023-12-04 19:00:04 +0100 |
| commit | 53b63ac27c2275262db9a04be02210a3287aa71d (patch) | |
| tree | 814968e10cad25e1b34ab251de42ac5ecb82b346 /src/utils/hooks/use-posts-list/use-posts-list.ts | |
| parent | 11e3ee75fcab0ab54b2bc1713a402c5cc3070c2d (diff) | |
refactor(pages): refine Blog pages
* replace usePostsList with useArticlesList to keep names coherent
* remove useIsMounted hook
* rewrite useRedirection hook
* add redirect in getStaticProps to avoid unecessary fetching
* move Pagination component in a noscript tag
* use hooks to refresh thematics and topics lists
* complete Cypress tests
Diffstat (limited to 'src/utils/hooks/use-posts-list/use-posts-list.ts')
| -rw-r--r-- | src/utils/hooks/use-posts-list/use-posts-list.ts | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/src/utils/hooks/use-posts-list/use-posts-list.ts b/src/utils/hooks/use-posts-list/use-posts-list.ts deleted file mode 100644 index bb77f31..0000000 --- a/src/utils/hooks/use-posts-list/use-posts-list.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { useCallback, useState } from 'react'; -import type { - ArticlePreview, - GraphQLConnection, - GraphQLEdge, - Maybe, - WPPostPreview, -} from '../../../types'; -import { - type UsePaginationConfig, - usePagination, - type UsePaginationReturn, -} from '../use-pagination'; -import { convertPostPreviewToArticlePreview } from 'src/services/graphql'; - -export type usePostsListReturn = Omit< - UsePaginationReturn<WPPostPreview>, - 'data' -> & { - /** - * The articles list. - */ - articles: Maybe<GraphQLConnection<ArticlePreview>[]>; - /** - * The index of the first new result when loading more posts. - */ - firstNewResultIndex: Maybe<number>; -}; - -export const usePostsList = ( - config: UsePaginationConfig<WPPostPreview> -): usePostsListReturn => { - const { - data, - error, - hasNextPage, - isEmpty, - isError, - isLoading, - isLoadingMore, - isRefreshing, - isValidating, - loadMore, - size, - } = usePagination(config); - const [firstNewResultIndex, setFirstNewResultIndex] = - useState<Maybe<number>>(undefined); - - const handleLoadMore = useCallback(async () => { - setFirstNewResultIndex(size * config.perPage + 1); - - await loadMore(); - }, [config.perPage, loadMore, size]); - - const articles: Maybe<GraphQLConnection<ArticlePreview>[]> = data?.map( - (page): GraphQLConnection<ArticlePreview> => { - return { - edges: page.edges.map((edge): GraphQLEdge<ArticlePreview> => { - return { - cursor: edge.cursor, - node: convertPostPreviewToArticlePreview(edge.node), - }; - }), - pageInfo: page.pageInfo, - }; - } - ); - - return { - articles, - error, - firstNewResultIndex, - hasNextPage, - isEmpty, - isError, - isLoading, - isLoadingMore, - isRefreshing, - isValidating, - loadMore: handleLoadMore, - size, - }; -}; |
