Enhancement: support completed field for jellyseer widget

This commit is contained in:
shamoon
2025-12-11 06:22:03 -08:00
parent 1ed2f16cbf
commit 15fa053b4d
2 changed files with 13 additions and 4 deletions

View File

@@ -7,8 +7,8 @@ Learn more about [Jellyseerr](https://github.com/Fallenbagel/jellyseerr).
Find your API key under `Settings > General > API Key`. Find your API key under `Settings > General > API Key`.
Allowed fields: `["pending", "approved", "available", "issues"]`. Allowed fields: `["pending", "approved", "available", "completed", "issues"]`.
Default fields: `["pending", "approved", "available"]`. Default fields: `["pending", "approved", "completed"]`.
```yaml ```yaml
widget: widget:

View File

@@ -3,12 +3,13 @@ import Container from "components/services/widget/container";
import useWidgetAPI from "utils/proxy/use-widget-api"; import useWidgetAPI from "utils/proxy/use-widget-api";
export const jellyseerrDefaultFields = ["pending", "approved", "available"]; export const jellyseerrDefaultFields = ["pending", "approved", "completed"];
const MAX_ALLOWED_FIELDS = 4;
export default function Component({ service }) { export default function Component({ service }) {
const { widget } = service; const { widget } = service;
widget.fields = widget?.fields?.length ? widget.fields : jellyseerrDefaultFields; widget.fields = widget?.fields?.length ? widget.fields.slice(0, MAX_ALLOWED_FIELDS) : jellyseerrDefaultFields;
const isIssueEnabled = widget.fields.includes("issues"); const isIssueEnabled = widget.fields.includes("issues");
const { data: statsData, error: statsError } = useWidgetAPI(widget, "request/count"); const { data: statsData, error: statsError } = useWidgetAPI(widget, "request/count");
@@ -23,16 +24,24 @@ export default function Component({ service }) {
<Block label="jellyseerr.pending" /> <Block label="jellyseerr.pending" />
<Block label="jellyseerr.approved" /> <Block label="jellyseerr.approved" />
<Block label="jellyseerr.available" /> <Block label="jellyseerr.available" />
<Block label="jellyseerr.completed" />
<Block label="jellyseerr.issues" /> <Block label="jellyseerr.issues" />
</Container> </Container>
); );
} }
if (statsData.completed === undefined) {
// Newer versions added "completed", fallback to available
widget.fields = widget.fields.filter((field) => field !== "completed");
widget.fields.push("available");
}
return ( return (
<Container service={service}> <Container service={service}>
<Block label="jellyseerr.pending" value={statsData.pending} /> <Block label="jellyseerr.pending" value={statsData.pending} />
<Block label="jellyseerr.approved" value={statsData.approved} /> <Block label="jellyseerr.approved" value={statsData.approved} />
<Block label="jellyseerr.available" value={statsData.available} /> <Block label="jellyseerr.available" value={statsData.available} />
<Block label="jellyseerr.completed" value={statsData.completed} />
<Block label="jellyseerr.issues" value={`${issueData?.open} / ${issueData?.total}`} /> <Block label="jellyseerr.issues" value={`${issueData?.open} / ${issueData?.total}`} />
</Container> </Container>
); );