From 1479823320d0ffadafcd0bf978795220d99bc6ef Mon Sep 17 00:00:00 2001
From: shamoon <4887959+shamoon@users.noreply.github.com>
Date: Sat, 7 Mar 2026 07:42:28 -0800
Subject: [PATCH] Fix: torrentCount endpoint for qbittorrent doesnt work
---
src/widgets/qbittorrent/component.jsx | 31 +++++++---------------
src/widgets/qbittorrent/component.test.jsx | 12 ++++-----
src/widgets/qbittorrent/widget.js | 4 ---
3 files changed, 16 insertions(+), 31 deletions(-)
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"],