mirror of
https://github.com/documenso/documenso.git
synced 2025-11-10 04:22:32 +10:00
chore: tidy up
This commit is contained in:
@ -2,11 +2,10 @@
|
|||||||
|
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
|
|
||||||
import { Edit, Pencil, Share } from 'lucide-react';
|
import { Edit } from 'lucide-react';
|
||||||
import { useSession } from 'next-auth/react';
|
import { useSession } from 'next-auth/react';
|
||||||
import { match } from 'ts-pattern';
|
|
||||||
|
|
||||||
import { Document, DocumentStatus, Recipient, SigningStatus, User } from '@documenso/prisma/client';
|
import { Document, Recipient, User } from '@documenso/prisma/client';
|
||||||
import { Button } from '@documenso/ui/primitives/button';
|
import { Button } from '@documenso/ui/primitives/button';
|
||||||
|
|
||||||
export type DataTableActionButtonProps = {
|
export type DataTableActionButtonProps = {
|
||||||
@ -23,43 +22,12 @@ export const DataTableActionButton = ({ row }: DataTableActionButtonProps) => {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const recipient = row.Recipient.find((recipient) => recipient.email === session.user.email);
|
return (
|
||||||
|
<Button className="w-24" asChild>
|
||||||
const isOwner = row.User.id === session.user.id;
|
<Link href={`/documents/${row.id}`}>
|
||||||
const isRecipient = !!recipient;
|
<Edit className="-ml-1 mr-2 h-4 w-4" />
|
||||||
const isDraft = row.status === DocumentStatus.DRAFT;
|
Edit
|
||||||
const isPending = row.status === DocumentStatus.PENDING;
|
</Link>
|
||||||
const isComplete = row.status === DocumentStatus.COMPLETED;
|
</Button>
|
||||||
const isSigned = recipient?.signingStatus === SigningStatus.SIGNED;
|
);
|
||||||
|
|
||||||
return match({
|
|
||||||
isOwner,
|
|
||||||
isRecipient,
|
|
||||||
isDraft,
|
|
||||||
isPending,
|
|
||||||
isComplete,
|
|
||||||
isSigned,
|
|
||||||
})
|
|
||||||
.with({ isOwner: true, isDraft: true }, () => (
|
|
||||||
<Button className="w-24" asChild>
|
|
||||||
<Link href={`/documents/${row.id}`}>
|
|
||||||
<Edit className="-ml-1 mr-2 h-4 w-4" />
|
|
||||||
Edit
|
|
||||||
</Link>
|
|
||||||
</Button>
|
|
||||||
))
|
|
||||||
.with({ isRecipient: true, isPending: true, isSigned: false }, () => (
|
|
||||||
<Button className="w-24" asChild>
|
|
||||||
<Link href={`/sign/${recipient?.token}`}>
|
|
||||||
<Pencil className="-ml-1 mr-2 h-4 w-4" />
|
|
||||||
Sign
|
|
||||||
</Link>
|
|
||||||
</Button>
|
|
||||||
))
|
|
||||||
.otherwise(() => (
|
|
||||||
<Button className="w-24" disabled>
|
|
||||||
<Share className="-ml-1 mr-2 h-4 w-4" />
|
|
||||||
Share
|
|
||||||
</Button>
|
|
||||||
));
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,18 +1,6 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import Link from 'next/link';
|
import { Copy, Download, History, MoreHorizontal, Trash2, XCircle } from 'lucide-react';
|
||||||
|
|
||||||
import {
|
|
||||||
Copy,
|
|
||||||
Download,
|
|
||||||
Edit,
|
|
||||||
History,
|
|
||||||
MoreHorizontal,
|
|
||||||
Pencil,
|
|
||||||
Share,
|
|
||||||
Trash2,
|
|
||||||
XCircle,
|
|
||||||
} from 'lucide-react';
|
|
||||||
import { useSession } from 'next-auth/react';
|
import { useSession } from 'next-auth/react';
|
||||||
|
|
||||||
import { getFile } from '@documenso/lib/universal/upload/get-file';
|
import { getFile } from '@documenso/lib/universal/upload/get-file';
|
||||||
@ -42,8 +30,6 @@ export const DataTableActionDropdown = ({ row }: DataTableActionDropdownProps) =
|
|||||||
}
|
}
|
||||||
|
|
||||||
const recipient = row.Recipient.find((recipient) => recipient.email === session.user.email);
|
const recipient = row.Recipient.find((recipient) => recipient.email === session.user.email);
|
||||||
|
|
||||||
const isOwner = row.User.id === session.user.id;
|
|
||||||
// const isRecipient = !!recipient;
|
// const isRecipient = !!recipient;
|
||||||
// const isDraft = row.status === DocumentStatus.DRAFT;
|
// const isDraft = row.status === DocumentStatus.DRAFT;
|
||||||
// const isPending = row.status === DocumentStatus.PENDING;
|
// const isPending = row.status === DocumentStatus.PENDING;
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
import { getRequiredServerComponentSession } from '@documenso/lib/next-auth/get-server-session';
|
|
||||||
import { findDocuments } from '@documenso/lib/server-only/admin/get-all-documents';
|
import { findDocuments } from '@documenso/lib/server-only/admin/get-all-documents';
|
||||||
|
|
||||||
import { DocumentsDataTable } from './data-table';
|
import { DocumentsDataTable } from './data-table';
|
||||||
@ -15,10 +14,6 @@ export default async function Documents({ searchParams = {} }: DocumentsPageProp
|
|||||||
const perPage = Number(searchParams.perPage) || 20;
|
const perPage = Number(searchParams.perPage) || 20;
|
||||||
|
|
||||||
const results = await findDocuments({
|
const results = await findDocuments({
|
||||||
orderBy: {
|
|
||||||
column: 'createdAt',
|
|
||||||
direction: 'desc',
|
|
||||||
},
|
|
||||||
page,
|
page,
|
||||||
perPage,
|
perPage,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,3 +0,0 @@
|
|||||||
export default function UserDocuments() {
|
|
||||||
return <h1>User docs</h1>;
|
|
||||||
}
|
|
||||||
@ -105,13 +105,7 @@ export const UsersDataTable = ({ users, perPage, page, totalPages }: UsersDataTa
|
|||||||
header: 'Documents',
|
header: 'Documents',
|
||||||
accessorKey: 'documents',
|
accessorKey: 'documents',
|
||||||
cell: ({ row }) => {
|
cell: ({ row }) => {
|
||||||
return (
|
return <div>{row.original.Document.length}</div>;
|
||||||
<div>
|
|
||||||
<Link href={`/admin/users/${row.original.id}/documents`}>
|
|
||||||
{row.original.Document.length}
|
|
||||||
</Link>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,25 +1,12 @@
|
|||||||
import { prisma } from '@documenso/prisma';
|
import { prisma } from '@documenso/prisma';
|
||||||
import { Document } from '@documenso/prisma/client';
|
|
||||||
|
|
||||||
export interface FindDocumentsOptions {
|
export interface FindDocumentsOptions {
|
||||||
term?: string;
|
term?: string;
|
||||||
page?: number;
|
page?: number;
|
||||||
perPage?: number;
|
perPage?: number;
|
||||||
orderBy?: {
|
|
||||||
column: keyof Omit<Document, 'document'>;
|
|
||||||
direction: 'asc' | 'desc';
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const findDocuments = async ({
|
export const findDocuments = async ({ term, page = 1, perPage = 10 }: FindDocumentsOptions) => {
|
||||||
term,
|
|
||||||
page = 1,
|
|
||||||
perPage = 10,
|
|
||||||
orderBy,
|
|
||||||
}: FindDocumentsOptions) => {
|
|
||||||
const orderByColumn = orderBy?.column ?? 'createdAt';
|
|
||||||
const orderByDirection = orderBy?.direction ?? 'desc';
|
|
||||||
|
|
||||||
const termFilters = !term
|
const termFilters = !term
|
||||||
? undefined
|
? undefined
|
||||||
: ({
|
: ({
|
||||||
@ -37,7 +24,7 @@ export const findDocuments = async ({
|
|||||||
skip: Math.max(page - 1, 0) * perPage,
|
skip: Math.max(page - 1, 0) * perPage,
|
||||||
take: perPage,
|
take: perPage,
|
||||||
orderBy: {
|
orderBy: {
|
||||||
[orderByColumn]: orderByDirection,
|
createdAt: 'desc',
|
||||||
},
|
},
|
||||||
include: {
|
include: {
|
||||||
User: {
|
User: {
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import { Popover, PopoverContent, PopoverTrigger } from '@documenso/ui/primitive
|
|||||||
|
|
||||||
type ComboboxProps = {
|
type ComboboxProps = {
|
||||||
listValues: string[];
|
listValues: string[];
|
||||||
onChange: (values: string[]) => void;
|
onChange: (_values: string[]) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
const Combobox = ({ listValues, onChange }: ComboboxProps) => {
|
const Combobox = ({ listValues, onChange }: ComboboxProps) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user