fix: block empty tag searches
This commit is contained in:
parent
95d6275d4e
commit
e6a15c6b3d
2 changed files with 68 additions and 65 deletions
|
|
@ -39,7 +39,7 @@ export default function SearchResults({
|
|||
<div>Search Results</div>
|
||||
</SheetTitle>
|
||||
<SheetDescription className="flex flex-row gap-3">
|
||||
<div className="text-foreground">Search term:</div>
|
||||
<span className="text-foreground">Search term:</span>
|
||||
<span className="font-medium text-foreground">{searchParams}</span>
|
||||
</SheetDescription>
|
||||
</SheetHeader>
|
||||
|
|
@ -65,8 +65,8 @@ export default function SearchResults({
|
|||
</div>
|
||||
) : (
|
||||
<div className="p-4 pt-0 flex gap-2">
|
||||
{tagResults.map((tagResult) => (
|
||||
<Link to={`/tags/${tagResult}`}>
|
||||
{tagResults?.map((tagResult, i) => (
|
||||
<Link to={`/tags/${tagResult}`} key={i}>
|
||||
<Badge className="hover:bg-muted" variant="outline">
|
||||
{tagResult}
|
||||
</Badge>
|
||||
|
|
|
|||
|
|
@ -7,71 +7,74 @@ import SearchInput from "@/components/SearchInput"
|
|||
import SearchResults from "@/components/SearchResults"
|
||||
|
||||
export default function Search() {
|
||||
const location = useLocation()
|
||||
const inputRef = useRef(null)
|
||||
const [sheetOpen, setSheetOpen] = useState(false)
|
||||
const [tagResults, setTagResults] = useState([])
|
||||
const [searchParams, setSearchParams] = useState(null)
|
||||
const queryClient = useQueryClient()
|
||||
const tags = queryClient.getQueryData(["tag_list"])?.["data"]
|
||||
const location = useLocation()
|
||||
const inputRef = useRef(null)
|
||||
const [sheetOpen, setSheetOpen] = useState(false)
|
||||
const [tagResults, setTagResults] = useState([])
|
||||
const [searchParams, setSearchParams] = useState(null)
|
||||
const queryClient = useQueryClient()
|
||||
const tags = queryClient.getQueryData(["tag_list"])?.["data"]
|
||||
|
||||
const form = useForm({
|
||||
defaultValues: {
|
||||
search: "",
|
||||
},
|
||||
onSubmit: ({ value }) => {
|
||||
setSearchParams(value.search)
|
||||
setSheetOpen(true)
|
||||
setTagResults(
|
||||
tags?.filter((tag) => tag.toLowerCase().includes(value.search.toLowerCase())),
|
||||
)
|
||||
},
|
||||
})
|
||||
const form = useForm({
|
||||
defaultValues: {
|
||||
search: "",
|
||||
},
|
||||
onSubmit: ({ value }) => {
|
||||
setSearchParams(value.search)
|
||||
setSheetOpen(true)
|
||||
console.log(value.search)
|
||||
setTagResults(
|
||||
value.search !== ""
|
||||
? tags?.filter((tag) => tag.toLowerCase().includes(value.search.toLowerCase()))
|
||||
: null,
|
||||
)
|
||||
},
|
||||
})
|
||||
|
||||
const {
|
||||
data: entriesResults,
|
||||
isLoading,
|
||||
error,
|
||||
} = useQuery({
|
||||
queryKey: ["search_results", searchParams],
|
||||
queryFn: () => api.get(`/search/${searchParams}`).then((res) => res.data),
|
||||
enabled: !!searchParams,
|
||||
})
|
||||
const {
|
||||
data: entriesResults,
|
||||
isLoading,
|
||||
error,
|
||||
} = useQuery({
|
||||
queryKey: ["search_results", searchParams],
|
||||
queryFn: () => api.get(`/search/${searchParams}`).then((res) => res.data),
|
||||
enabled: !!searchParams,
|
||||
})
|
||||
|
||||
// Force Sheet close on renavigation (i.e search result selection)
|
||||
useEffect(() => {
|
||||
if (sheetOpen) {
|
||||
setSheetOpen(false)
|
||||
form.reset()
|
||||
setSearchParams(null)
|
||||
}
|
||||
}, [location.pathname])
|
||||
// Force Sheet close on renavigation (i.e search result selection)
|
||||
useEffect(() => {
|
||||
if (sheetOpen) {
|
||||
setSheetOpen(false)
|
||||
form.reset()
|
||||
setSearchParams(null)
|
||||
}
|
||||
}, [location.pathname])
|
||||
|
||||
useEffect(() => {
|
||||
const handleKeyDown = (e) => {
|
||||
if ((e.ctrlKey || e.metaKey) && e.key === "k") {
|
||||
e.preventDefault()
|
||||
inputRef.current?.focus()
|
||||
}
|
||||
}
|
||||
document.addEventListener("keydown", handleKeyDown)
|
||||
return () => document.removeEventListener("keydown", handleKeyDown)
|
||||
}, [])
|
||||
useEffect(() => {
|
||||
const handleKeyDown = (e) => {
|
||||
if ((e.ctrlKey || e.metaKey) && e.key === "k") {
|
||||
e.preventDefault()
|
||||
inputRef.current?.focus()
|
||||
}
|
||||
}
|
||||
document.addEventListener("keydown", handleKeyDown)
|
||||
return () => document.removeEventListener("keydown", handleKeyDown)
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<>
|
||||
<SearchInput form={form} inputRef={inputRef} />
|
||||
<SearchResults
|
||||
searchParams={searchParams}
|
||||
form={form}
|
||||
sheetOpen={sheetOpen}
|
||||
entriesResults={entriesResults}
|
||||
tagResults={tagResults}
|
||||
loading={isLoading}
|
||||
error={error}
|
||||
setSheetOpen={setSheetOpen}
|
||||
setSearchParams={setSearchParams}
|
||||
/>
|
||||
</>
|
||||
)
|
||||
return (
|
||||
<>
|
||||
<SearchInput form={form} inputRef={inputRef} />
|
||||
<SearchResults
|
||||
searchParams={searchParams}
|
||||
form={form}
|
||||
sheetOpen={sheetOpen}
|
||||
entriesResults={entriesResults}
|
||||
tagResults={tagResults}
|
||||
loading={isLoading}
|
||||
error={error}
|
||||
setSheetOpen={setSheetOpen}
|
||||
setSearchParams={setSearchParams}
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue