BlueSky & more on desktop lazurite.stormlightlabs.org/
tauri rust typescript bluesky appview atproto solid
2
fork

Configure Feed

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

at main 82 lines 2.4 kB view raw
1import { invoke } from "@tauri-apps/api/core"; 2import type { 3 ActorSearchResult, 4 EmbeddingsConfig, 5 LocalPostResult, 6 NetworkSearchParams, 7 NetworkSearchResult, 8 SavedPostSource, 9 SavedPostsPage, 10 SearchMode, 11 SyncStatus, 12} from "./types/search"; 13 14function searchPostsNetwork(params: NetworkSearchParams): Promise<NetworkSearchResult> { 15 return invoke("search_posts_network", { 16 queryParams: { 17 author: params.author ?? null, 18 cursor: params.cursor ?? null, 19 limit: params.limit ?? null, 20 mentions: params.mentions ?? null, 21 query: params.query, 22 since: params.since ?? null, 23 sort: params.sort ?? null, 24 tags: params.tags?.length ? params.tags : null, 25 until: params.until ?? null, 26 }, 27 }); 28} 29 30function searchPosts(query: string, mode: SearchMode, limit: number): Promise<LocalPostResult[]> { 31 return invoke("search_posts", { query, mode, limit }); 32} 33 34function listSavedPosts(source: SavedPostSource, limit: number, offset = 0, query?: string): Promise<SavedPostsPage> { 35 return invoke("list_saved_posts", { source, limit, offset, query: query?.trim() ? query.trim() : null }); 36} 37 38function searchActors(query: string, limit?: number, cursor?: string | null): Promise<ActorSearchResult> { 39 return invoke("search_actors", { query, limit: limit ?? null, cursor: cursor ?? null }); 40} 41 42function syncPosts(did: string, source: SavedPostSource): Promise<SyncStatus> { 43 return invoke("sync_posts", { did, source }); 44} 45 46function getSyncStatus(did: string): Promise<SyncStatus[]> { 47 return invoke("get_sync_status", { did }); 48} 49 50function reindexEmbeddings(): Promise<number> { 51 return invoke("reindex_embeddings"); 52} 53 54function setEmbeddingsEnabled(enabled: boolean): Promise<void> { 55 return invoke("set_embeddings_enabled", { enabled }); 56} 57 58function setEmbeddingsPreflightSeen(seen: boolean): Promise<void> { 59 return invoke("set_embeddings_preflight_seen", { seen }); 60} 61 62function getEmbeddingsConfig(): Promise<EmbeddingsConfig> { 63 return invoke("get_embeddings_config"); 64} 65 66function prepareEmbeddingsModel(): Promise<EmbeddingsConfig> { 67 return invoke("prepare_embeddings_model"); 68} 69 70export const SearchController = { 71 searchPostsNetwork, 72 searchPosts, 73 listSavedPosts, 74 searchActors, 75 syncPosts, 76 getSyncStatus, 77 reindexEmbeddings, 78 setEmbeddingsEnabled, 79 setEmbeddingsPreflightSeen, 80 getEmbeddingsConfig, 81 prepareEmbeddingsModel, 82};