2023-12-15 14:47:08 -06:00
|
|
|
import React, { useEffect, useState } from "react";
|
|
|
|
import useLinkStore from "@/store/links";
|
|
|
|
import { useRouter } from "next/router";
|
2023-12-19 10:50:43 -06:00
|
|
|
import {
|
|
|
|
ArchivedFormat,
|
|
|
|
LinkIncludingShortenedCollectionAndTags,
|
|
|
|
} from "@/types/global";
|
2023-12-15 15:18:54 -06:00
|
|
|
import ReadableView from "@/components/ReadableView";
|
2023-12-15 14:47:08 -06:00
|
|
|
|
|
|
|
export default function Index() {
|
|
|
|
const { links, getLink } = useLinkStore();
|
|
|
|
|
|
|
|
const [link, setLink] = useState<LinkIncludingShortenedCollectionAndTags>();
|
|
|
|
|
|
|
|
const router = useRouter();
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
const fetchLink = async () => {
|
|
|
|
if (router.query.id) {
|
|
|
|
await getLink(Number(router.query.id));
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
fetchLink();
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
if (links[0]) setLink(links.find((e) => e.id === Number(router.query.id)));
|
|
|
|
}, [links]);
|
|
|
|
|
|
|
|
return (
|
2023-12-15 15:18:54 -06:00
|
|
|
<div className="relative">
|
|
|
|
{/* <div className="fixed left-1/2 transform -translate-x-1/2 w-fit py-1 px-3 bg-base-200 border border-neutral-content rounded-md">
|
|
|
|
Readable
|
|
|
|
</div> */}
|
2023-12-19 10:50:43 -06:00
|
|
|
{link && Number(router.query.format) === ArchivedFormat.readability && (
|
|
|
|
<ReadableView link={link} />
|
|
|
|
)}
|
|
|
|
{link && Number(router.query.format) === ArchivedFormat.pdf && (
|
|
|
|
<iframe
|
|
|
|
src={`/api/v1/archives/${link.id}?format=${ArchivedFormat.pdf}`}
|
|
|
|
className="w-full h-screen border-none"
|
|
|
|
></iframe>
|
|
|
|
)}
|
|
|
|
{link && Number(router.query.format) === ArchivedFormat.png && (
|
|
|
|
<img
|
|
|
|
alt=""
|
|
|
|
src={`/api/v1/archives/${link.id}?format=${ArchivedFormat.png}`}
|
2023-12-19 16:20:09 -06:00
|
|
|
className="w-fit mx-auto"
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
{link && Number(router.query.format) === ArchivedFormat.jpeg && (
|
|
|
|
<img
|
|
|
|
alt=""
|
|
|
|
src={`/api/v1/archives/${link.id}?format=${ArchivedFormat.jpeg}`}
|
|
|
|
className="w-fit mx-auto"
|
2023-12-19 10:50:43 -06:00
|
|
|
/>
|
|
|
|
)}
|
2023-12-15 14:47:08 -06:00
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|