From 4650bedbcfedc768aa5ec65873b9329d6b8c9c10 Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Mon, 27 Nov 2023 21:34:34 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Refactoring=20AcquisitionPanel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ComicDetail/AcquisitionPanel.tsx | 290 +++--------------- .../AirDCPPSettings/AirDCPPHubsForm.tsx | 2 +- 2 files changed, 41 insertions(+), 251 deletions(-) diff --git a/src/client/components/ComicDetail/AcquisitionPanel.tsx b/src/client/components/ComicDetail/AcquisitionPanel.tsx index 3e1f7f5..3b1801e 100644 --- a/src/client/components/ComicDetail/AcquisitionPanel.tsx +++ b/src/client/components/ComicDetail/AcquisitionPanel.tsx @@ -16,6 +16,7 @@ import { Form, Field } from "react-final-form"; import { isEmpty, isNil, map } from "lodash"; import { useStore } from "../../store"; import { useShallow } from "zustand/react/shallow"; +import { useQuery } from "@tanstack/react-query"; interface IAcquisitionPanelProps { query: any; @@ -38,7 +39,16 @@ export const AcquisitionPanel = ( airDCPPSessionInformation: state.airDCPPSessionInformation, })), ); - console.log("ulhas umlaut", airDCPPSessionInformation); + + /** + * Get the hubs list from an AirDCPP Socket + */ + const { data: hubs } = useQuery({ + queryKey: ["hubs"], + queryFn: async () => await airDCPPSocketInstance.get(`hubs`), + }); + + console.log("narangi umlaut", hubs); const issueName = props.query.issue.name || ""; // const { settings } = props; const sanitizedIssueName = issueName.replace(/[^a-zA-Z0-9 ]/g, " "); @@ -66,45 +76,34 @@ export const AcquisitionPanel = ( // Pre-populate the search input with the search string, so that // All the user has to do is hit "Search AirDC++" useEffect(() => { - // if (!isEmpty(airDCPPConfiguration.airDCPPState.settings)) { - // // AirDC++ search query - // const dcppSearchQuery = { - // query: { - // pattern: `${sanitizedIssueName.replace(/#/g, "")}`, - // extensions: ["cbz", "cbr", "cb7"], - // }, - // hub_urls: map( - // airDCPPConfiguration.airDCPPState.settings.directConnect.client.hubs, - // (item) => item.value, - // ), - // priority: 5, - // }; - // setDcppQuery(dcppSearchQuery); - // } - }, [airDCPPConfiguration]); + // AirDC++ search query + const dcppSearchQuery = { + query: { + pattern: `${sanitizedIssueName.replace(/#/g, "")}`, + extensions: ["cbz", "cbr", "cb7"], + }, + hub_urls: map(hubs, (item) => item.value), + priority: 5, + }; + setDcppQuery(dcppSearchQuery); + }, []); - const getDCPPSearchResults = useCallback( - async (searchQuery) => { - const manualQuery = { - query: { - pattern: `${searchQuery.issueName}`, - extensions: ["cbz", "cbr", "cb7"], - }, - hub_urls: map( - airDCPPConfiguration.airDCPPState.settings.directConnect.client.hubs, - (item) => item.value, - ), - priority: 5, - }; - // dispatch( - // search(manualQuery, airDCPPConfiguration.airDCPPState.socket, { - // username: `${airDCPPConfiguration.airDCPPState.settings.directConnect.client.host.username}`, - // password: `${airDCPPConfiguration.airDCPPState.settings.directConnect.client.host.password}`, - // }), - // ); - }, - [airDCPPConfiguration], - ); + const getDCPPSearchResults = useCallback(async (searchQuery) => { + const manualQuery = { + query: { + pattern: `${searchQuery.issueName}`, + extensions: ["cbz", "cbr", "cb7"], + }, + hub_urls: map(hubs, (item) => item.value), + priority: 5, + }; + // dispatch( + // search(manualQuery, airDCPPConfiguration.airDCPPState.socket, { + // username: `${airDCPPConfiguration.airDCPPState.settings.directConnect.client.host.username}`, + // password: `${airDCPPConfiguration.airDCPPState.settings.directConnect.client.host.password}`, + // }), + // ); + }, []); // download via AirDC++ const downloadDCPPResult = useCallback( @@ -136,218 +135,9 @@ export const AcquisitionPanel = ( // ), // ); }, - [airDCPPConfiguration], - ); - return ( - <> -
- {!isEmpty(airDCPPConfiguration.airDCPPState.socket) ? ( -
( - -
-
- - {({ input, meta }) => { - return ( -
- - - Use this to perform a manual search. - -
- ); - }} -
- -
- -
-
-
-
- )} - /> - ) : ( -
-
-
- AirDC++ is not configured. Please configure it in{" "} - Settings. -
-
-
- )} -
- - {/* AirDC++ search instance details */} - {!isNil(searchInfo) && !isNil(searchInstance) && ( -
-
-
-
-
-
-
- {airDCPPConfiguration.airDCPPState.settings.directConnect.client.hubs.map( - ({ value }) => ( - - {value} - - ), - )} -
-
-
- Query:{" "} - - {searchInfo.query.pattern} - -
-
Extensions: {searchInfo.query.extensions.join(", ")}
-
File type: {searchInfo.query.file_type}
-
-
-
-
-
-
-
-
-
Search Instance: {searchInstance.id}
-
Owned by {searchInstance.owner}
-
Expires in: {searchInstance.expires_in}
-
-
-
-
-
- )} - - {/* AirDC++ results */} -
- {!isNil(airDCPPSearchResults) && !isEmpty(airDCPPSearchResults) ? ( -
- - - - - - - - - - - {map(airDCPPSearchResults, ({ result }, idx) => { - return ( - - - - - - - ); - })} - -
NameTypeSlotsActions
-

- {result.type.id === "directory" ? ( - - ) : null}{" "} - {ellipsize(result.name, 70)} -

- -
-
-
- {!isNil(result.dupe) ? ( - Dupe - ) : null} - - {result.users.user.nicks} - - {result.users.user.flags.map((flag, idx) => ( - - {flag} - - ))} -
-
-
-
- - {result.type.id === "directory" - ? "directory" - : result.type.str} - - -
- - {result.slots.free} free - - - {result.slots.total} - -
-
- - downloadDCPPResult( - searchInstance.id, - result.id, - result.name, - result.size, - result.type, - ) - } - > - - -
-
- ) : ( -
-
-
- Searching via AirDC++ is still in{" "} - alpha. Some searches may take arbitrarily long, - or may not work at all. Searches from ADCS hubs are - more reliable than NMDCS ones. -
-
-
- )} -
- + [], ); + return <>; }; export default AcquisitionPanel; diff --git a/src/client/components/Settings/AirDCPPSettings/AirDCPPHubsForm.tsx b/src/client/components/Settings/AirDCPPSettings/AirDCPPHubsForm.tsx index f093f35..21f2fed 100644 --- a/src/client/components/Settings/AirDCPPSettings/AirDCPPHubsForm.tsx +++ b/src/client/components/Settings/AirDCPPSettings/AirDCPPHubsForm.tsx @@ -39,7 +39,7 @@ export const AirDCPPHubsForm = (): ReactElement => { queryFn: async () => await airDCPPSocketInstance.get(`hubs`), }); let hubList = {}; - if (hubs) { + if (!isNil(hubs)) { hubList = hubs.map(({ hub_url, identity }) => ({ value: hub_url, label: identity.name,