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.
This commit is contained in:
ephraimduncan
2026-02-11 15:54:29 +00:00
parent f1c91c4951
commit 47e0fa40ca
2 changed files with 23 additions and 11 deletions
@@ -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 = ({
<div
className={cn('min-h-72', {
'min-h-[23rem]': organisation.organisationClaim.flags.emailDomains,
'min-h-[23rem]': hasOrganisationEmailDomains,
})}
>
<AnimatePresence initial={false} mode="wait">
@@ -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 && (
<FormField
control={form.control}
name="meta.emailId"
@@ -79,6 +79,7 @@ export const AddSubjectFormPartial = ({
const { _ } = useLingui();
const organisation = useCurrentOrganisation();
const hasOrganisationEmailDomains = Boolean(organisation.organisationClaim?.flags.emailDomains);
const form = useForm<TAddSubjectFormSchema>({
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 && (
<FormField
control={form.control}
name="meta.emailId"