atprotocol stickers
1import { configureOAuth } from '@atcute/oauth-browser-client';
2import {
3 LocalActorResolver,
4 CompositeDidDocumentResolver,
5 PlcDidDocumentResolver,
6 XrpcDidDocumentResolver,
7 CompositeHandleResolver,
8 WellKnownHandleResolver,
9 DohJsonHandleResolver
10} from '@atcute/identity-resolver';
11
12let configured = false;
13
14export function ensureOAuthConfigured() {
15 if (configured) return;
16 configured = true;
17
18 const didDocumentResolver = new CompositeDidDocumentResolver({
19 methods: {
20 plc: new PlcDidDocumentResolver(),
21 web: new XrpcDidDocumentResolver({ serviceUrl: 'https://bsky.social' })
22 }
23 });
24
25 const handleResolver = new CompositeHandleResolver({
26 methods: {
27 http: new WellKnownHandleResolver(),
28 dns: new DohJsonHandleResolver({ dohUrl: 'https://cloudflare-dns.com/dns-query' })
29 }
30 });
31
32 const identityResolver = new LocalActorResolver({ handleResolver, didDocumentResolver });
33
34 const isLocalhost =
35 window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1';
36 const port = window.location.port || '5173';
37
38 configureOAuth({
39 metadata: isLocalhost
40 ? {
41 client_id: `http://localhost?redirect_uri=${encodeURIComponent('http://127.0.0.1/oauth/callback')}&scope=${encodeURIComponent('atproto transition:generic')}`,
42 redirect_uri: `http://127.0.0.1:${port}/oauth/callback`
43 }
44 : {
45 client_id: 'https://stickies.sky.boo/client-metadata.json',
46 redirect_uri: 'https://stickies.sky.boo/oauth/callback'
47 },
48 identityResolver
49 });
50}