import { Button } from "@kobalte/core/button"; import { IconSearch, IconSettings } from "@tabler/icons-solidjs"; import { listen } from "@tauri-apps/api/event"; import Fuse from "fuse.js"; import { For, Show, createEffect, createSignal, onCleanup, onMount, } from "solid-js"; import { SearchCard } from "./components/search-card/SearchCard"; import { invoke } from "@tauri-apps/api/core"; import { ItemModal } from "./components/item-modal/ItemModal"; import type { Shortcut } from "./components/shortcuts/hooks/useShortcutEditor"; import type { sendImage, UserImage } from "./network"; import { useSearchImageContext } from "./contexts/SearchImageContext"; import { ImageStatus } from "./components/image-status/ImageStatus"; export const Search = () => { const [searchResults, setSearchResults] = createSignal([]); const [searchQuery, setSearchQuery] = createSignal(""); const [selectedItem, setSelectedItem] = createSignal( null, ); const [processingImage, setProcessingImage] = createSignal>>(); const { images } = useSearchImageContext(); let fuze = new Fuse(images() ?? [], { keys: [ { name: "rawData", weight: 1 }, { name: "title", weight: 1 }, ], threshold: 0.4, }); createEffect(() => { console.log("DBG: ", images()); setSearchResults(images() ?? []); fuze = new Fuse(images() ?? [], { keys: [ { name: "data.Name", weight: 2 }, { name: "rawData", weight: 1 }, ], threshold: 0.4, }); }); const onInputChange = (event: InputEvent) => { const query = (event.target as HTMLInputElement).value; setSearchQuery(query); setSearchResults(fuze.search(query).map((s) => s.item)); }; let searchInputRef: HTMLInputElement | undefined; onMount(() => { if (searchInputRef) { searchInputRef.focus(); } }); createEffect(() => { // Listen for the focus-search event from Tauri const unlisten = listen("focus-search", () => { if (searchInputRef) { searchInputRef.focus(); } }); onCleanup(() => { unlisten.then((fn) => fn()); }); }); const [shortcut, setShortcut] = createSignal([]); async function getCurrentShortcut() { try { const res: string = await invoke("get_current_shortcut"); console.log("DBG: ", res); setShortcut(res?.split("+")); } catch (err) { console.error("Failed to fetch shortcut:", err); } } onMount(() => { getCurrentShortcut(); }); return ( <>
0} fallback={
No results found
} >
{(item) => (
setSelectedItem(item) } onKeyDown={(e) => { if (e.key === "Enter") { setSelectedItem(item); } }} class="h-[144px] border relative col-span-3 border-neutral-200 cursor-pointer overflow-hidden rounded-xl" > {item.data.Name}
)}

Use{" "} {shortcut().length > 0 ? shortcut().join("+") : "shortcut"}{" "} globally to toggle and reload this window

{selectedItem() && ( setSelectedItem(null)} /> )} ); };