From a54159a9ecf73f5c7d7948c1d13ffc407173ea60 Mon Sep 17 00:00:00 2001 From: Mythie Date: Mon, 26 Feb 2024 11:59:32 +1100 Subject: [PATCH] fix: add missing teamId references --- .../documents/[id]/document-page-view.tsx | 1 + .../documents/[id]/edit-document.tsx | 6 ++ .../[id]/edit/document-edit-page-view.tsx | 1 + .../[id]/logs/document-logs-page-view.tsx | 1 + .../src/app/(teams)/t/[teamUrl]/layout.tsx | 5 +- apps/web/src/providers/team.tsx | 31 +++++++++++ .../trpc/server/document-router/router.ts | 55 ++----------------- .../trpc/server/document-router/schema.ts | 3 + .../trpc/server/recipient-router/router.ts | 3 +- .../trpc/server/recipient-router/schema.ts | 1 + 10 files changed, 54 insertions(+), 53 deletions(-) create mode 100644 apps/web/src/providers/team.tsx diff --git a/apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx b/apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx index e12a745a2..0eb8829a1 100644 --- a/apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx +++ b/apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx @@ -85,6 +85,7 @@ export const DocumentPageView = async ({ params, team }: DocumentPageViewProps) const recipients = await getRecipientsForDocument({ documentId, + teamId: team?.id, userId: user.id, }); diff --git a/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx b/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx index fe278486e..5d9fe78aa 100644 --- a/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx +++ b/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx @@ -30,6 +30,8 @@ import { LazyPDFViewer } from '@documenso/ui/primitives/lazy-pdf-viewer'; import { Stepper } from '@documenso/ui/primitives/stepper'; import { useToast } from '@documenso/ui/primitives/use-toast'; +import { useOptionalCurrentTeam } from '~/providers/team'; + export type EditDocumentFormProps = { className?: string; user: User; @@ -58,6 +60,7 @@ export const EditDocumentForm = ({ const router = useRouter(); const searchParams = useSearchParams(); + const team = useOptionalCurrentTeam(); const { mutateAsync: addTitle } = trpc.document.setTitleForDocument.useMutation(); const { mutateAsync: addFields } = trpc.field.addFields.useMutation(); @@ -112,6 +115,7 @@ export const EditDocumentForm = ({ // Custom invocation server action await addTitle({ documentId: document.id, + teamId: team?.id, title: data.title, }); @@ -134,6 +138,7 @@ export const EditDocumentForm = ({ // Custom invocation server action await addSigners({ documentId: document.id, + teamId: team?.id, signers: data.signers, }); @@ -177,6 +182,7 @@ export const EditDocumentForm = ({ try { await sendDocument({ documentId: document.id, + teamId: team?.id, meta: { subject, message, diff --git a/apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx b/apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx index 87b3738bb..69122312e 100644 --- a/apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx +++ b/apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx @@ -74,6 +74,7 @@ export const DocumentEditPageView = async ({ params, team }: DocumentEditPageVie getRecipientsForDocument({ documentId, userId: user.id, + teamId: team?.id, }), getFieldsForDocument({ documentId, diff --git a/apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx b/apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx index e9627d2c7..019ced57e 100644 --- a/apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx +++ b/apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx @@ -44,6 +44,7 @@ export const DocumentLogsPageView = async ({ params, team }: DocumentLogsPageVie getRecipientsForDocument({ documentId, userId: user.id, + teamId: team?.id, }), ]); diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/layout.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/layout.tsx index 2883abc21..e0cd23acb 100644 --- a/apps/web/src/app/(teams)/t/[teamUrl]/layout.tsx +++ b/apps/web/src/app/(teams)/t/[teamUrl]/layout.tsx @@ -11,6 +11,7 @@ import { SubscriptionStatus } from '@documenso/prisma/client'; import { Header } from '~/components/(dashboard)/layout/header'; import { RefreshOnFocus } from '~/components/(dashboard)/refresh-on-focus/refresh-on-focus'; import { NextAuthProvider } from '~/providers/next-auth'; +import { TeamProvider } from '~/providers/team'; import { LayoutBillingBanner } from './layout-billing-banner'; @@ -56,7 +57,9 @@ export default async function AuthenticatedTeamsLayout({
-
{children}
+ +
{children}
+
diff --git a/apps/web/src/providers/team.tsx b/apps/web/src/providers/team.tsx new file mode 100644 index 000000000..c09ce18b2 --- /dev/null +++ b/apps/web/src/providers/team.tsx @@ -0,0 +1,31 @@ +'use client'; + +import { createContext, useContext } from 'react'; +import React from 'react'; + +import type { Team } from '@documenso/prisma/client'; + +interface TeamProviderProps { + children: React.ReactNode; + team: Team; +} + +const TeamContext = createContext(null); + +export const useCurrentTeam = (): Team | null => { + const context = useContext(TeamContext); + + if (!context) { + throw new Error('useCurrentTeam must be used within a TeamProvider'); + } + + return context; +}; + +export const useOptionalCurrentTeam = (): Team | null => { + return useContext(TeamContext); +}; + +export const TeamProvider = ({ children, team }: TeamProviderProps) => { + return {children}; +}; diff --git a/packages/trpc/server/document-router/router.ts b/packages/trpc/server/document-router/router.ts index cac41e181..26b547ac9 100644 --- a/packages/trpc/server/document-router/router.ts +++ b/packages/trpc/server/document-router/router.ts @@ -13,8 +13,6 @@ import { resendDocument } from '@documenso/lib/server-only/document/resend-docum import { searchDocumentsWithKeyword } from '@documenso/lib/server-only/document/search-documents-with-keyword'; import { sendDocument } from '@documenso/lib/server-only/document/send-document'; import { updateTitle } from '@documenso/lib/server-only/document/update-title'; -import { setFieldsForDocument } from '@documenso/lib/server-only/field/set-fields-for-document'; -import { setRecipientsForDocument } from '@documenso/lib/server-only/recipient/set-recipients-for-document'; import { symmetricEncrypt } from '@documenso/lib/universal/crypto'; import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata'; @@ -28,9 +26,7 @@ import { ZResendDocumentMutationSchema, ZSearchDocumentsMutationSchema, ZSendDocumentMutationSchema, - ZSetFieldsForDocumentMutationSchema, ZSetPasswordForDocumentMutationSchema, - ZSetRecipientsForDocumentMutationSchema, ZSetTitleForDocumentMutationSchema, } from './schema'; @@ -157,63 +153,19 @@ export const documentRouter = router({ setTitleForDocument: authenticatedProcedure .input(ZSetTitleForDocumentMutationSchema) .mutation(async ({ input, ctx }) => { - const { documentId, title } = input; + const { documentId, teamId, title } = input; const userId = ctx.user.id; return await updateTitle({ title, userId, + teamId, documentId, requestMetadata: extractNextApiRequestMetadata(ctx.req), }); }), - setRecipientsForDocument: authenticatedProcedure - .input(ZSetRecipientsForDocumentMutationSchema) - .mutation(async ({ input, ctx }) => { - try { - const { documentId, recipients } = input; - - return await setRecipientsForDocument({ - userId: ctx.user.id, - documentId, - recipients, - requestMetadata: extractNextApiRequestMetadata(ctx.req), - }); - } catch (err) { - console.error(err); - - throw new TRPCError({ - code: 'BAD_REQUEST', - message: - 'We were unable to set the recipients for this document. Please try again later.', - }); - } - }), - - setFieldsForDocument: authenticatedProcedure - .input(ZSetFieldsForDocumentMutationSchema) - .mutation(async ({ input, ctx }) => { - try { - const { documentId, fields } = input; - - return await setFieldsForDocument({ - userId: ctx.user.id, - documentId, - fields, - requestMetadata: extractNextApiRequestMetadata(ctx.req), - }); - } catch (err) { - console.error(err); - - throw new TRPCError({ - code: 'BAD_REQUEST', - message: 'We were unable to set the fields for this document. Please try again later.', - }); - } - }), - setPasswordForDocument: authenticatedProcedure .input(ZSetPasswordForDocumentMutationSchema) .mutation(async ({ input, ctx }) => { @@ -251,7 +203,7 @@ export const documentRouter = router({ .input(ZSendDocumentMutationSchema) .mutation(async ({ input, ctx }) => { try { - const { documentId, meta } = input; + const { documentId, teamId, meta } = input; if (meta.message || meta.subject || meta.timezone || meta.dateFormat || meta.redirectUrl) { await upsertDocumentMeta({ @@ -269,6 +221,7 @@ export const documentRouter = router({ return await sendDocument({ userId: ctx.user.id, documentId, + teamId, requestMetadata: extractNextApiRequestMetadata(ctx.req), }); } catch (err) { diff --git a/packages/trpc/server/document-router/schema.ts b/packages/trpc/server/document-router/schema.ts index f32b4b6a7..34ddf1a5c 100644 --- a/packages/trpc/server/document-router/schema.ts +++ b/packages/trpc/server/document-router/schema.ts @@ -39,6 +39,7 @@ export type TCreateDocumentMutationSchema = z.infer { try { - const { documentId, signers } = input; + const { documentId, teamId, signers } = input; return await setRecipientsForDocument({ userId: ctx.user.id, documentId, + teamId, recipients: signers.map((signer) => ({ id: signer.nativeId, email: signer.email, diff --git a/packages/trpc/server/recipient-router/schema.ts b/packages/trpc/server/recipient-router/schema.ts index edcd34ed6..6825137c4 100644 --- a/packages/trpc/server/recipient-router/schema.ts +++ b/packages/trpc/server/recipient-router/schema.ts @@ -5,6 +5,7 @@ import { RecipientRole } from '@documenso/prisma/client'; export const ZAddSignersMutationSchema = z .object({ documentId: z.number(), + teamId: z.number().optional(), signers: z.array( z.object({ nativeId: z.number().optional(),