From ef08edf1fb257867fc506db243d0c78043ce8126 Mon Sep 17 00:00:00 2001 From: Isaac Wise Date: Thu, 8 Feb 2024 00:59:17 -0600 Subject: [PATCH] Verify the preference is available --- lib/client/generateLinkHref.ts | 9 +++++++++ lib/shared/getArchiveValidity.ts | 8 +++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/client/generateLinkHref.ts b/lib/client/generateLinkHref.ts index acb89c4..d122383 100644 --- a/lib/client/generateLinkHref.ts +++ b/lib/client/generateLinkHref.ts @@ -1,18 +1,27 @@ import useAccountStore from "@/store/account"; import { ArchivedFormat, LinkIncludingShortenedCollectionAndTags } from "@/types/global"; import { LinksRouteTo } from "@prisma/client"; +import { pdfAvailable, readabilityAvailable, screenshotAvailable } from "../shared/getArchiveValidity"; export const generateLinkHref = (link: LinkIncludingShortenedCollectionAndTags): string => { const { account } = useAccountStore(); + // Return the links href based on the account's preference + // If the user's preference is not available, return the original link switch (account.linksRouteTo) { case LinksRouteTo.ORIGINAL: return link.url || ''; case LinksRouteTo.PDF: + if (!pdfAvailable(link)) return link.url || ''; + return `/preserved/${link?.id}?format=${ArchivedFormat.pdf}`; case LinksRouteTo.READABLE: + if (!readabilityAvailable(link)) return link.url || ''; + return `/preserved/${link?.id}?format=${ArchivedFormat.readability}`; case LinksRouteTo.SCREENSHOT: + if (!screenshotAvailable(link)) return link.url || ''; + return `/preserved/${link?.id}?format=${link?.image?.endsWith("png") ? ArchivedFormat.png : ArchivedFormat.jpeg}`; default: return link.url || ''; diff --git a/lib/shared/getArchiveValidity.ts b/lib/shared/getArchiveValidity.ts index 395de00..ec74b22 100644 --- a/lib/shared/getArchiveValidity.ts +++ b/lib/shared/getArchiveValidity.ts @@ -1,4 +1,6 @@ -export function screenshotAvailable(link: any) { +import { LinkIncludingShortenedCollectionAndTags } from "@/types/global"; + +export function screenshotAvailable(link: LinkIncludingShortenedCollectionAndTags) { return ( link && link.image && @@ -7,13 +9,13 @@ export function screenshotAvailable(link: any) { ); } -export function pdfAvailable(link: any) { +export function pdfAvailable(link: LinkIncludingShortenedCollectionAndTags) { return ( link && link.pdf && link.pdf !== "pending" && link.pdf !== "unavailable" ); } -export function readabilityAvailable(link: any) { +export function readabilityAvailable(link: LinkIncludingShortenedCollectionAndTags) { return ( link && link.readable &&