BlueSky & more on desktop
lazurite.stormlightlabs.org/
tauri
rust
typescript
bluesky
appview
atproto
solid
1import { invoke } from "@tauri-apps/api/core";
2import type { ExplorerServerView, RepoCarExport, ResolvedExplorerInput, TempBlobFile } from "./types/explorer";
3
4async function resolveInput(input: string): Promise<ResolvedExplorerInput> {
5 return invoke("resolve_input", { input });
6}
7
8async function describeServer(pdsUrl: string): Promise<ExplorerServerView> {
9 return invoke("describe_server", { pdsUrl });
10}
11
12async function describeRepo(did: string): Promise<Record<string, unknown>> {
13 return invoke("describe_repo", { did });
14}
15
16async function listRecords(did: string, collection: string, cursor?: string): Promise<Record<string, unknown>> {
17 return invoke("list_records", { did, collection, cursor });
18}
19
20async function getRecord(did: string, collection: string, rkey: string): Promise<Record<string, unknown>> {
21 return invoke("get_record", { did, collection, rkey });
22}
23
24async function exportRepoCar(did: string): Promise<RepoCarExport> {
25 return invoke("export_repo_car", { did });
26}
27
28async function fetchBlobToTempFile(did: string, cid: string, extension?: string | null): Promise<TempBlobFile> {
29 return invoke("fetch_blob_to_temp_file", { cid, did, extension: extension ?? null });
30}
31
32async function deleteBlobTempFile(path: string): Promise<void> {
33 return invoke("delete_blob_temp_file", { path });
34}
35
36async function queryLabels(uri: string): Promise<Record<string, unknown>> {
37 return invoke("query_labels", { uri });
38}
39
40async function getLexiconFavicons(collections: string[]): Promise<Record<string, string | null>> {
41 return invoke("get_lexicon_favicons", { collections });
42}
43
44async function clearLexiconFaviconCache(): Promise<void> {
45 return invoke("clear_lexicon_favicon_cache");
46}
47
48export const ExplorerController = {
49 resolveInput,
50 describeServer,
51 describeRepo,
52 listRecords,
53 getRecord,
54 exportRepoCar,
55 fetchBlobToTempFile,
56 deleteBlobTempFile,
57 queryLabels,
58 getLexiconFavicons,
59 clearLexiconFaviconCache,
60};