mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 08:13:56 +10:00
get documents for user query refactor
This commit is contained in:
@ -2,8 +2,8 @@ import { defaultHandler, defaultResponder } from "@documenso/lib/server";
|
||||
import prisma from "@documenso/prisma";
|
||||
import { NextApiRequest, NextApiResponse } from "next";
|
||||
import { getUserFromToken } from "@documenso/lib/server";
|
||||
import formidable, { Files } from "formidable";
|
||||
import { getToken } from "next-auth/jwt";
|
||||
import formidable from "formidable";
|
||||
import { getDocumentsForUserFromToken } from "@documenso/lib/query";
|
||||
|
||||
export const config = {
|
||||
api: {
|
||||
@ -49,17 +49,7 @@ async function getHandler(req: NextApiRequest, res: NextApiResponse) {
|
||||
let user = await getUserFromToken(req, res);
|
||||
if (!user) return;
|
||||
|
||||
const documents = await prisma.document.findMany({
|
||||
where: {
|
||||
userId: user?.id,
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
title: true,
|
||||
status: true,
|
||||
Recipient: true,
|
||||
},
|
||||
});
|
||||
const documents = await getDocumentsForUserFromToken({ req: req, res: res });
|
||||
|
||||
return res.status(200).json(documents);
|
||||
}
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
import { useSession } from "next-auth/react";
|
||||
import Head from "next/head";
|
||||
import { ReactElement, useEffect, useState } from "react";
|
||||
import { ReactElement } from "react";
|
||||
import Layout from "../components/layout";
|
||||
import Settings from "../components/settings";
|
||||
import Link from "next/link";
|
||||
import type { NextPageWithLayout } from "./_app";
|
||||
import {
|
||||
@ -13,20 +11,16 @@ import {
|
||||
SunIcon,
|
||||
XCircleIcon,
|
||||
} from "@heroicons/react/24/outline";
|
||||
import { FormProvider, useForm } from "react-hook-form";
|
||||
import Router from "next/router";
|
||||
import { NEXT_PUBLIC_WEBAPP_URL } from "@documenso/lib";
|
||||
import toast from "react-hot-toast";
|
||||
import { uploadDocument } from "@documenso/features";
|
||||
import prisma from "@documenso/prisma";
|
||||
import {
|
||||
ReadStatus,
|
||||
SendStatus,
|
||||
SigningStatus,
|
||||
DocumentStatus,
|
||||
Document as PrismaDocument,
|
||||
} from "@prisma/client";
|
||||
import { getUserFromToken } from "@documenso/lib/server";
|
||||
import { getDocumentsForUserFromToken } from "@documenso/lib/query";
|
||||
|
||||
type FormValues = {
|
||||
document: File;
|
||||
@ -160,11 +154,9 @@ export async function getServerSideProps(context: any) {
|
||||
// todo optimize querys
|
||||
// todo no intersection groups
|
||||
|
||||
const documents: PrismaDocument[] = await prisma.document.findMany({
|
||||
where: {
|
||||
userId: user.id,
|
||||
},
|
||||
});
|
||||
const documents: PrismaDocument[] = await getDocumentsForUserFromToken(
|
||||
context
|
||||
);
|
||||
|
||||
const drafts: PrismaDocument[] = documents.filter(
|
||||
(d) => d.status === DocumentStatus.DRAFT
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
import { useSession } from "next-auth/react";
|
||||
import { ReactElement, useEffect, useState } from "react";
|
||||
import { ReactElement, useState } from "react";
|
||||
import Layout from "../components/layout";
|
||||
import type { NextPageWithLayout } from "./_app";
|
||||
import Head from "next/head";
|
||||
@ -15,15 +14,12 @@ import { useRouter } from "next/router";
|
||||
import { uploadDocument } from "@documenso/features";
|
||||
import { DocumentStatus } from "@prisma/client";
|
||||
import { Tooltip as ReactTooltip } from "react-tooltip";
|
||||
import { getDocumentsForUserFromToken } from "@documenso/lib/query";
|
||||
|
||||
const DocumentsPage: NextPageWithLayout = (req, res) => {
|
||||
const DocumentsPage: NextPageWithLayout = (props: any) => {
|
||||
const router = useRouter();
|
||||
const [documents = [], setDocuments] = useState([]);
|
||||
const [loading, setLoading] = useState(true);
|
||||
|
||||
useEffect(() => {
|
||||
getDocuments();
|
||||
}, []);
|
||||
const [documents = [], setDocuments] = useState(props.documents);
|
||||
const [loading, setLoading] = useState(false);
|
||||
|
||||
const getDocuments = async () => {
|
||||
if (!documents.length) setLoading(true);
|
||||
@ -279,6 +275,14 @@ const DocumentsPage: NextPageWithLayout = (req, res) => {
|
||||
);
|
||||
};
|
||||
|
||||
export async function getServerSideProps(context: any) {
|
||||
return {
|
||||
props: {
|
||||
documents: await getDocumentsForUserFromToken(context),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
function formatDocumentStatus(status: DocumentStatus) {
|
||||
switch (status) {
|
||||
case DocumentStatus.DRAFT:
|
||||
|
||||
21
packages/lib/query/getDocumentsForUserFromToken.ts
Normal file
21
packages/lib/query/getDocumentsForUserFromToken.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import { getUserFromToken } from "@documenso/lib/server";
|
||||
import prisma from "@documenso/prisma";
|
||||
import { Document as PrismaDocument } from "@prisma/client";
|
||||
|
||||
export const getDocumentsForUserFromToken = async (
|
||||
ssrContext: any
|
||||
): Promise<PrismaDocument[]> => {
|
||||
const user = await getUserFromToken(ssrContext.req, ssrContext.res);
|
||||
if (!user) return Promise.reject("Invalid user or token.s");
|
||||
|
||||
const documents: PrismaDocument[] = await prisma.document.findMany({
|
||||
where: {
|
||||
userId: user.id,
|
||||
},
|
||||
include: {
|
||||
Recipient: true,
|
||||
},
|
||||
});
|
||||
|
||||
return documents;
|
||||
};
|
||||
1
packages/lib/query/index.ts
Normal file
1
packages/lib/query/index.ts
Normal file
@ -0,0 +1 @@
|
||||
export { getDocumentsForUserFromToken } from "./getDocumentsForUserFromToken";
|
||||
Reference in New Issue
Block a user