minor changes

This commit is contained in:
daniel31x13
2024-11-02 20:43:53 -04:00
parent 2e1e94112f
commit 4febe1ace5
21 changed files with 4603 additions and 21657 deletions
-14
View File
@@ -32,32 +32,18 @@ const usePublicLinks = (params: LinkRequestQuery = {}) => {
searchByTags: params.searchByTags,
} as LinkRequestQuery;
const queryParamsForAllLinksObject = {
sort: params.sort ?? Number(window.localStorage.getItem("sortBy")) ?? 0,
collectionId: params.collectionId ?? router.query.id,
} as LinkRequestQuery;
const queryString = buildQueryString(queryParamsObject);
const queryStringForAllLinkObject = buildQueryString(queryParamsForAllLinksObject);
const { data, ...rest } = useFetchLinks(queryString);
const allLinks = useFetchLinks(queryStringForAllLinkObject);
const links = useMemo(() => {
return data?.pages.reduce((acc, page) => {
return [...acc, ...page];
}, []);
}, [data]);
const linksForWholeCollection = useMemo(() => {
return allLinks.data?.pages.reduce((acc, page) => {
return [...acc, ...page];
}, []);
}, [allLinks.data])
return {
links,
linksForWholeCollection,
data: { ...data, ...rest },
} as {
links: LinkIncludingShortenedCollectionAndTags[];
linksForWholeCollection: LinkIncludingShortenedCollectionAndTags[];
data: UseInfiniteQueryResult<InfiniteData<any, unknown>, Error>;
};
};
+30
View File
@@ -0,0 +1,30 @@
import { Tag } from "@prisma/client";
import { useQuery, UseQueryResult } from "@tanstack/react-query";
import { useSession } from "next-auth/react";
import { useRouter } from "next/router";
type TagIncludingCount = Tag & { _count: { links: number } };
const usePublicTags = (): UseQueryResult<TagIncludingCount[]> => {
const { status } = useSession();
const router = useRouter();
return useQuery({
queryKey: ["tags"],
queryFn: async () => {
const response = await fetch(
"/api/v1/public/collections/tags" +
"?collectionId=" +
router.query.id || ""
);
if (!response.ok) throw new Error("Failed to fetch tags.");
const data = await response.json();
return data.response;
},
enabled: status === "authenticated",
});
};
export { usePublicTags };