From 9acf3b8e7f71e733df6de965f48ac1d153ffdb8e Mon Sep 17 00:00:00 2001 From: Jessica Lawshe <5312836+lawshe@users.noreply.github.com> Date: Tue, 19 May 2026 09:17:10 -0500 Subject: [PATCH] Merge pull request #33610 from overleaf/jel-hostname-capturedByGroup [web] Check `capturedByGroup` when adding new email GitOrigin-RevId: f9ef3d4cc7387dc0139a70aecd6cfcb20170abc6 --- .../settings/components/emails/add-email.tsx | 37 ++- .../components/emails/add-email/input.tsx | 1 + .../js/features/settings/utils/sso.ts | 5 +- .../emails-section-add-new-email.test.tsx | 232 ++++++++++++++++-- ...ails-section-institution-and-role.test.tsx | 13 +- .../components/emails/emails-section.test.tsx | 35 ++- .../features/settings/utils/sso.test.ts | 93 +++++++ 7 files changed, 372 insertions(+), 44 deletions(-) create mode 100644 services/web/test/frontend/features/settings/utils/sso.test.ts diff --git a/services/web/frontend/js/features/settings/components/emails/add-email.tsx b/services/web/frontend/js/features/settings/components/emails/add-email.tsx index f976ecb83e..d2722c269d 100644 --- a/services/web/frontend/js/features/settings/components/emails/add-email.tsx +++ b/services/web/frontend/js/features/settings/components/emails/add-email.tsx @@ -22,6 +22,17 @@ import { ConfirmEmailForm } from '@/features/settings/components/emails/confirm- import RecaptchaConditions from '@/shared/components/recaptcha-conditions' import SsoLinkingInfoGroup from './add-email/sso-linking-info-group' import Notification from '@/shared/components/notification' +import { useFeatureFlag } from '@/shared/context/split-test-context' + +function isDomainCapturedByGroup( + domainInfo: DomainInfo, + domainCapturedByGroupRolloutFlagEnabled: boolean +): boolean { + return domainCapturedByGroupRolloutFlagEnabled + ? (domainInfo.capturedByGroup && domainInfo.group?.domainCaptureEnabled) || + false + : domainInfo.group?.domainCaptureEnabled || false +} function AddEmail() { const { t } = useTranslation() @@ -49,6 +60,10 @@ function AddEmail() { const emailAddressLimit = getMeta('ol-emailAddressLimit') || 10 const { ref: recaptchaRef, getReCaptchaToken } = useRecaptcha() + const domainCapturedByGroupRolloutFlagEnabled = useFeatureFlag( + 'domain-captured-by-group' + ) + useEffect(() => { setUserEmailsContextLoading(isLoading) }, [setUserEmailsContextLoading, isLoading]) @@ -196,8 +211,15 @@ function AddEmail() { ) } + const isDomainCaptured = newEmailMatchedDomain + ? isDomainCapturedByGroup( + newEmailMatchedDomain, + domainCapturedByGroupRolloutFlagEnabled + ) + : false const isSsoAvailableForDomain = - newEmailMatchedDomain && ssoAvailableForDomain(newEmailMatchedDomain) + newEmailMatchedDomain && + ssoAvailableForDomain(newEmailMatchedDomain, isDomainCaptured) return (