144 lines
4.4 KiB
TypeScript
144 lines
4.4 KiB
TypeScript
import React, {
|
|
useCallback,
|
|
useContext,
|
|
ReactElement,
|
|
useEffect,
|
|
useState,
|
|
} from "react";
|
|
import {
|
|
search,
|
|
downloadAirDCPPItem,
|
|
getBundlesForComic,
|
|
} from "../../actions/airdcpp.actions";
|
|
import { RootState, SearchInstance } from "threetwo-ui-typings";
|
|
import ellipsize from "ellipsize";
|
|
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;
|
|
comicObjectId: any;
|
|
comicObject: any;
|
|
settings: any;
|
|
}
|
|
|
|
export const AcquisitionPanel = (
|
|
props: IAcquisitionPanelProps,
|
|
): ReactElement => {
|
|
const {
|
|
airDCPPSocketInstance,
|
|
airDCPPClientConfiguration,
|
|
airDCPPSessionInformation,
|
|
} = useStore(
|
|
useShallow((state) => ({
|
|
airDCPPSocketInstance: state.airDCPPSocketInstance,
|
|
airDCPPClientConfiguration: state.airDCPPClientConfiguration,
|
|
airDCPPSessionInformation: state.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, " ");
|
|
|
|
// Selectors for picking state
|
|
// const airDCPPSearchResults = useSelector((state: RootState) => {
|
|
// return state.airdcpp.searchResults;
|
|
// });
|
|
// const isAirDCPPSearchInProgress = useSelector(
|
|
// (state: RootState) => state.airdcpp.isAirDCPPSearchInProgress,
|
|
// );
|
|
// const searchInfo = useSelector(
|
|
// (state: RootState) => state.airdcpp.searchInfo,
|
|
// );
|
|
// const searchInstance: SearchInstance = useSelector(
|
|
// (state: RootState) => state.airdcpp.searchInstance,
|
|
// );
|
|
|
|
// const settings = useSelector((state: RootState) => state.settings.data);
|
|
// const airDCPPConfiguration = useContext(AirDCPPSocketContext);
|
|
|
|
const [dcppQuery, setDcppQuery] = useState({});
|
|
|
|
// Construct a AirDC++ query based on metadata inferred, upon component mount
|
|
// Pre-populate the search input with the search string, so that
|
|
// All the user has to do is hit "Search AirDC++"
|
|
useEffect(() => {
|
|
// 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(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(
|
|
(searchInstanceId, resultId, name, size, type) => {
|
|
// dispatch(
|
|
// downloadAirDCPPItem(
|
|
// searchInstanceId,
|
|
// resultId,
|
|
// props.comicObjectId,
|
|
// name,
|
|
// size,
|
|
// type,
|
|
// airDCPPConfiguration.airDCPPState.socket,
|
|
// {
|
|
// username: `${airDCPPConfiguration.airDCPPState.settings.directConnect.client.host.username}`,
|
|
// password: `${airDCPPConfiguration.airDCPPState.settings.directConnect.client.host.password}`,
|
|
// },
|
|
// ),
|
|
// );
|
|
// this is to update the download count badge on the downloads tab
|
|
// dispatch(
|
|
// getBundlesForComic(
|
|
// props.comicObjectId,
|
|
// airDCPPConfiguration.airDCPPState.socket,
|
|
// {
|
|
// username: `${airDCPPConfiguration.airDCPPState.settings.directConnect.client.host.username}`,
|
|
// password: `${airDCPPConfiguration.airDCPPState.settings.directConnect.client.host.password}`,
|
|
// },
|
|
// ),
|
|
// );
|
|
},
|
|
[],
|
|
);
|
|
return <></>;
|
|
};
|
|
|
|
export default AcquisitionPanel;
|