mirror of
https://github.com/gethomepage/homepage.git
synced 2025-12-24 05:48:08 +08:00
Enhancement: support completed field for jellyseer widget
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
@@ -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>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user