fix: add missing teamId references
This commit is contained in:
@@ -85,6 +85,7 @@ export const DocumentPageView = async ({ params, team }: DocumentPageViewProps)
|
|||||||
|
|
||||||
const recipients = await getRecipientsForDocument({
|
const recipients = await getRecipientsForDocument({
|
||||||
documentId,
|
documentId,
|
||||||
|
teamId: team?.id,
|
||||||
userId: user.id,
|
userId: user.id,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ import { LazyPDFViewer } from '@documenso/ui/primitives/lazy-pdf-viewer';
|
|||||||
import { Stepper } from '@documenso/ui/primitives/stepper';
|
import { Stepper } from '@documenso/ui/primitives/stepper';
|
||||||
import { useToast } from '@documenso/ui/primitives/use-toast';
|
import { useToast } from '@documenso/ui/primitives/use-toast';
|
||||||
|
|
||||||
|
import { useOptionalCurrentTeam } from '~/providers/team';
|
||||||
|
|
||||||
export type EditDocumentFormProps = {
|
export type EditDocumentFormProps = {
|
||||||
className?: string;
|
className?: string;
|
||||||
user: User;
|
user: User;
|
||||||
@@ -58,6 +60,7 @@ export const EditDocumentForm = ({
|
|||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
|
const team = useOptionalCurrentTeam();
|
||||||
|
|
||||||
const { mutateAsync: addTitle } = trpc.document.setTitleForDocument.useMutation();
|
const { mutateAsync: addTitle } = trpc.document.setTitleForDocument.useMutation();
|
||||||
const { mutateAsync: addFields } = trpc.field.addFields.useMutation();
|
const { mutateAsync: addFields } = trpc.field.addFields.useMutation();
|
||||||
@@ -112,6 +115,7 @@ export const EditDocumentForm = ({
|
|||||||
// Custom invocation server action
|
// Custom invocation server action
|
||||||
await addTitle({
|
await addTitle({
|
||||||
documentId: document.id,
|
documentId: document.id,
|
||||||
|
teamId: team?.id,
|
||||||
title: data.title,
|
title: data.title,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -134,6 +138,7 @@ export const EditDocumentForm = ({
|
|||||||
// Custom invocation server action
|
// Custom invocation server action
|
||||||
await addSigners({
|
await addSigners({
|
||||||
documentId: document.id,
|
documentId: document.id,
|
||||||
|
teamId: team?.id,
|
||||||
signers: data.signers,
|
signers: data.signers,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -177,6 +182,7 @@ export const EditDocumentForm = ({
|
|||||||
try {
|
try {
|
||||||
await sendDocument({
|
await sendDocument({
|
||||||
documentId: document.id,
|
documentId: document.id,
|
||||||
|
teamId: team?.id,
|
||||||
meta: {
|
meta: {
|
||||||
subject,
|
subject,
|
||||||
message,
|
message,
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ export const DocumentEditPageView = async ({ params, team }: DocumentEditPageVie
|
|||||||
getRecipientsForDocument({
|
getRecipientsForDocument({
|
||||||
documentId,
|
documentId,
|
||||||
userId: user.id,
|
userId: user.id,
|
||||||
|
teamId: team?.id,
|
||||||
}),
|
}),
|
||||||
getFieldsForDocument({
|
getFieldsForDocument({
|
||||||
documentId,
|
documentId,
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ export const DocumentLogsPageView = async ({ params, team }: DocumentLogsPageVie
|
|||||||
getRecipientsForDocument({
|
getRecipientsForDocument({
|
||||||
documentId,
|
documentId,
|
||||||
userId: user.id,
|
userId: user.id,
|
||||||
|
teamId: team?.id,
|
||||||
}),
|
}),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import { SubscriptionStatus } from '@documenso/prisma/client';
|
|||||||
import { Header } from '~/components/(dashboard)/layout/header';
|
import { Header } from '~/components/(dashboard)/layout/header';
|
||||||
import { RefreshOnFocus } from '~/components/(dashboard)/refresh-on-focus/refresh-on-focus';
|
import { RefreshOnFocus } from '~/components/(dashboard)/refresh-on-focus/refresh-on-focus';
|
||||||
import { NextAuthProvider } from '~/providers/next-auth';
|
import { NextAuthProvider } from '~/providers/next-auth';
|
||||||
|
import { TeamProvider } from '~/providers/team';
|
||||||
|
|
||||||
import { LayoutBillingBanner } from './layout-billing-banner';
|
import { LayoutBillingBanner } from './layout-billing-banner';
|
||||||
|
|
||||||
@@ -56,7 +57,9 @@ export default async function AuthenticatedTeamsLayout({
|
|||||||
|
|
||||||
<Header user={user} teams={teams} />
|
<Header user={user} teams={teams} />
|
||||||
|
|
||||||
<main className="mt-8 pb-8 md:mt-12 md:pb-12">{children}</main>
|
<TeamProvider team={team}>
|
||||||
|
<main className="mt-8 pb-8 md:mt-12 md:pb-12">{children}</main>
|
||||||
|
</TeamProvider>
|
||||||
|
|
||||||
<RefreshOnFocus />
|
<RefreshOnFocus />
|
||||||
</LimitsProvider>
|
</LimitsProvider>
|
||||||
|
|||||||
31
apps/web/src/providers/team.tsx
Normal file
31
apps/web/src/providers/team.tsx
Normal file
@@ -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<Team | null>(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 <TeamContext.Provider value={team}>{children}</TeamContext.Provider>;
|
||||||
|
};
|
||||||
@@ -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 { searchDocumentsWithKeyword } from '@documenso/lib/server-only/document/search-documents-with-keyword';
|
||||||
import { sendDocument } from '@documenso/lib/server-only/document/send-document';
|
import { sendDocument } from '@documenso/lib/server-only/document/send-document';
|
||||||
import { updateTitle } from '@documenso/lib/server-only/document/update-title';
|
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 { symmetricEncrypt } from '@documenso/lib/universal/crypto';
|
||||||
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||||
|
|
||||||
@@ -28,9 +26,7 @@ import {
|
|||||||
ZResendDocumentMutationSchema,
|
ZResendDocumentMutationSchema,
|
||||||
ZSearchDocumentsMutationSchema,
|
ZSearchDocumentsMutationSchema,
|
||||||
ZSendDocumentMutationSchema,
|
ZSendDocumentMutationSchema,
|
||||||
ZSetFieldsForDocumentMutationSchema,
|
|
||||||
ZSetPasswordForDocumentMutationSchema,
|
ZSetPasswordForDocumentMutationSchema,
|
||||||
ZSetRecipientsForDocumentMutationSchema,
|
|
||||||
ZSetTitleForDocumentMutationSchema,
|
ZSetTitleForDocumentMutationSchema,
|
||||||
} from './schema';
|
} from './schema';
|
||||||
|
|
||||||
@@ -157,63 +153,19 @@ export const documentRouter = router({
|
|||||||
setTitleForDocument: authenticatedProcedure
|
setTitleForDocument: authenticatedProcedure
|
||||||
.input(ZSetTitleForDocumentMutationSchema)
|
.input(ZSetTitleForDocumentMutationSchema)
|
||||||
.mutation(async ({ input, ctx }) => {
|
.mutation(async ({ input, ctx }) => {
|
||||||
const { documentId, title } = input;
|
const { documentId, teamId, title } = input;
|
||||||
|
|
||||||
const userId = ctx.user.id;
|
const userId = ctx.user.id;
|
||||||
|
|
||||||
return await updateTitle({
|
return await updateTitle({
|
||||||
title,
|
title,
|
||||||
userId,
|
userId,
|
||||||
|
teamId,
|
||||||
documentId,
|
documentId,
|
||||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
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
|
setPasswordForDocument: authenticatedProcedure
|
||||||
.input(ZSetPasswordForDocumentMutationSchema)
|
.input(ZSetPasswordForDocumentMutationSchema)
|
||||||
.mutation(async ({ input, ctx }) => {
|
.mutation(async ({ input, ctx }) => {
|
||||||
@@ -251,7 +203,7 @@ export const documentRouter = router({
|
|||||||
.input(ZSendDocumentMutationSchema)
|
.input(ZSendDocumentMutationSchema)
|
||||||
.mutation(async ({ input, ctx }) => {
|
.mutation(async ({ input, ctx }) => {
|
||||||
try {
|
try {
|
||||||
const { documentId, meta } = input;
|
const { documentId, teamId, meta } = input;
|
||||||
|
|
||||||
if (meta.message || meta.subject || meta.timezone || meta.dateFormat || meta.redirectUrl) {
|
if (meta.message || meta.subject || meta.timezone || meta.dateFormat || meta.redirectUrl) {
|
||||||
await upsertDocumentMeta({
|
await upsertDocumentMeta({
|
||||||
@@ -269,6 +221,7 @@ export const documentRouter = router({
|
|||||||
return await sendDocument({
|
return await sendDocument({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
documentId,
|
documentId,
|
||||||
|
teamId,
|
||||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ export type TCreateDocumentMutationSchema = z.infer<typeof ZCreateDocumentMutati
|
|||||||
|
|
||||||
export const ZSetTitleForDocumentMutationSchema = z.object({
|
export const ZSetTitleForDocumentMutationSchema = z.object({
|
||||||
documentId: z.number(),
|
documentId: z.number(),
|
||||||
|
teamId: z.number().min(1).optional(),
|
||||||
title: z.string().min(1),
|
title: z.string().min(1),
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -46,6 +47,7 @@ export type TSetTitleForDocumentMutationSchema = z.infer<typeof ZSetTitleForDocu
|
|||||||
|
|
||||||
export const ZSetRecipientsForDocumentMutationSchema = z.object({
|
export const ZSetRecipientsForDocumentMutationSchema = z.object({
|
||||||
documentId: z.number(),
|
documentId: z.number(),
|
||||||
|
teamId: z.number().min(1).optional(),
|
||||||
recipients: z.array(
|
recipients: z.array(
|
||||||
z.object({
|
z.object({
|
||||||
id: z.number().nullish(),
|
id: z.number().nullish(),
|
||||||
@@ -82,6 +84,7 @@ export type TSetFieldsForDocumentMutationSchema = z.infer<
|
|||||||
|
|
||||||
export const ZSendDocumentMutationSchema = z.object({
|
export const ZSendDocumentMutationSchema = z.object({
|
||||||
documentId: z.number(),
|
documentId: z.number(),
|
||||||
|
teamId: z.number().optional(),
|
||||||
meta: z.object({
|
meta: z.object({
|
||||||
subject: z.string(),
|
subject: z.string(),
|
||||||
message: z.string(),
|
message: z.string(),
|
||||||
|
|||||||
@@ -17,11 +17,12 @@ export const recipientRouter = router({
|
|||||||
.input(ZAddSignersMutationSchema)
|
.input(ZAddSignersMutationSchema)
|
||||||
.mutation(async ({ input, ctx }) => {
|
.mutation(async ({ input, ctx }) => {
|
||||||
try {
|
try {
|
||||||
const { documentId, signers } = input;
|
const { documentId, teamId, signers } = input;
|
||||||
|
|
||||||
return await setRecipientsForDocument({
|
return await setRecipientsForDocument({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
documentId,
|
documentId,
|
||||||
|
teamId,
|
||||||
recipients: signers.map((signer) => ({
|
recipients: signers.map((signer) => ({
|
||||||
id: signer.nativeId,
|
id: signer.nativeId,
|
||||||
email: signer.email,
|
email: signer.email,
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { RecipientRole } from '@documenso/prisma/client';
|
|||||||
export const ZAddSignersMutationSchema = z
|
export const ZAddSignersMutationSchema = z
|
||||||
.object({
|
.object({
|
||||||
documentId: z.number(),
|
documentId: z.number(),
|
||||||
|
teamId: z.number().optional(),
|
||||||
signers: z.array(
|
signers: z.array(
|
||||||
z.object({
|
z.object({
|
||||||
nativeId: z.number().optional(),
|
nativeId: z.number().optional(),
|
||||||
|
|||||||
Reference in New Issue
Block a user