import { configureOAuth, defaultIdentityResolver, } from '@atcute/oauth-browser-client'; import { CompositeDidDocumentResolver, PlcDidDocumentResolver, WebDidDocumentResolver, XrpcHandleResolver, } from '@atcute/identity-resolver'; export interface GuestbookConfig { oauth: { clientId: string; redirectUri: string; scope: string; }; services?: { handleResolver?: string; }; } let configured = false; let storedConfig: GuestbookConfig | null = null; /** * Configure the guestbook components with OAuth settings. * Must be called before using . */ export function configureGuestbook(config: GuestbookConfig) { if (configured) { console.warn('Guestbook already configured'); return; } storedConfig = config; configureOAuth({ metadata: { client_id: config.oauth.clientId, redirect_uri: config.oauth.redirectUri, }, identityResolver: defaultIdentityResolver({ handleResolver: new XrpcHandleResolver({ serviceUrl: config.services?.handleResolver ?? 'https://slingshot.wisp.place' }), didDocumentResolver: new CompositeDidDocumentResolver({ methods: { plc: new PlcDidDocumentResolver(), web: new WebDidDocumentResolver(), }, }), }), }); configured = true; } /** * Check if guestbook has been configured */ export function isConfigured(): boolean { return configured; } /** * Get the stored config */ export function getConfig(): GuestbookConfig | null { return storedConfig; }