BlueSky & more on desktop
lazurite.stormlightlabs.org/
tauri
rust
typescript
bluesky
appview
atproto
solid
1import type { ActorSuggestion } from "$/lib/types";
2import { invoke } from "@tauri-apps/api/core";
3
4const ACTOR_TYPEAHEAD_MIN_QUERY_LENGTH = 2;
5
6function normalizeQuery(value: string) {
7 const trimmed = value.trim();
8 if (
9 trimmed.length < ACTOR_TYPEAHEAD_MIN_QUERY_LENGTH || trimmed.startsWith("did:") || /^https?:\/\//i.test(trimmed)
10 ) {
11 return "";
12 }
13
14 return trimmed.replace(/^@/, "");
15}
16
17function searchActor(query: string): Promise<ActorSuggestion[]> {
18 return invoke("search_login_suggestions", { query });
19}
20
21export const TypeaheadController = { normalizeQuery, searchActor };