--- a/src/state/session/agent.ts +++ b/src/state/session/agent.ts @@ -43,12 +43,18 @@ export type ProxyHeaderValue = `${Did}#${AtprotoServiceType}` +// Default Bluesky proxy DID for non-self-hosted accounts (bsky.social etc.) +const DEFAULT_BSKY_PROXY: ProxyHeaderValue = 'did:web:api.bsky.app#bsky_appview' + +function shouldUseProxy(serviceUrl: string): boolean { + return !serviceUrl.startsWith(BSKY_SERVICE) +} + export function createPublicAgent() { configureModerationForGuest() // Side effect but only relevant for tests const agent = new BskyAppAgent({service: PUBLIC_BSKY_SERVICE}) - // Disable proxy for self-hosted environments - // agent.configureProxy(BLUESKY_PROXY_HEADER.get()) + // Self-hosted public agent doesn't need proxy return agent } @@ -91,8 +97,10 @@ // after session is attached const aa = prefetchAgeAssuranceData({agent}) - // Disable proxy for self-hosted environments - // agent.configureProxy(BLUESKY_PROXY_HEADER.get()) + // Enable proxy only for non-self-hosted accounts (e.g. bsky.social) + if (shouldUseProxy(storedAccount.service)) { + agent.configureProxy(DEFAULT_BSKY_PROXY) + } return agent.prepare({ resolvers: [gates, moderation, aa], @@ -131,8 +139,10 @@ const moderation = configureModerationForAccount(agent, account) const aa = prefetchAgeAssuranceData({agent}) - // Disable proxy for self-hosted environments - // agent.configureProxy(BLUESKY_PROXY_HEADER.get()) + // Enable proxy only for non-self-hosted accounts (e.g. bsky.social) + if (shouldUseProxy(service)) { + agent.configureProxy(DEFAULT_BSKY_PROXY) + } return agent.prepare({ resolvers: [gates, moderation, aa], @@ -304,8 +314,10 @@ logger.error(e, {message: `session: failed snoozeEmailConfirmationPrompt`}) } - // Disable proxy for self-hosted environments - // agent.configureProxy(BLUESKY_PROXY_HEADER.get()) + // Enable proxy only for non-self-hosted accounts (e.g. bsky.social) + if (shouldUseProxy(service)) { + agent.configureProxy(DEFAULT_BSKY_PROXY) + } return agent.prepare({ resolvers: [gates, moderation, aa],