atproto explorer pdsls.dev
atproto tool

fix handle resolution

juli.ee 2e07016d f8898e18

verified
Changed files
+8 -14
src
components
utils
views
+1 -1
src/components/navbar.tsx
···
didDocCache[props.params.repo]?.alsoKnownAs
?.filter((alias) => alias.startsWith("at://"))[0]
.split("at://")[1] ?? props.params.repo;
-
if (hdl !== handle()) {
+
if (hdl !== handle() || validHandle() === undefined) {
setValidHandle(undefined);
setHandle(hdl);
setValidHandle(await validateHandle(hdl as Handle, props.params.repo as Did));
+6 -11
src/utils/api.ts
···
DohJsonHandleResolver,
PlcDidDocumentResolver,
WellKnownHandleResolver,
-
XrpcHandleResolver,
} from "@atcute/identity-resolver";
import { Did, Handle } from "@atcute/lexicons";
import { isHandle } from "@atcute/lexicons/syntax";
···
},
});
-
const handleResolver = new XrpcHandleResolver({
-
serviceUrl: "https://public.api.bsky.app",
+
const handleResolver = new CompositeHandleResolver({
+
strategy: "dns-first",
+
methods: {
+
dns: new DohJsonHandleResolver({ dohUrl: "https://dns.google/resolve?" }),
+
http: new WellKnownHandleResolver(),
+
},
});
const didPDSCache: Record<string, string> = {};
···
const validateHandle = async (handle: Handle, did: Did) => {
if (!isHandle(handle)) return false;
-
-
const handleResolver = new CompositeHandleResolver({
-
strategy: "dns-first",
-
methods: {
-
dns: new DohJsonHandleResolver({ dohUrl: "https://dns.google/resolve?" }),
-
http: new WellKnownHandleResolver(),
-
},
-
});
let resolvedDid: string;
try {
+1 -2
src/views/repo.tsx
···
} from "@atcute/did-plc";
import { DidDocument } from "@atcute/identity";
import { ActorIdentifier, Handle } from "@atcute/lexicons";
-
import { resolveHandle } from "@atcute/oauth-browser-client";
import { A, useLocation, useNavigate, useParams } from "@solidjs/router";
import { createResource, createSignal, ErrorBoundary, For, Show, Suspense } from "solid-js";
import { Backlinks } from "../components/backlinks.jsx";
import { Button } from "../components/button.jsx";
import { TextInput } from "../components/text-input.jsx";
import Tooltip from "../components/tooltip.jsx";
-
import { didDocCache, resolvePDS } from "../utils/api.js";
+
import { didDocCache, resolveHandle, resolvePDS } from "../utils/api.js";
import { localDateFromTimestamp } from "../utils/date.js";
import { createOperationHistory, DiffEntry, groupBy } from "../utils/plc-logs.js";
import { BlobView } from "./blob.jsx";