From 47e0fa40cad7b72b278a9fb11b773b7f649b6fa3 Mon Sep 17 00:00:00 2001 From: ephraimduncan Date: Wed, 11 Feb 2026 15:54:29 +0000 Subject: [PATCH] fix: guard send dialogs against org claim races First-open send flows can render before organisationClaim is available. Guard email-domain access and delay sender lookup to avoid route 500s. --- .../dialogs/envelope-distribute-dialog.tsx | 18 ++++++++++++------ .../primitives/document-flow/add-subject.tsx | 16 +++++++++++----- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx b/apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx index ca244ade4..ac742e2f2 100644 --- a/apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx +++ b/apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx @@ -82,6 +82,7 @@ export const EnvelopeDistributeDialog = ({ onDistribute, }: EnvelopeDistributeDialogProps) => { const organisation = useCurrentOrganisation(); + const hasOrganisationEmailDomains = Boolean(organisation.organisationClaim?.flags.emailDomains); const { envelope, syncEnvelope, isAutosaving, autosaveError } = useCurrentEnvelopeEditor(); @@ -116,10 +117,15 @@ export const EnvelopeDistributeDialog = ({ } = form; const { data: emailData, isLoading: isLoadingEmails } = - trpc.enterprise.organisation.email.find.useQuery({ - organisationId: organisation.id, - perPage: 100, - }); + trpc.enterprise.organisation.email.find.useQuery( + { + organisationId: organisation.id, + perPage: 100, + }, + { + enabled: isOpen && hasOrganisationEmailDomains, + }, + ); const emails = emailData?.data || []; @@ -268,7 +274,7 @@ export const EnvelopeDistributeDialog = ({
@@ -293,7 +299,7 @@ export const EnvelopeDistributeDialog = ({ className="mt-2 flex flex-col gap-y-4 rounded-lg" disabled={form.formState.isSubmitting} > - {organisation.organisationClaim.flags.emailDomains && ( + {hasOrganisationEmailDomains && ( ({ defaultValues: { @@ -106,10 +107,15 @@ export const AddSubjectFormPartial = ({ } = form; const { data: emailData, isLoading: isLoadingEmails } = - trpc.enterprise.organisation.email.find.useQuery({ - organisationId: organisation.id, - perPage: 100, - }); + trpc.enterprise.organisation.email.find.useQuery( + { + organisationId: organisation.id, + perPage: 100, + }, + { + enabled: hasOrganisationEmailDomains, + }, + ); const emails = emailData?.data || []; @@ -212,7 +218,7 @@ export const AddSubjectFormPartial = ({ className="flex flex-col gap-y-4 rounded-lg border p-4" disabled={form.formState.isSubmitting} > - {organisation.organisationClaim.flags.emailDomains && ( + {hasOrganisationEmailDomains && (