summaryrefslogtreecommitdiffstats
path: root/src/utils
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2022-07-23 15:31:45 +0200
committerArmand Philippot <git@armandphilippot.com>2022-07-23 15:31:45 +0200
commitbaac7d6eeaf522ff5faa28906cb1200e60a19c07 (patch)
tree1fd9f74eb0cdbabaae24a88406d82dfb9b589ba5 /src/utils
parentde9a9eac060974a7878f2bb5577f2b135596a555 (diff)
fix(article): prevent TypeError on build
By switching to custom hooks for revalidating articles and comments, everything was working on development mode but articles failed to build for production.
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/hooks/use-article.tsx16
-rw-r--r--src/utils/hooks/use-comments.tsx17
2 files changed, 25 insertions, 8 deletions
diff --git a/src/utils/hooks/use-article.tsx b/src/utils/hooks/use-article.tsx
index 3a173dd..6281a54 100644
--- a/src/utils/hooks/use-article.tsx
+++ b/src/utils/hooks/use-article.tsx
@@ -5,16 +5,26 @@ import { Article } from '@ts/types/app';
import { RawArticle } from '@ts/types/raw-data';
import useSWR from 'swr';
+export type UseArticleConfig = {
+ fallback?: Article;
+ slug?: string;
+};
+
/**
* Retrieve an article by slug.
*
* @param {string} slug - The article slug.
* @param {Article} fallback - A fallback article.
- * @returns {Article} The matching article.
+ * @returns {Article|undefined} The matching article if it exists.
*/
-const useArticle = (slug: string, fallback: Article): Article => {
+const useArticle = ({
+ slug,
+ fallback,
+}: UseArticleConfig): Article | undefined => {
const { data } = useSWR(
- { api: getAPIUrl(), query: articleBySlugQuery, variables: { slug } },
+ slug
+ ? { api: getAPIUrl(), query: articleBySlugQuery, variables: { slug } }
+ : null,
fetchAPI<RawArticle, typeof articleBySlugQuery>
);
diff --git a/src/utils/hooks/use-comments.tsx b/src/utils/hooks/use-comments.tsx
index f430f19..9076888 100644
--- a/src/utils/hooks/use-comments.tsx
+++ b/src/utils/hooks/use-comments.tsx
@@ -8,18 +8,25 @@ import { Comment } from '@ts/types/app';
import { RawComment } from '@ts/types/raw-data';
import useSWR from 'swr';
+export type UseCommentsConfig = {
+ contentId?: string | number;
+ fallback?: Comment[];
+};
+
/**
* Retrieve the comments of a page/article.
*
* @param {string | number} contentId - A page/article id.
* @returns {Comment[]|undefined}
*/
-const useComments = (
- contentId: string | number,
- fallback?: Comment[]
-): Comment[] | undefined => {
+const useComments = ({
+ contentId,
+ fallback,
+}: UseCommentsConfig): Comment[] | undefined => {
const { data } = useSWR(
- { api: getAPIUrl(), query: commentsQuery, variables: { contentId } },
+ contentId
+ ? { api: getAPIUrl(), query: commentsQuery, variables: { contentId } }
+ : null,
fetchAPI<RawComment, typeof commentsQuery>
);