26 lines
836 B
TypeScript
26 lines
836 B
TypeScript
export type AutoCompleteItemType = "SHOW" | "PERSON" | "SEASON" | string;
|
|
|
|
export type AutoCompleteItem = {
|
|
type: AutoCompleteItemType;
|
|
text: string;
|
|
};
|
|
|
|
const DISCOVER_BASE = "https://fltr-app.de/api/discover";
|
|
|
|
export async function getAutoComplete(
|
|
query: string,
|
|
limit = 10,
|
|
signal?: AbortSignal
|
|
): Promise<AutoCompleteItem[]> {
|
|
if (!query.trim()) return [];
|
|
const url = `${DISCOVER_BASE}/autoComplete?q=${encodeURIComponent(
|
|
query
|
|
)}&limit=${limit}`;
|
|
const apiKey = process.env.EXPO_PUBLIC_API_KEY;
|
|
const res = await fetch(url, { signal, headers: { 'Content-Type': 'application/json', "X-API-Key": apiKey ?? "", } });
|
|
if (!res.ok) throw new Error("AutoComplete failed " + res.status);
|
|
const data: unknown = await res.json();
|
|
if (!Array.isArray(data)) return [];
|
|
return data as AutoCompleteItem[];
|
|
}
|