From 22c02f4e45552d5857739efe32f8653f4f37d812 Mon Sep 17 00:00:00 2001 From: Mindfreak9100 Date: Thu, 12 Dec 2024 19:32:03 -0500 Subject: [PATCH] Enhancement: downloading torrents list for qbittorrent (#4405) --- docs/widgets/services/qbittorrent.md | 1 + src/utils/config/service-helpers.js | 6 ++++++ src/widgets/qbittorrent/component.jsx | 31 +++++++++++++++++++++------ 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/docs/widgets/services/qbittorrent.md b/docs/widgets/services/qbittorrent.md index d60785e7f..103430deb 100644 --- a/docs/widgets/services/qbittorrent.md +++ b/docs/widgets/services/qbittorrent.md @@ -15,4 +15,5 @@ widget: url: http://qbittorrent.host.or.ip username: username password: password + enableLeechProgress: true # optional, defaults to false ``` diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index e3c491ac1..1c37ad492 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -479,6 +479,9 @@ export function cleanServiceGroups(groups) { // proxmox node, + // qbittorrent + enableLeechProgress, + // speedtest bitratePrecision, @@ -671,6 +674,9 @@ export function cleanServiceGroups(groups) { if (type === "spoolman") { if (spoolIds !== undefined) widget.spoolIds = spoolIds; } + if (type === "qbittorrent") { + if (enableLeechProgress !== undefined) widget.enableLeechProgress = JSON.parse(enableLeechProgress); + } return widget; }); return cleanedService; diff --git a/src/widgets/qbittorrent/component.jsx b/src/widgets/qbittorrent/component.jsx index e88b26227..d7fb8bf75 100644 --- a/src/widgets/qbittorrent/component.jsx +++ b/src/widgets/qbittorrent/component.jsx @@ -1,12 +1,13 @@ import { useTranslation } from "next-i18next"; +import QueueEntry from "../../components/widgets/queue/queueEntry"; + import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; import useWidgetAPI from "utils/proxy/use-widget-api"; export default function Component({ service }) { const { t } = useTranslation(); - const { widget } = service; const { data: torrentData, error: torrentError } = useWidgetAPI(widget, "torrents"); @@ -29,6 +30,7 @@ export default function Component({ service }) { let rateDl = 0; let rateUl = 0; let completed = 0; + const leechTorrents = []; for (let i = 0; i < torrentData.length; i += 1) { const torrent = torrentData[i]; @@ -37,16 +39,31 @@ export default function Component({ service }) { if (torrent.progress === 1) { completed += 1; } + if (torrent.state.includes("DL") || torrent.state === "downloading") { + leechTorrents.push(torrent); + } } const leech = torrentData.length - completed; return ( - - - - - - + <> + + + + + + + {widget?.enableLeechProgress && + leechTorrents.map((queueEntry) => ( + + ))} + ); }