configure

tcmts.registry.session.configure · #6kyo6ghy · term · runs in the browser

uses tcmts.registry.session.clientMetadata, which uses location

Set up the OAuth client, once per page.

import { registryServices } from "#codebase/tcmts/registry";
import { clientMetadata, configured } from "#codebase/tcmts/registry/session";
import {
  CompositeDidDocumentResolver, LocalActorResolver, PlcDidDocumentResolver, WebDidDocumentResolver,
  XrpcHandleResolver,
} from "@atcute/identity-resolver";
import { configureOAuth } from "@atcute/oauth-browser-client";

export function configure(): Promise<void> {
  configured.done ??= registryServices().then((s) =>
    configureOAuth({
      metadata: clientMetadata(),
      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 configured.done!;
}

uses

used by