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 ( <>
Connected
{JSON.stringify(qbittorrentClientInfo?.data, null, 4)}