From 7e16f500cb7bc0cfd8bafbf6bb1555704f771231 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Fri, 29 Apr 2022 12:13:34 +0200 Subject: chore: remove old pages, components, helpers and types Since I'm using new components, I will also rewrite the GraphQL queries so it is easier to start from scratch. --- src/utils/hooks/useGithubApi.tsx | 23 -------- src/utils/hooks/useHeadingsTree.tsx | 104 ------------------------------------ 2 files changed, 127 deletions(-) delete mode 100644 src/utils/hooks/useGithubApi.tsx delete mode 100644 src/utils/hooks/useHeadingsTree.tsx (limited to 'src/utils/hooks') diff --git a/src/utils/hooks/useGithubApi.tsx b/src/utils/hooks/useGithubApi.tsx deleted file mode 100644 index 4b0b3b2..0000000 --- a/src/utils/hooks/useGithubApi.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { RepoData } from '@ts/types/repos'; -import useSWR, { Fetcher } from 'swr'; - -const fetcher: Fetcher = (...args) => - fetch(...args).then((res) => res.json()); - -/** - * Retrieve data from Github API. - * @param repo The repo name. Format: "User/project-slug". - * @returns {object} The data and two booleans to determine if is loading/error. - */ -const useGithubApi = (repo: string) => { - const apiUrl = repo ? `https://api.github.com/repos/${repo}` : null; - const { data, error } = useSWR(apiUrl, fetcher); - - return { - data, - isLoading: !error && !data, - isError: error, - }; -}; - -export default useGithubApi; diff --git a/src/utils/hooks/useHeadingsTree.tsx b/src/utils/hooks/useHeadingsTree.tsx deleted file mode 100644 index f2be406..0000000 --- a/src/utils/hooks/useHeadingsTree.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import { Heading } from '@ts/types/app'; -import { slugify } from '@utils/helpers/slugify'; -import { useRouter } from 'next/router'; -import { useCallback, useEffect, useMemo, useState } from 'react'; - -const useHeadingsTree = (wrapper: string) => { - const router = useRouter(); - const depths = useMemo(() => ['h2', 'h3', 'h4', 'h5', 'h6'], []); - const [allHeadings, setAllHeadings] = - useState>(); - - useEffect(() => { - const query = depths - .map((depth) => `${wrapper} > *:not(aside, #comments) ${depth}`) - .join(', '); - const result: NodeListOf = - document.querySelectorAll(query); - setAllHeadings(result); - }, [depths, wrapper, router.asPath]); - - const [headingsTree, setHeadingsTree] = useState([]); - - const getElementDepth = useCallback( - (el: HTMLHeadingElement) => { - return depths.findIndex((depth) => depth === el.localName); - }, - [depths] - ); - - const formatHeadings = useCallback( - (headings: NodeListOf): Heading[] => { - const formattedHeadings: Heading[] = []; - - Array.from(headings).forEach((heading) => { - const title: string = heading.textContent!; - const id = slugify(title); - const depth = getElementDepth(heading); - const children: Heading[] = []; - - heading.id = id; - - formattedHeadings.push({ - depth, - id, - children, - title, - }); - }); - - return formattedHeadings; - }, - [getElementDepth] - ); - - const buildSubTree = useCallback( - (parent: Heading, currentHeading: Heading): void => { - if (parent.depth === currentHeading.depth - 1) { - parent.children.push(currentHeading); - } else { - const lastItem = parent.children[parent.children.length - 1]; - buildSubTree(lastItem, currentHeading); - } - }, - [] - ); - - const buildTree = useCallback( - (headings: Heading[]): Heading[] => { - const tree: Heading[] = []; - - headings.forEach((heading) => { - if (heading.depth === 0) { - tree.push(heading); - } else { - const lastItem = tree[tree.length - 1]; - buildSubTree(lastItem, heading); - } - }); - - return tree; - }, - [buildSubTree] - ); - - const getHeadingsList = useCallback( - (headings: NodeListOf): Heading[] => { - const formattedHeadings = formatHeadings(headings); - - return buildTree(formattedHeadings); - }, - [formatHeadings, buildTree] - ); - - useEffect(() => { - if (allHeadings) { - const headingsList = getHeadingsList(allHeadings); - setHeadingsTree(headingsList); - } - }, [allHeadings, getHeadingsList]); - - return headingsTree; -}; - -export default useHeadingsTree; -- cgit v1.2.3