diff --git a/actions/publications/subscribeEmail.tsx b/actions/publications/subscribeEmail.tsx index 96c16bf5..ee091346 100644 --- a/actions/publications/subscribeEmail.tsx +++ b/actions/publications/subscribeEmail.tsx @@ -20,6 +20,7 @@ import { publishAtprotoSubscriptionForDid, unsubscribeToPublication, } from "app/lish/subscribeToPublication"; +import { normalizePublicationRecord } from "src/utils/normalizeRecords"; type RequestError = | "invalid_email" @@ -38,15 +39,24 @@ export async function requestPublicationEmailSubscription( const email = emailRaw.trim().toLowerCase(); if (!EMAIL_REGEX.test(email)) return Err("invalid_email"); - const [{ data: settings }, identity] = await Promise.all([ - supabaseServerClient - .from("publication_newsletter_settings") - .select("enabled") - .eq("publication", publicationUri) - .maybeSingle(), - getIdentityData(), - ]); + const [{ data: settings }, { data: publication }, identity] = + await Promise.all([ + supabaseServerClient + .from("publication_newsletter_settings") + .select("enabled") + .eq("publication", publicationUri) + .maybeSingle(), + supabaseServerClient + .from("publications") + .select("record") + .eq("uri", publicationUri) + .maybeSingle(), + getIdentityData(), + ]); if (!settings?.enabled) return Err("newsletter_disabled"); + const normalizedPub = normalizePublicationRecord(publication?.record); + const pubName = normalizedPub?.name; + const pubUrl = normalizedPub?.url; // Postmark suppression check: the broadcast stream is shared across all // pubs, so a prior SpamComplaint or HardBounce on ANY publication blocks @@ -146,6 +156,8 @@ export async function requestPublicationEmailSubscription( template: ( ), diff --git a/emails/pubConfirmEmail.tsx b/emails/pubConfirmEmail.tsx index bbe13b4d..cf1970c9 100644 --- a/emails/pubConfirmEmail.tsx +++ b/emails/pubConfirmEmail.tsx @@ -4,6 +4,7 @@ import { Container, Html, Img, + Link, Row, Tailwind, } from "@react-email/components"; @@ -18,6 +19,8 @@ import { export const PubConfirmEmail = (props: { code?: string; assetsBaseUrl?: string; + publicationName?: string; + publicationUrl?: string; }) => { const staticUrl = makeStaticUrl( props.assetsBaseUrl ?? "https://leaflet.pub", @@ -48,9 +51,20 @@ export const PubConfirmEmail = (props: { - - Leaflet Explorers - + {props.publicationUrl ? ( + + + {props.publicationName ?? "Leaflet Explorers"} + + + ) : ( + + {props.publicationName ?? "Leaflet Explorers"} + + )}