summaryrefslogtreecommitdiffstats
path: root/src/utils/hooks
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2022-04-29 12:13:34 +0200
committerArmand Philippot <git@armandphilippot.com>2022-04-29 18:30:05 +0200
commit7e16f500cb7bc0cfd8bafbf6bb1555704f771231 (patch)
treebfc2b4a475cb06a787e2c4bdf284165644e82952 /src/utils/hooks
parent5324664e87bedfaa01ba62c0c847ef5b861e69b3 (diff)
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.
Diffstat (limited to 'src/utils/hooks')
-rw-r--r--src/utils/hooks/useGithubApi.tsx23
-rw-r--r--src/utils/hooks/useHeadingsTree.tsx104
2 files changed, 0 insertions, 127 deletions
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<RepoData, string> = (...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<RepoData>(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<NodeListOf<HTMLHeadingElement>>();
-
- useEffect(() => {
- const query = depths
- .map((depth) => `${wrapper} > *:not(aside, #comments) ${depth}`)
- .join(', ');
- const result: NodeListOf<HTMLHeadingElement> =
- document.querySelectorAll(query);
- setAllHeadings(result);
- }, [depths, wrapper, router.asPath]);
-
- const [headingsTree, setHeadingsTree] = useState<Heading[]>([]);
-
- const getElementDepth = useCallback(
- (el: HTMLHeadingElement) => {
- return depths.findIndex((depth) => depth === el.localName);
- },
- [depths]
- );
-
- const formatHeadings = useCallback(
- (headings: NodeListOf<HTMLHeadingElement>): 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<HTMLHeadingElement>): 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;