import React from 'react'; import { redirect } from 'next/navigation'; import { DateTime } from 'luxon'; import { APP_I18N_OPTIONS } from '@documenso/lib/constants/i18n'; import { RECIPIENT_ROLES_DESCRIPTION_ENG } from '@documenso/lib/constants/recipient-roles'; import { getEntireDocument } from '@documenso/lib/server-only/admin/get-entire-document'; import { decryptSecondaryData } from '@documenso/lib/server-only/crypto/decrypt'; import { findDocumentAuditLogs } from '@documenso/lib/server-only/document/find-document-audit-logs'; import { Card, CardContent } from '@documenso/ui/primitives/card'; import { Logo } from '~/components/branding/logo'; import { AuditLogDataTable } from './data-table'; type AuditLogProps = { searchParams: { d: string; }; }; export default async function AuditLog({ searchParams }: AuditLogProps) { const { d } = searchParams; if (typeof d !== 'string' || !d) { return redirect('/'); } const rawDocumentId = decryptSecondaryData(d); if (!rawDocumentId || isNaN(Number(rawDocumentId))) { return redirect('/'); } const documentId = Number(rawDocumentId); const document = await getEntireDocument({ id: documentId, }).catch(() => null); if (!document) { return redirect('/'); } const { data: auditLogs } = await findDocumentAuditLogs({ documentId: documentId, userId: document.userId, perPage: 100_000, }); return (

Version History

Document ID {document.id}

Enclosed Document {document.title}

Status {document.deletedAt ? 'DELETED' : document.status}

Owner {document.User.name} ({document.User.email})

Created At {DateTime.fromJSDate(document.createdAt) .setLocale(APP_I18N_OPTIONS.defaultLocale) .toFormat('yyyy-mm-dd hh:mm:ss a (ZZZZ)')}

Last Updated {DateTime.fromJSDate(document.updatedAt) .setLocale(APP_I18N_OPTIONS.defaultLocale) .toFormat('yyyy-mm-dd hh:mm:ss a (ZZZZ)')}

Time Zone {document.documentMeta?.timezone ?? 'N/A'}

Recipients

    {document.Recipient.map((recipient) => (
  • [{RECIPIENT_ROLES_DESCRIPTION_ENG[recipient.role].roleName}] {' '} {recipient.name} ({recipient.email})
  • ))}
); }