From 42b2f2f403e1d2d034cf1c0a1bd8cc6e277cc04f Mon Sep 17 00:00:00 2001 From: Jared Pereira Date: Fri, 1 May 2026 21:09:31 -0400 Subject: [PATCH] show oauth session error --- actions/publications/subscribeEmail.tsx | 10 ++++++++-- components/Subscribe/ManageSubscribe.tsx | 7 +++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/actions/publications/subscribeEmail.tsx b/actions/publications/subscribeEmail.tsx index 554a84cb..3b63096f 100644 --- a/actions/publications/subscribeEmail.tsx +++ b/actions/publications/subscribeEmail.tsx @@ -22,6 +22,7 @@ import { publishAtprotoSubscriptionForDid, unsubscribeToPublication, } from "app/lish/subscribeToPublication"; +import type { OAuthSessionError } from "src/atproto-oauth"; import { normalizePublicationRecord } from "src/utils/normalizeRecords"; type RequestError = @@ -36,7 +37,11 @@ type ConfirmError = | "link_invalid_state" | "email_belongs_to_other_account" | ConfirmationError; -type UnsubscribeError = "unauthorized" | "not_subscribed" | "database_error"; +type UnsubscribeError = + | "unauthorized" + | "not_subscribed" + | "database_error" + | OAuthSessionError; export async function requestPublicationEmailSubscription( publicationUri: string, @@ -315,7 +320,8 @@ export async function unsubscribeFromPublication( } if (atprotoSub) { - await unsubscribeToPublication(publicationUri); + const atprotoResult = await unsubscribeToPublication(publicationUri); + if (!atprotoResult.success) return Err(atprotoResult.error); } // NOTE: Postmark Suppressions API is deliberately NOT called here. Per spec, diff --git a/components/Subscribe/ManageSubscribe.tsx b/components/Subscribe/ManageSubscribe.tsx index 003481e4..fcf34569 100644 --- a/components/Subscribe/ManageSubscribe.tsx +++ b/components/Subscribe/ManageSubscribe.tsx @@ -6,6 +6,7 @@ import { CheckTiny } from "components/Icons/CheckTiny"; import { GoToArrow } from "components/Icons/GoToArrow"; import { Modal } from "components/Modal"; import { useToaster } from "components/Toast"; +import { isOAuthSessionError, OAuthErrorMessage } from "components/OAuthError"; import { LinkHandle } from "./HandleSubscribe"; import { EmailInput, EmailConfirm } from "./EmailSubscribe"; import type { ViewerUser } from "./viewerSubscription"; @@ -102,9 +103,11 @@ export const ManageSubscription = (props: { if (!res.ok) { toaster({ type: "error", - content: ( + content: isOAuthSessionError(res.error) ? ( + + ) : (
- {UNSUBSCRIBE_ERROR_MESSAGES[res.error]} + {UNSUBSCRIBE_ERROR_MESSAGES[res.error] ?? "Couldn't unsubscribe."}
), }); -- 2.54.0