diff --git a/src/widgets/qbittorrent/component.jsx b/src/widgets/qbittorrent/component.jsx index 73dfacb5c..2ffafe2cb 100644 --- a/src/widgets/qbittorrent/component.jsx +++ b/src/widgets/qbittorrent/component.jsx @@ -11,27 +11,19 @@ export default function Component({ service }) { const { widget } = service; const { data: transferData, error: transferError } = useWidgetAPI(widget, "transfer"); - const { data: totalCountData, error: totalCountError } = useWidgetAPI(widget, "torrentCount"); - const { data: completedCountData, error: completedCountError } = useWidgetAPI(widget, "torrentCount", { + const { data: leechTorrentData, error: leechTorrentError } = useWidgetAPI(widget, "torrents", { + filter: "downloading", + }); + const { data: seedTorrentData, error: seedTorrentError } = useWidgetAPI(widget, "torrents", { filter: "completed", }); - const { data: leechTorrentData, error: leechTorrentError } = useWidgetAPI( - widget, - widget?.enableLeechProgress ? "torrents" : "", - widget?.enableLeechProgress ? { filter: "downloading" } : undefined, - ); - const apiError = transferError || totalCountError || completedCountError || leechTorrentError; + const apiError = transferError || leechTorrentError || seedTorrentError; if (apiError) { return ; } - if ( - !transferData || - totalCountData === undefined || - completedCountData === undefined || - (widget?.enableLeechProgress && !leechTorrentData) - ) { + if (!transferData || !leechTorrentData || !seedTorrentData) { return ( @@ -44,13 +36,10 @@ export default function Component({ service }) { const rateDl = Number(transferData?.dl_info_speed ?? 0); const rateUl = Number(transferData?.up_info_speed ?? 0); - const totalCount = Number(totalCountData?.all ?? totalCountData?.count ?? totalCountData ?? 0); - const completedCount = Number( - completedCountData?.completed ?? completedCountData?.count ?? completedCountData?.all ?? completedCountData ?? 0, - ); - const leech = Math.max(0, totalCount - completedCount); + const leech = Array.isArray(leechTorrentData) ? leechTorrentData.length : 0; + const seed = Array.isArray(seedTorrentData) ? seedTorrentData.length : 0; - const leechTorrents = Array.isArray(leechTorrentData) ? [...leechTorrentData] : []; + const leechTorrents = widget?.enableLeechProgress && Array.isArray(leechTorrentData) ? [...leechTorrentData] : []; const statePriority = [ "downloading", "forcedDL", @@ -75,7 +64,7 @@ export default function Component({ service }) { - + {widget?.enableLeechProgress && diff --git a/src/widgets/qbittorrent/component.test.jsx b/src/widgets/qbittorrent/component.test.jsx index df8ae51c8..0faf5c7e5 100644 --- a/src/widgets/qbittorrent/component.test.jsx +++ b/src/widgets/qbittorrent/component.test.jsx @@ -39,12 +39,6 @@ describe("widgets/qbittorrent/component", () => { if (endpoint === "transfer") { return { data: { dl_info_speed: 15, up_info_speed: 3 }, error: undefined }; } - if (endpoint === "torrentCount" && !query) { - return { data: 2, error: undefined }; - } - if (endpoint === "torrentCount" && query?.filter === "completed") { - return { data: 1, error: undefined }; - } if (endpoint === "torrents" && query?.filter === "downloading") { return { data: [ @@ -60,6 +54,12 @@ describe("widgets/qbittorrent/component", () => { error: undefined, }; } + if (endpoint === "torrents" && query?.filter === "completed") { + return { + data: [{ name: "A", progress: 1, state: "uploading" }], + error: undefined, + }; + } return { data: undefined, error: undefined }; }); diff --git a/src/widgets/qbittorrent/widget.js b/src/widgets/qbittorrent/widget.js index 9ec167faf..0eab6dfb6 100644 --- a/src/widgets/qbittorrent/widget.js +++ b/src/widgets/qbittorrent/widget.js @@ -7,10 +7,6 @@ const widget = { transfer: { endpoint: "transfer/info", }, - torrentCount: { - endpoint: "torrents/count", - optionalParams: ["filter"], - }, torrents: { endpoint: "torrents/info", optionalParams: ["filter"],