From aa925ce8a52c187649936444d21f72652d3ef07d Mon Sep 17 00:00:00 2001 From: Jared Pereira Date: Thu, 30 Apr 2026 14:54:58 -0400 Subject: [PATCH] update subscription flow --- components/Subscribe/SubscribeButton.tsx | 65 +++++++++++++--------- components/Subscribe/viewerSubscription.ts | 20 ++++--- 2 files changed, 51 insertions(+), 34 deletions(-) diff --git a/components/Subscribe/SubscribeButton.tsx b/components/Subscribe/SubscribeButton.tsx index a4f81008..6b565773 100644 --- a/components/Subscribe/SubscribeButton.tsx +++ b/components/Subscribe/SubscribeButton.tsx @@ -47,12 +47,15 @@ export const SubscribePanel = (props: SubscribeProps) => { export const SubscribeButton = (props: SubscribeProps) => { const user = useViewerSubscription(props.publicationUri); + const showManage = props.newsletterMode + ? user.emailSubscribed + : user.atprotoSubscribed; return ( { setConfirmOpen(true); }; - const isSubscribed = user.subscribed || locallySubscribed; + const showManage = props.newsletterMode + ? user.emailSubscribed + : user.atprotoSubscribed; + const isSubscribed = showManage || locallySubscribed; return ( <> {isSubscribed ? ( @@ -129,30 +135,37 @@ export const SubscribeInput = (props: SubscribeProps) => { user={user} /> ) : props.newsletterMode ? ( - { - if (requesting) return; - if (needsLinkConfirmation) { - setLinkModalOpen(true); - return; - } - await sendRequest(false); - }} - > - Subscribe - - } - /> + <> + {user.atprotoSubscribed && ( +
+ You're already subscribed with atproto. Subscribe with email too? +
+ )} + { + if (requesting) return; + if (needsLinkConfirmation) { + setLinkModalOpen(true); + return; + } + await sendRequest(false); + }} + > + Subscribe + + } + /> + ) : ( { - const subscribed = + const atprotoSubscribed = !!identity && - ((identity.publication_subscriptions ?? []).some( + (identity.publication_subscriptions ?? []).some( (s) => s.publication === publicationUri, - ) || - (identity.publication_email_subscribers ?? []).some( - (s) => s.publication === publicationUri && s.state === "confirmed", - )); + ); + const emailSubscribed = + !!identity && + (identity.publication_email_subscribers ?? []).some( + (s) => s.publication === publicationUri && s.state === "confirmed", + ); return { loggedIn: !!identity, email: identity?.email ?? undefined, handle: identity?.bsky_profiles?.handle ?? undefined, - subscribed, + atprotoSubscribed, + emailSubscribed, }; }, [identity, publicationUri]); } -- 2.51.2