From b663e561748da2664d15bc396c52679966460e8c Mon Sep 17 00:00:00 2001 From: AdamWHY2K Date: Fri, 29 Aug 2025 19:14:13 +0100 Subject: [PATCH] Enhancement: Add issues field to Jellyseerr widget (#5725) Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com> --- docs/widgets/services/jellyseerr.md | 2 +- public/locales/en/common.json | 3 ++- src/widgets/jellyseerr/component.jsx | 15 +++++++++++---- src/widgets/jellyseerr/widget.js | 4 ++++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/docs/widgets/services/jellyseerr.md b/docs/widgets/services/jellyseerr.md index ad33ca521..6d04247c7 100644 --- a/docs/widgets/services/jellyseerr.md +++ b/docs/widgets/services/jellyseerr.md @@ -7,7 +7,7 @@ Learn more about [Jellyseerr](https://github.com/Fallenbagel/jellyseerr). Find your API key under `Settings > General > API Key`. -Allowed fields: `["pending", "approved", "available"]`. +Allowed fields: `["pending", "approved", "available", "issues"]`. ```yaml widget: diff --git a/public/locales/en/common.json b/public/locales/en/common.json index ae524b758..f4d1f5976 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -275,7 +275,8 @@ "jellyseerr": { "pending": "Pending", "approved": "Approved", - "available": "Available" + "available": "Available", + "issues": "Open Issues" }, "overseerr": { "pending": "Pending", diff --git a/src/widgets/jellyseerr/component.jsx b/src/widgets/jellyseerr/component.jsx index d99fffdbc..d405cbf62 100644 --- a/src/widgets/jellyseerr/component.jsx +++ b/src/widgets/jellyseerr/component.jsx @@ -3,21 +3,27 @@ import Container from "components/services/widget/container"; import useWidgetAPI from "utils/proxy/use-widget-api"; +export const jellyseerrDefaultFields = ["pending", "approved", "available"]; + export default function Component({ service }) { const { widget } = service; - const { data: statsData, error: statsError } = useWidgetAPI(widget, "request/count"); + widget.fields = widget?.fields?.length ? widget.fields : jellyseerrDefaultFields; + const isIssueEnabled = widget.fields.includes("issues"); - if (statsError) { - return ; + const { data: statsData, error: statsError } = useWidgetAPI(widget, "request/count"); + const { data: issueData, error: issueError } = useWidgetAPI(widget, isIssueEnabled ? "issue/count" : ""); + if (statsError || (isIssueEnabled && issueError)) { + return ; } - if (!statsData) { + if (!statsData || (isIssueEnabled && !issueData)) { return ( + ); } @@ -27,6 +33,7 @@ export default function Component({ service }) { + ); } diff --git a/src/widgets/jellyseerr/widget.js b/src/widgets/jellyseerr/widget.js index 31a6f80fb..491e2fdbc 100644 --- a/src/widgets/jellyseerr/widget.js +++ b/src/widgets/jellyseerr/widget.js @@ -9,6 +9,10 @@ const widget = { endpoint: "request/count", validate: ["pending", "approved", "available"], }, + "issue/count": { + endpoint: "issue/count", + validate: ["open", "total"], + }, }, };