import { useLocation, useSearch } from "wouter"; import { Button } from "@/components/ui/button.tsx"; import { GalleryCard } from "@/components/gallery/GalleryCard.tsx"; import TagBadge from "@/components/gallery/TagBadge.tsx"; import { useSearchGalleryInfinite } from "../hook/useSearchGallery.ts"; import { Spinner } from "../components/Spinner.tsx"; import TagInput from "@/components/gallery/TagInput.tsx"; import { useState } from "react"; export default function Gallery() { const search = useSearch(); const searchParams = new URLSearchParams(search); const word = searchParams.get("word") ?? undefined; const tags = searchParams.get("allow_tag") ?? undefined; const limit = searchParams.get("limit"); const cursor = searchParams.get("cursor"); const { data, error, isLoading, size, setSize } = useSearchGalleryInfinite({ word, tags, limit: limit ? Number.parseInt(limit) : undefined, cursor: cursor ? Number.parseInt(cursor) : undefined }); if (isLoading) { return
Loading...
} if (error) { return
Error: {String(error)}
} const isLoadingMore = data && size > 0 && (data[size - 1] === undefined); const isReachingEnd = data && data[size - 1]?.hasMore === false; return (
{(word || tags) &&
{word && Search: {word}} {tags && Tags:
    {tags.split(",").map(x => )}
}
} { data?.length === 0 &&
No results
} { // TODO: date based grouping data?.map((docs) => { return docs?.data?.map((x) => { return ( ); }); }) } { }
); } function Search() { const search = useSearch(); const [, navigate] = useLocation(); const searchParams = new URLSearchParams(search); const [tags, setTags] = useState(searchParams.get("allow_tag")?.split(",") ?? []); const [word, setWord] = useState(searchParams.get("word") ?? ""); return
; }