mirror of
https://github.com/linkwarden/linkwarden.git
synced 2026-06-28 14:55:49 +00:00
51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import {
|
|
ArchivedFormat,
|
|
LinkIncludingShortenedCollectionAndTags,
|
|
} from "@linkwarden/types/global";
|
|
|
|
// Don't use prisma client's LinksRouteTo, it'll crash in production (React Native)
|
|
type LinksRouteTo =
|
|
| "ORIGINAL"
|
|
| "PDF"
|
|
| "READABLE"
|
|
| "MONOLITH"
|
|
| "SCREENSHOT"
|
|
| "DETAILS";
|
|
|
|
const getFormatBasedOnPreference = ({
|
|
link,
|
|
preference,
|
|
}: {
|
|
link: LinkIncludingShortenedCollectionAndTags;
|
|
preference: LinksRouteTo;
|
|
}) => {
|
|
// Return the format based on the account's preference
|
|
// If the user's preference is not available, return null (original url)
|
|
|
|
if (preference === "ORIGINAL" && link.type === "url") {
|
|
return null;
|
|
} else if (preference === "PDF" || link.type === "pdf") {
|
|
if (!link.pdf || link.pdf === "unavailable") return null;
|
|
|
|
return ArchivedFormat.pdf;
|
|
} else if (preference === "READABLE" && link.type === "url") {
|
|
if (!link.readable || link.readable === "unavailable") return null;
|
|
|
|
return ArchivedFormat.readability;
|
|
} else if (preference === "SCREENSHOT" || link.type === "image") {
|
|
if (!link.image || link.image === "unavailable") return null;
|
|
|
|
return link?.image?.endsWith("png")
|
|
? ArchivedFormat.png
|
|
: ArchivedFormat.jpeg;
|
|
} else if (preference === "MONOLITH") {
|
|
if (!link.monolith || link.monolith === "unavailable") return null;
|
|
|
|
return ArchivedFormat.monolith;
|
|
} else {
|
|
return null;
|
|
}
|
|
};
|
|
|
|
export default getFormatBasedOnPreference;
|