atproto explorer

move record verification outside resource

+16 -9
+16 -9
src/views/record.tsx
··· 1 import { Client, CredentialManager } from "@atcute/client"; 2 import { lexiconDoc } from "@atcute/lexicon-doc"; 3 - import { ActorIdentifier, is } from "@atcute/lexicons"; 4 import { A, useLocation, useNavigate, useParams } from "@solidjs/router"; 5 import { createResource, createSignal, ErrorBoundary, Show, Suspense } from "solid-js"; 6 import { Backlinks } from "../components/backlinks.jsx"; ··· 50 } 51 setCID(res.data.cid); 52 setExternalLink(checkUri(res.data.uri, res.data.value)); 53 54 try { 55 if (params.collection in lexicons) { 56 - if (is(lexicons[params.collection], res.data.value)) setValidSchema(true); 57 else setValidSchema(false); 58 } else if (params.collection === "com.atproto.lexicon.schema") { 59 try { 60 - lexiconDoc.parse(res.data.value, { mode: "passthrough" }); 61 setValidSchema(true); 62 } catch (e) { 63 console.error(e); ··· 66 } 67 const { errors } = await verifyRecord({ 68 rpc: rpc, 69 - uri: res.data.uri, 70 - cid: res.data.cid!, 71 - record: res.data.value, 72 - didDoc: didDocCache[res.data.uri.split("/")[2]], 73 }); 74 75 if (errors.length > 0) { ··· 81 console.error(err); 82 setValidRecord(false); 83 } 84 - 85 - return res.data; 86 }; 87 88 const [record, { refetch }] = createResource(fetchRecord);
··· 1 import { Client, CredentialManager } from "@atcute/client"; 2 import { lexiconDoc } from "@atcute/lexicon-doc"; 3 + import { ActorIdentifier, is, ResourceUri } from "@atcute/lexicons"; 4 import { A, useLocation, useNavigate, useParams } from "@solidjs/router"; 5 import { createResource, createSignal, ErrorBoundary, Show, Suspense } from "solid-js"; 6 import { Backlinks } from "../components/backlinks.jsx"; ··· 50 } 51 setCID(res.data.cid); 52 setExternalLink(checkUri(res.data.uri, res.data.value)); 53 + verify(res.data); 54 55 + return res.data; 56 + }; 57 + 58 + const verify = async (record: { 59 + uri: ResourceUri; 60 + value: Record<string, unknown>; 61 + cid?: string | undefined; 62 + }) => { 63 try { 64 if (params.collection in lexicons) { 65 + if (is(lexicons[params.collection], record.value)) setValidSchema(true); 66 else setValidSchema(false); 67 } else if (params.collection === "com.atproto.lexicon.schema") { 68 try { 69 + lexiconDoc.parse(record.value, { mode: "passthrough" }); 70 setValidSchema(true); 71 } catch (e) { 72 console.error(e); ··· 75 } 76 const { errors } = await verifyRecord({ 77 rpc: rpc, 78 + uri: record.uri, 79 + cid: record.cid!, 80 + record: record.value, 81 + didDoc: didDocCache[record.uri.split("/")[2]], 82 }); 83 84 if (errors.length > 0) { ··· 90 console.error(err); 91 setValidRecord(false); 92 } 93 }; 94 95 const [record, { refetch }] = createResource(fetchRecord);