import { ReactElement } from "react";
import Layout from "../../../components/layout";
import { NextPageWithLayout } from "../../_app";
import { useRouter } from "next/router";
import { NEXT_PUBLIC_WEBAPP_URL } from "@documenso/lib";
import { getUserFromToken } from "@documenso/lib/server";
import Link from "next/link";
import { DocumentStatus } from "@prisma/client";
import {
InformationCircleIcon,
PaperAirplaneIcon,
UserPlusIcon,
UsersIcon,
} from "@heroicons/react/24/outline";
import { getDocument } from "@documenso/lib/query";
import { Document as PrismaDocument } from "@prisma/client";
import { Button, Breadcrumb } from "@documenso/ui";
import PDFEditor from "../../../components/editor/pdf-editor";
const DocumentsDetailPage: NextPageWithLayout = (props: any) => {
const router = useRouter();
return (
{props.document.title}
{props?.document?.Recipient?.length} Recipients
{formatDocumentStatus(props.document.status)}
);
};
function formatDocumentStatus(status: DocumentStatus) {
switch (status) {
case DocumentStatus.DRAFT:
return "Draft";
case DocumentStatus.PENDING:
return "Pending";
case DocumentStatus.COMPLETED:
return "Completed";
}
}
export async function getServerSideProps(context: any) {
const user = await getUserFromToken(context.req, context.res);
if (!user) return;
const { id: documentId } = context.query;
try {
const document: PrismaDocument = await getDocument(
+documentId,
context.req,
context.res
);
// todo optimize querys
// todo no intersection groups
return {
props: {
document: document,
},
};
} catch (error) {
return {
notFound: true,
};
}
}
DocumentsDetailPage.getLayout = function getLayout(page: ReactElement) {
return {page};
};
export default DocumentsDetailPage;