diff --git a/src/widgets/qbittorrent/component.jsx b/src/widgets/qbittorrent/component.jsx
index e88b2622..0d67a586 100644
--- a/src/widgets/qbittorrent/component.jsx
+++ b/src/widgets/qbittorrent/component.jsx
@@ -1,12 +1,38 @@
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";
+function formatTimeLeft(inputSeconds) {
+ let seconds = inputSeconds;
+ const years = Math.floor(seconds / (365 * 24 * 60 * 60));
+ seconds %= 365 * 24 * 60 * 60; // Remaining seconds after subtracting years
+
+ const days = Math.floor(seconds / (24 * 60 * 60));
+ seconds %= 24 * 60 * 60; // Remaining seconds after subtracting days
+
+ const hours = Math.floor(seconds / 3600);
+ seconds %= 3600; // Remaining seconds after subtracting hours
+
+ const minutes = Math.floor(seconds / 60);
+ const remainingSeconds = seconds % 60;
+
+ let result = '';
+ if (years > 0) result += `${years}y `;
+ if (days > 0) result += `${days}d `;
+ if (hours > 0) result += `${hours}h `;
+ if (minutes > 0) result += `${minutes}m `;
+ result += `${remainingSeconds}s`;
+
+ return result.trim();
+}
+
+
export default function Component({ service }) {
const { t } = useTranslation();
-
const { widget } = service;
const { data: torrentData, error: torrentError } = useWidgetAPI(widget, "torrents");
@@ -29,6 +55,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 +64,32 @@ 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;
+ const enableLeechProgress = widget?.enableLeechProgress && Array.isArray(leechTorrents) && leechTorrents.length > 0;
return (
-
-
-
-
-
-
+ <>
+
+
+
+
+
+
+ {enableLeechProgress &&
+ leechTorrents.map((queueEntry) => (
+
+ ))}
+ >
);
}