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"}
+
+ )}