From f4c7ab4e306d2f04324853e67032d370abd65d0c Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Fri, 20 May 2022 15:37:08 +0200 Subject: chore: handle blog pagination when JS is disabled --- src/services/graphql/articles.ts | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'src/services/graphql/articles.ts') diff --git a/src/services/graphql/articles.ts b/src/services/graphql/articles.ts index 41052c4..f130872 100644 --- a/src/services/graphql/articles.ts +++ b/src/services/graphql/articles.ts @@ -7,10 +7,18 @@ import { import { getAuthorFromRawData } from '@utils/helpers/author'; import { getImageFromRawData } from '@utils/helpers/images'; import { getPageLinkFromRawData } from '@utils/helpers/pages'; -import { EdgesResponse, EdgesVars, fetchAPI, getAPIUrl, PageInfo } from './api'; +import { + EdgesResponse, + EdgesVars, + EndCursor, + fetchAPI, + getAPIUrl, + PageInfo, +} from './api'; import { articleBySlugQuery, articlesCardQuery, + articlesEndCursor, articlesQuery, articlesSlugQuery, totalArticlesQuery, @@ -173,3 +181,21 @@ export const getAllArticlesSlugs = async (): Promise => { return response.posts.edges.map((edge) => edge.node.slug); }; + +/** + * Retrieve the last cursor. + * + * @param {EdgesVars} props - An object of GraphQL variables. + * @returns {Promise} - The end cursor. + */ +export const getArticlesEndCursor = async ( + props: EdgesVars +): Promise => { + const response = await fetchAPI({ + api: getAPIUrl(), + query: articlesEndCursor, + variables: { ...props }, + }); + + return response.posts.pageInfo.endCursor; +}; -- cgit v1.2.3