diff --git a/dotcom-rendering/package.json b/dotcom-rendering/package.json index 0efffba19ba..318dc36a3d6 100644 --- a/dotcom-rendering/package.json +++ b/dotcom-rendering/package.json @@ -29,7 +29,7 @@ "@emotion/server": "11.11.0", "@guardian/ab-testing-config": "workspace:ab-testing-config", "@guardian/braze-components": "23.0.2", - "@guardian/bridget": "8.13.1", + "@guardian/bridget": "8.14.0", "@guardian/browserslist-config": "6.1.0", "@guardian/cdk": "catalog:", "@guardian/commercial-core": "34.0.0", diff --git a/dotcom-rendering/src/lib/useNewsletterSignupForm.ts b/dotcom-rendering/src/lib/useNewsletterSignupForm.ts index cc48cda4915..e12c0050aee 100644 --- a/dotcom-rendering/src/lib/useNewsletterSignupForm.ts +++ b/dotcom-rendering/src/lib/useNewsletterSignupForm.ts @@ -5,6 +5,7 @@ import type React from 'react'; import { useCallback, useEffect, useRef, useState } from 'react'; import type ReactGoogleRecaptcha from 'react-google-recaptcha'; import type { RenderingTarget } from '../types/renderingTarget'; +import { getNewslettersClient } from './bridgetApi'; import { lazyFetchEmailWithTimeout } from './fetchEmail'; import { getEffectiveMarketingOptIn, @@ -305,18 +306,38 @@ export const useNewsletterSignupForm = ( useEffect(() => { setCaptchaSiteKey(window.guardian.config.page.googleRecaptchaSiteKey); }, []); + useEffect(() => { - if (emailFetchStartedRef.current) return; - if (isSignedIn === 'Pending') return; - emailFetchStartedRef.current = true; - - void resolveUserEmail(isSignedIn).then((email) => { - if (!isString(email)) return; - setUserEmail(email); - setHasPrefilledEmail(true); - setIsInteracted(true); - }); - }, [isSignedIn]); + if (renderingTarget === 'Apps') { + // Fill in email using apps bridget API + void getNewslettersClient() + .getLoggedInUserEmail() + .then((maybeEmail) => { + const email = maybeEmail.emailAddress; + if (!email) return; + setUserEmail(email); + setHasPrefilledEmail(true); + setIsInteracted(true); + }) + .catch((reason) => { + console.log( + 'Failed to getLoggedInUserEmail from bridget ', + reason, + ); + }); + } else { + if (emailFetchStartedRef.current) return; + if (isSignedIn === 'Pending') return; + emailFetchStartedRef.current = true; + + void resolveUserEmail(isSignedIn).then((email) => { + if (!isString(email)) return; + setUserEmail(email); + setHasPrefilledEmail(true); + setIsInteracted(true); + }); + } + }, [isSignedIn, renderingTarget]); const submitForm = useCallback( async (emailAddress: string, token: string): Promise => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0b4e7d6027d..8d00577aa6f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -318,8 +318,8 @@ importers: specifier: 23.0.2 version: 23.0.2(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@guardian/libs@32.0.0(@guardian/ophan-tracker-js@5.1.1)(tslib@2.6.2)(typescript@6.0.3))(@guardian/source@12.2.1(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@6.0.3))(react@18.3.1) '@guardian/bridget': - specifier: 8.13.1 - version: 8.13.1 + specifier: 8.14.0 + version: 8.14.0 '@guardian/browserslist-config': specifier: 6.1.0 version: 6.1.0(browserslist@4.24.4)(tslib@2.6.2) @@ -2641,8 +2641,8 @@ packages: '@guardian/source': 12.2.0 react: 17.0.2 || 18.2.0 - '@guardian/bridget@8.13.1': - resolution: {integrity: sha512-aSza9vG5hPqB0x3mX0ZUTBWbT1vB3k567KWGy6tVoWPw7vSolFD82qo03YcUYqE7AJbe/XHwJp74PaSMsG//Ow==} + '@guardian/bridget@8.14.0': + resolution: {integrity: sha512-0ZYPSGaevgaVBceFHC21nFhy0SIaMb8eaVy4xQwBJN6UYc5oucexvY/X4v3BDu4+huQ0SjcLddQBwVrHYRJltw==} '@guardian/browserslist-config@6.1.0': resolution: {integrity: sha512-qM0QxAv6E5IHXny5Okli6AZXEio0mpXzzEzz38qrb4IwO91R6eWVKyihdj0qW2k7TVxMFVOSfNmBZ1H5EiJhgw==} @@ -12571,7 +12571,7 @@ snapshots: '@guardian/source': 12.2.1(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@6.0.3) react: 18.3.1 - '@guardian/bridget@8.13.1': {} + '@guardian/bridget@8.14.0': {} '@guardian/browserslist-config@6.1.0(browserslist@4.24.4)(tslib@2.6.2)': dependencies: