a tool for shared writing and social publishing
0

Configure Feed

Select the types of activity you want to include in your feed.

show oauth session error

Jared Pereira (May 1, 2026, 9:12 PM EDT) 42b2f2f4 c42d106c

+13 -4
+8 -2
actions/publications/subscribeEmail.tsx
··· 22 22 publishAtprotoSubscriptionForDid, 23 23 unsubscribeToPublication, 24 24 } from "app/lish/subscribeToPublication"; 25 + import type { OAuthSessionError } from "src/atproto-oauth"; 25 26 import { normalizePublicationRecord } from "src/utils/normalizeRecords"; 26 27 27 28 type RequestError = ··· 36 37 | "link_invalid_state" 37 38 | "email_belongs_to_other_account" 38 39 | ConfirmationError; 39 - type UnsubscribeError = "unauthorized" | "not_subscribed" | "database_error"; 40 + type UnsubscribeError = 41 + | "unauthorized" 42 + | "not_subscribed" 43 + | "database_error" 44 + | OAuthSessionError; 40 45 41 46 export async function requestPublicationEmailSubscription( 42 47 publicationUri: string, ··· 315 320 } 316 321 317 322 if (atprotoSub) { 318 - await unsubscribeToPublication(publicationUri); 323 + const atprotoResult = await unsubscribeToPublication(publicationUri); 324 + if (!atprotoResult.success) return Err(atprotoResult.error); 319 325 } 320 326 321 327 // NOTE: Postmark Suppressions API is deliberately NOT called here. Per spec,
+5 -2
components/Subscribe/ManageSubscribe.tsx
··· 6 6 import { GoToArrow } from "components/Icons/GoToArrow"; 7 7 import { Modal } from "components/Modal"; 8 8 import { useToaster } from "components/Toast"; 9 + import { isOAuthSessionError, OAuthErrorMessage } from "components/OAuthError"; 9 10 import { LinkHandle } from "./HandleSubscribe"; 10 11 import { EmailInput, EmailConfirm } from "./EmailSubscribe"; 11 12 import type { ViewerUser } from "./viewerSubscription"; ··· 102 103 if (!res.ok) { 103 104 toaster({ 104 105 type: "error", 105 - content: ( 106 + content: isOAuthSessionError(res.error) ? ( 107 + <OAuthErrorMessage error={res.error} /> 108 + ) : ( 106 109 <div className="font-bold"> 107 - {UNSUBSCRIBE_ERROR_MESSAGES[res.error]} 110 + {UNSUBSCRIBE_ERROR_MESSAGES[res.error] ?? "Couldn't unsubscribe."} 108 111 </div> 109 112 ), 110 113 });