atproto explorer

add lex: for NSID search

handle.invalid 19822f39 b89c4a89

verified
+7 -1
+7 -1
src/components/search.tsx
··· 1 import { Client, CredentialManager } from "@atcute/client"; 2 import { A, useLocation, useNavigate } from "@solidjs/router"; 3 import { createResource, createSignal, For, onCleanup, onMount, Show } from "solid-js"; 4 import { isTouchDevice } from "../layout"; 5 import { appHandleLink, appList, appName, AppUrl } from "../utils/app-urls"; 6 import { createDebouncedValue } from "../utils/hooks/debounced"; 7 import { Modal } from "./modal"; ··· 64 const [input, setInput] = createSignal<string>(); 65 const [search] = createResource(createDebouncedValue(input, 250), fetchTypeahead); 66 67 - const processInput = (input: string) => { 68 input = input.trim().replace(/^@/, ""); 69 if (!input.length) return; 70 setShowSearch(false); ··· 83 const uri = appHandleLink[app](path); 84 navigate(`/${uri}`); 85 } 86 } else { 87 navigate(`/at://${input.replace("at://", "")}`); 88 }
··· 1 import { Client, CredentialManager } from "@atcute/client"; 2 + import { Nsid } from "@atcute/lexicons"; 3 import { A, useLocation, useNavigate } from "@solidjs/router"; 4 import { createResource, createSignal, For, onCleanup, onMount, Show } from "solid-js"; 5 import { isTouchDevice } from "../layout"; 6 + import { resolveLexiconAuthority } from "../utils/api"; 7 import { appHandleLink, appList, appName, AppUrl } from "../utils/app-urls"; 8 import { createDebouncedValue } from "../utils/hooks/debounced"; 9 import { Modal } from "./modal"; ··· 66 const [input, setInput] = createSignal<string>(); 67 const [search] = createResource(createDebouncedValue(input, 250), fetchTypeahead); 68 69 + const processInput = async (input: string) => { 70 input = input.trim().replace(/^@/, ""); 71 if (!input.length) return; 72 setShowSearch(false); ··· 85 const uri = appHandleLink[app](path); 86 navigate(`/${uri}`); 87 } 88 + } else if (input.startsWith("lex:")) { 89 + const nsid = input.replace("lex:", "") as Nsid; 90 + const res = await resolveLexiconAuthority(nsid); 91 + navigate(`/at://${res}/com.atproto.lexicon.schema/${nsid}`); 92 } else { 93 navigate(`/at://${input.replace("at://", "")}`); 94 }