From 9db4bc239e5178c0dc5a6b9fbb60c77b130929bb Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Thu, 28 Dec 2023 22:50:32 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20Wired=20up=20search=20w?= =?UTF-8?q?ith=20RQ?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/client/components/Library/Library.tsx | 56 ++++++++++++++----- src/client/components/Library/SearchBar.tsx | 5 +- .../QbittorrentConnectionForm.tsx | 1 - 3 files changed, 44 insertions(+), 18 deletions(-) diff --git a/src/client/components/Library/Library.tsx b/src/client/components/Library/Library.tsx index fa95938..fc21c78 100644 --- a/src/client/components/Library/Library.tsx +++ b/src/client/components/Library/Library.tsx @@ -1,4 +1,4 @@ -import React, { useMemo, ReactElement, useState } from "react"; +import React, { useMemo, ReactElement, useState, useEffect } from "react"; import PropTypes from "prop-types"; import { useNavigate } from "react-router-dom"; import { isEmpty, isNil, isUndefined } from "lodash"; @@ -6,7 +6,11 @@ import MetadataPanel from "../shared/MetadataPanel"; import T2Table from "../shared/T2Table"; import SearchBar from "../Library/SearchBar"; import ellipsize from "ellipsize"; -import { useQuery, keepPreviousData } from "@tanstack/react-query"; +import { + useQuery, + keepPreviousData, + useQueryClient, +} from "@tanstack/react-query"; import axios from "axios"; import { format, fromUnixTime, parseISO } from "date-fns"; @@ -21,33 +25,53 @@ export const Library = (): ReactElement => { // Default page state // offset: 0 const [offset, setOffset] = useState(0); - const [searchResults, setSearchResults] = useState([]); + const [searchQuery, setSearchQuery] = useState({ + query: {}, + + pagination: { + size: 25, + from: offset, + }, + type: "all", + trigger: "libraryPage", + }); + const queryClient = useQueryClient(); // Method to fetch paginated issues - const fetchIssues = async (searchQuery, offset, type) => { - let pagination = { - size: 15, - from: offset, - }; + const fetchIssues = async (searchQuery) => { + const { pagination, query, type } = searchQuery; return await axios({ method: "POST", url: "http://localhost:3000/api/search/searchIssue", data: { - searchQuery, + query, pagination, type, }, }); }; + const searchIssues = (e) => { + queryClient.invalidateQueries({ queryKey: ["comics"] }); + setSearchQuery({ + query: { + volumeName: e.search, + }, + pagination: { + size: 15, + from: 0, + }, + type: "volumeName", + trigger: "libraryPage", + }); + }; const { data, isLoading, isError, isPlaceholderData } = useQuery({ - queryKey: ["comics", offset], - queryFn: () => fetchIssues({}, offset, "all"), + queryKey: ["comics", offset, searchQuery], + queryFn: () => fetchIssues(searchQuery), placeholderData: keepPreviousData, }); const searchResults = data?.data; - // Programmatically navigate to comic detail const navigate = useNavigate(); const navigateToComicDetail = (row) => { @@ -217,8 +241,10 @@ export const Library = (): ReactElement => { {!isUndefined(searchResults?.hits) ? (
-
- +
+
+ searchIssues(e)} /> +
{ {!isUndefined(searchResults?.data?.meta?.body) ? (

{JSON.stringify( - searchResults.data.meta.body.error.root_cause, + searchResults?.data.meta.body.error.root_cause, null, 4, )} diff --git a/src/client/components/Library/SearchBar.tsx b/src/client/components/Library/SearchBar.tsx index b26accc..9a10d3b 100644 --- a/src/client/components/Library/SearchBar.tsx +++ b/src/client/components/Library/SearchBar.tsx @@ -4,7 +4,8 @@ import { Form, Field } from "react-final-form"; import { Link } from "react-router-dom"; import { searchIssue } from "../../actions/fileops.actions"; -export const SearchBar = (): ReactElement => { +export const SearchBar = (props): ReactElement => { + const { searchHandler } = props; const handleSubmit = useCallback((e) => { // searchIssue( // { @@ -24,7 +25,7 @@ export const SearchBar = (): ReactElement => { }, []); return (

( diff --git a/src/client/components/Settings/QbittorrentSettings/QbittorrentConnectionForm.tsx b/src/client/components/Settings/QbittorrentSettings/QbittorrentConnectionForm.tsx index 92fc9a4..8b74121 100644 --- a/src/client/components/Settings/QbittorrentSettings/QbittorrentConnectionForm.tsx +++ b/src/client/components/Settings/QbittorrentSettings/QbittorrentConnectionForm.tsx @@ -14,7 +14,6 @@ export const QbittorrentConnectionForm = (): ReactElement => { method: "GET", }), }); - console.log(data); const hostDetails = data?.data?.bittorrent?.client?.host; // connect to qbittorrent client const { data: connectionDetails } = useQuery({