mirror of
https://github.com/gethomepage/homepage.git
synced 2026-01-04 14:32:15 +08:00
Compare commits
1 Commits
feature/se
...
feature/je
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
15fa053b4d |
18
docs/widgets/services/jellyseerr.md
Normal file
18
docs/widgets/services/jellyseerr.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
title: Jellyseerr
|
||||||
|
description: Jellyseerr Widget Configuration
|
||||||
|
---
|
||||||
|
|
||||||
|
Learn more about [Jellyseerr](https://github.com/Fallenbagel/jellyseerr).
|
||||||
|
|
||||||
|
Find your API key under `Settings > General > API Key`.
|
||||||
|
|
||||||
|
Allowed fields: `["pending", "approved", "available", "completed", "issues"]`.
|
||||||
|
Default fields: `["pending", "approved", "completed"]`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
widget:
|
||||||
|
type: jellyseerr
|
||||||
|
url: http://jellyseerr.host.or.ip
|
||||||
|
key: apikeyapikeyapikeyapikeyapikey
|
||||||
|
```
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
title: Seerr Widget
|
|
||||||
description: Seerr Widget Configuration
|
|
||||||
---
|
|
||||||
|
|
||||||
Learn more about [Seerr](https://github.com/seerr-team/seerr).
|
|
||||||
|
|
||||||
Find your API key under `Settings > General > API Key`.
|
|
||||||
|
|
||||||
_Note that Jellyseerr was merged with Overseerr and renamed Seerr._
|
|
||||||
|
|
||||||
Allowed fields: `["pending", "approved", "available", "issues"]`.
|
|
||||||
Default fields: `["pending", "approved", "available"]`.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
widget:
|
|
||||||
type: jellyseerr
|
|
||||||
url: http://jellyseerr.host.or.ip
|
|
||||||
key: apikeyapikeyapikeyapikeyapikey
|
|
||||||
```
|
|
||||||
@@ -87,6 +87,7 @@ nav:
|
|||||||
- widgets/services/jackett.md
|
- widgets/services/jackett.md
|
||||||
- widgets/services/jdownloader.md
|
- widgets/services/jdownloader.md
|
||||||
- widgets/services/jellyfin.md
|
- widgets/services/jellyfin.md
|
||||||
|
- widgets/services/jellyseerr.md
|
||||||
- widgets/services/jellystat.md
|
- widgets/services/jellystat.md
|
||||||
- widgets/services/kavita.md
|
- widgets/services/kavita.md
|
||||||
- widgets/services/komga.md
|
- widgets/services/komga.md
|
||||||
@@ -146,7 +147,6 @@ nav:
|
|||||||
- widgets/services/rutorrent.md
|
- widgets/services/rutorrent.md
|
||||||
- widgets/services/sabnzbd.md
|
- widgets/services/sabnzbd.md
|
||||||
- widgets/services/scrutiny.md
|
- widgets/services/scrutiny.md
|
||||||
- widgets/services/seerr.md
|
|
||||||
- widgets/services/slskd.md
|
- widgets/services/slskd.md
|
||||||
- widgets/services/sonarr.md
|
- widgets/services/sonarr.md
|
||||||
- widgets/services/speedtest-tracker.md
|
- widgets/services/speedtest-tracker.md
|
||||||
|
|||||||
@@ -272,7 +272,7 @@
|
|||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available"
|
||||||
},
|
},
|
||||||
"seerr": {
|
"jellyseerr": {
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available",
|
"available": "Available",
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ const components = {
|
|||||||
jackett: dynamic(() => import("./jackett/component")),
|
jackett: dynamic(() => import("./jackett/component")),
|
||||||
jdownloader: dynamic(() => import("./jdownloader/component")),
|
jdownloader: dynamic(() => import("./jdownloader/component")),
|
||||||
jellyfin: dynamic(() => import("./emby/component")),
|
jellyfin: dynamic(() => import("./emby/component")),
|
||||||
jellyseerr: dynamic(() => import("./seerr/component")),
|
jellyseerr: dynamic(() => import("./jellyseerr/component")),
|
||||||
jellystat: dynamic(() => import("./jellystat/component")),
|
jellystat: dynamic(() => import("./jellystat/component")),
|
||||||
kavita: dynamic(() => import("./kavita/component")),
|
kavita: dynamic(() => import("./kavita/component")),
|
||||||
komga: dynamic(() => import("./komga/component")),
|
komga: dynamic(() => import("./komga/component")),
|
||||||
@@ -120,7 +120,6 @@ const components = {
|
|||||||
rutorrent: dynamic(() => import("./rutorrent/component")),
|
rutorrent: dynamic(() => import("./rutorrent/component")),
|
||||||
sabnzbd: dynamic(() => import("./sabnzbd/component")),
|
sabnzbd: dynamic(() => import("./sabnzbd/component")),
|
||||||
scrutiny: dynamic(() => import("./scrutiny/component")),
|
scrutiny: dynamic(() => import("./scrutiny/component")),
|
||||||
seerr: dynamic(() => import("./seerr/component")),
|
|
||||||
slskd: dynamic(() => import("./slskd/component")),
|
slskd: dynamic(() => import("./slskd/component")),
|
||||||
sonarr: dynamic(() => import("./sonarr/component")),
|
sonarr: dynamic(() => import("./sonarr/component")),
|
||||||
speedtest: dynamic(() => import("./speedtest/component")),
|
speedtest: dynamic(() => import("./speedtest/component")),
|
||||||
|
|||||||
48
src/widgets/jellyseerr/component.jsx
Normal file
48
src/widgets/jellyseerr/component.jsx
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
import Block from "components/services/widget/block";
|
||||||
|
import Container from "components/services/widget/container";
|
||||||
|
|
||||||
|
import useWidgetAPI from "utils/proxy/use-widget-api";
|
||||||
|
|
||||||
|
export const jellyseerrDefaultFields = ["pending", "approved", "completed"];
|
||||||
|
const MAX_ALLOWED_FIELDS = 4;
|
||||||
|
|
||||||
|
export default function Component({ service }) {
|
||||||
|
const { widget } = service;
|
||||||
|
|
||||||
|
widget.fields = widget?.fields?.length ? widget.fields.slice(0, MAX_ALLOWED_FIELDS) : jellyseerrDefaultFields;
|
||||||
|
const isIssueEnabled = widget.fields.includes("issues");
|
||||||
|
|
||||||
|
const { data: statsData, error: statsError } = useWidgetAPI(widget, "request/count");
|
||||||
|
const { data: issueData, error: issueError } = useWidgetAPI(widget, isIssueEnabled ? "issue/count" : "");
|
||||||
|
if (statsError || (isIssueEnabled && issueError)) {
|
||||||
|
return <Container service={service} error={statsError ? statsError : issueError} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!statsData || (isIssueEnabled && !issueData)) {
|
||||||
|
return (
|
||||||
|
<Container service={service}>
|
||||||
|
<Block label="jellyseerr.pending" />
|
||||||
|
<Block label="jellyseerr.approved" />
|
||||||
|
<Block label="jellyseerr.available" />
|
||||||
|
<Block label="jellyseerr.completed" />
|
||||||
|
<Block label="jellyseerr.issues" />
|
||||||
|
</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 (
|
||||||
|
<Container service={service}>
|
||||||
|
<Block label="jellyseerr.pending" value={statsData.pending} />
|
||||||
|
<Block label="jellyseerr.approved" value={statsData.approved} />
|
||||||
|
<Block label="jellyseerr.available" value={statsData.available} />
|
||||||
|
<Block label="jellyseerr.completed" value={statsData.completed} />
|
||||||
|
<Block label="jellyseerr.issues" value={`${issueData?.open} / ${issueData?.total}`} />
|
||||||
|
</Container>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
import Block from "components/services/widget/block";
|
|
||||||
import Container from "components/services/widget/container";
|
|
||||||
|
|
||||||
import useWidgetAPI from "utils/proxy/use-widget-api";
|
|
||||||
|
|
||||||
export const seerrDefaultFields = ["pending", "approved", "available"];
|
|
||||||
|
|
||||||
export default function Component({ service }) {
|
|
||||||
const { widget } = service;
|
|
||||||
|
|
||||||
widget.fields = widget?.fields?.length ? widget.fields : seerrDefaultFields;
|
|
||||||
const isIssueEnabled = widget.fields.includes("issues");
|
|
||||||
|
|
||||||
const { data: statsData, error: statsError } = useWidgetAPI(widget, "request/count");
|
|
||||||
const { data: issueData, error: issueError } = useWidgetAPI(widget, isIssueEnabled ? "issue/count" : "");
|
|
||||||
if (statsError || (isIssueEnabled && issueError)) {
|
|
||||||
return <Container service={service} error={statsError ? statsError : issueError} />;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!statsData || (isIssueEnabled && !issueData)) {
|
|
||||||
return (
|
|
||||||
<Container service={service}>
|
|
||||||
<Block label="seerr.pending" />
|
|
||||||
<Block label="seerr.approved" />
|
|
||||||
<Block label="seerr.available" />
|
|
||||||
<Block label="seerr.issues" />
|
|
||||||
</Container>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Container service={service}>
|
|
||||||
<Block label="seerr.pending" value={statsData.pending} />
|
|
||||||
<Block label="seerr.approved" value={statsData.approved} />
|
|
||||||
<Block label="seerr.available" value={statsData.available} />
|
|
||||||
<Block label="seerr.issues" value={`${issueData?.open} / ${issueData?.total}`} />
|
|
||||||
</Container>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -51,6 +51,7 @@ import homebridge from "./homebridge/widget";
|
|||||||
import immich from "./immich/widget";
|
import immich from "./immich/widget";
|
||||||
import jackett from "./jackett/widget";
|
import jackett from "./jackett/widget";
|
||||||
import jdownloader from "./jdownloader/widget";
|
import jdownloader from "./jdownloader/widget";
|
||||||
|
import jellyseerr from "./jellyseerr/widget";
|
||||||
import jellystat from "./jellystat/widget";
|
import jellystat from "./jellystat/widget";
|
||||||
import karakeep from "./karakeep/widget";
|
import karakeep from "./karakeep/widget";
|
||||||
import kavita from "./kavita/widget";
|
import kavita from "./kavita/widget";
|
||||||
@@ -110,7 +111,6 @@ import romm from "./romm/widget";
|
|||||||
import rutorrent from "./rutorrent/widget";
|
import rutorrent from "./rutorrent/widget";
|
||||||
import sabnzbd from "./sabnzbd/widget";
|
import sabnzbd from "./sabnzbd/widget";
|
||||||
import scrutiny from "./scrutiny/widget";
|
import scrutiny from "./scrutiny/widget";
|
||||||
import seerr from "./seerr/widget";
|
|
||||||
import slskd from "./slskd/widget";
|
import slskd from "./slskd/widget";
|
||||||
import sonarr from "./sonarr/widget";
|
import sonarr from "./sonarr/widget";
|
||||||
import speedtest from "./speedtest/widget";
|
import speedtest from "./speedtest/widget";
|
||||||
@@ -202,7 +202,7 @@ const widgets = {
|
|||||||
jackett,
|
jackett,
|
||||||
jdownloader,
|
jdownloader,
|
||||||
jellyfin: emby,
|
jellyfin: emby,
|
||||||
jellyseerr: seerr,
|
jellyseerr,
|
||||||
jellystat,
|
jellystat,
|
||||||
kavita,
|
kavita,
|
||||||
komga,
|
komga,
|
||||||
@@ -262,7 +262,6 @@ const widgets = {
|
|||||||
rutorrent,
|
rutorrent,
|
||||||
sabnzbd,
|
sabnzbd,
|
||||||
scrutiny,
|
scrutiny,
|
||||||
seerr,
|
|
||||||
slskd,
|
slskd,
|
||||||
sonarr,
|
sonarr,
|
||||||
speedtest,
|
speedtest,
|
||||||
|
|||||||
Reference in New Issue
Block a user