configureBrowser
uses tcmts.atproto.browserClient, which uses location
Set up the browser's OAuth client for these options, once per page (again only if they differ).
import { askedScope, browserClient, browserConfigured, signInServices } from "#codebase/tcmts/atproto"; import type { SignInOptions } from "#codebase/tcmts/atproto"; import { CompositeDidDocumentResolver, LocalActorResolver, PlcDidDocumentResolver, WebDidDocumentResolver, XrpcHandleResolver, } from "@atcute/identity-resolver"; import { configureOAuth } from "@atcute/oauth-browser-client"; export function configureBrowser(o: SignInOptions): Promise<void> { const key = JSON.stringify([askedScope(o), o.client ?? ""]); if (browserConfigured.key !== key || !browserConfigured.done) { browserConfigured.key = key; browserConfigured.done = signInServices().then((s) => configureOAuth({ metadata: browserClient(o), identityResolver: new LocalActorResolver({ handleResolver: new XrpcHandleResolver({ serviceUrl: s.appview as `https://${string}` }), didDocumentResolver: new CompositeDidDocumentResolver({ methods: { plc: new PlcDidDocumentResolver({ apiUrl: s.plc }), web: new WebDidDocumentResolver(), }, }), }), }), ); } return browserConfigured.done!; }
uses
- tcmts.atproto.SignInOptions
- tcmts.atproto.askedScope
- tcmts.atproto.browserClient
- tcmts.atproto.browserConfigured
- tcmts.atproto.signInServices