import React, { ReactElement } from "react"; import { ConnectionForm } from "../../shared/ConnectionForm/ConnectionForm"; import { useQuery, useMutation, QueryClient } from "@tanstack/react-query"; import axios from "axios"; export const QbittorrentConnectionForm = (): ReactElement => { const queryClient = new QueryClient(); // fetch settings const { data, isLoading, isError } = useQuery({ queryKey: ["settings"], queryFn: async () => await axios({ url: "http://localhost:3000/api/settings/getAllSettings", method: "GET", }), }); console.log(data); const hostDetails = data?.data?.bittorrent?.client?.host; // connect to qbittorrent client const { data: connectionDetails } = useQuery({ queryKey: [], queryFn: async () => await axios({ url: "http://localhost:3060/api/qbittorrent/connect", method: "POST", data: hostDetails, }), enabled: !!hostDetails, }); // get qbittorrent client info const { data: qbittorrentClientInfo } = useQuery({ queryKey: ["qbittorrentClientInfo"], queryFn: async () => await axios({ url: "http://localhost:3060/api/qbittorrent/getClientInfo", method: "GET", }), enabled: !!connectionDetails, }); // Update action using a mutation const { mutate } = useMutation({ mutationFn: async (values) => await axios({ url: `http://localhost:3000/api/settings/saveSettings`, method: "POST", data: { settingsPayload: values, settingsKey: "bittorrent" }, }), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["settings", "qbittorrentClientInfo"], }); }, }); if (isError) return ( <>
Something went wrong connecting to qBittorrent.
); if (!isLoading) { return ( <> qBittorrent Client Information

Connected

            {JSON.stringify(qbittorrentClientInfo?.data, null, 4)}
          
); } }; export default QbittorrentConnectionForm;