This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

avatar: let PLC_DIRECTORY_URL point the resolver elsewhere

Signed-off-by: dawn <dawn@tangled.org>

author
dawn
date (Jul 31, 2026, 10:54 PM +0300) commit c3a55d42 parent 857ef538 change-id olxzwmxm
+24 -11
+3
avatar/readme.md
··· 3 3 avatar is a small service that fetches your pretty Bluesky avatar and caches it on Cloudflare. 4 4 It uses a shared secret `AVATAR_SHARED_SECRET` to ensure requests only originate from the trusted appview. 5 5 6 + Set `PLC_DIRECTORY_URL` to resolve DIDs somewhere other than <https://plc.directory>, 7 + which a self-hosted network needs. 8 + 6 9 It's deployed using `wrangler` like so: 7 10 8 11 ```
+21 -11
avatar/src/index.js
··· 19 19 }, 20 20 }); 21 21 22 - const didDocumentResolver = new CompositeDidDocumentResolver({ 23 - methods: { 24 - plc: new PlcDidDocumentResolver(), 25 - web: new WebDidDocumentResolver(), 26 - }, 27 - }); 22 + // env only reaches us inside fetch, so the resolver is built on the first 23 + // request and kept after that 24 + let actorResolver; 25 + let resolverApiUrl; 28 26 29 - const actorResolver = new LocalActorResolver({ 30 - handleResolver, 31 - didDocumentResolver, 32 - }); 27 + const getActorResolver = (env) => { 28 + const apiUrl = env.PLC_DIRECTORY_URL || undefined; 29 + if (!actorResolver || resolverApiUrl !== apiUrl) { 30 + resolverApiUrl = apiUrl; 31 + actorResolver = new LocalActorResolver({ 32 + handleResolver, 33 + didDocumentResolver: new CompositeDidDocumentResolver({ 34 + methods: { 35 + plc: new PlcDidDocumentResolver(apiUrl ? { apiUrl } : {}), 36 + web: new WebDidDocumentResolver(), 37 + }, 38 + }), 39 + }); 40 + } 41 + return actorResolver; 42 + }; 33 43 34 44 export default { 35 45 async fetch(request, env) { ··· 51 61 const getTangledAvatarFromPDS = async (actor) => { 52 62 try { 53 63 // Resolve the identity 54 - const identity = await actorResolver.resolve(actor); 64 + const identity = await getActorResolver(env).resolve(actor); 55 65 if (!identity) { 56 66 console.log({ 57 67 level: "debug",