diff --git a/README.md b/README.md index 504cf99cb..5167f9bc3 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ - Container status (Running / Stopped) & statistics (CPU, Memory, Network) - Automatic service discovery (via labels) * Service Integration - - Currently supports Sonarr, Radarr, Ombi, Emby, Jellyfin, Tautulli (Plex), Jellyseerr ([ilusi0n](https://github.com/benphelps/homepage/pull/34)), NZBGet, ruTorrent + - Currently supports Sonarr, Radarr, Ombi, Emby, Jellyfin, Tautulli (Plex), Overseerr, Jellyseerr ([ilusi0n](https://github.com/benphelps/homepage/pull/34)), NZBGet, ruTorrent - Portainer, Traefik, Speedtest Tracker, PiHole, Nginx Proxy Manager ([aidenpwnz](https://github.com/benphelps/homepage/pull/45)) * Information & Utility Widgets - System Stats (Disk, CPU, Memory) diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 2276009e4..72c0e02ad 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -78,6 +78,11 @@ "approved": "Approved", "available": "Available" }, + "overseerr": { + "pending": "Pending", + "approved": "Approved", + "available": "Available" + }, "pihole": { "queries": "Queries", "blocked": "Blocked", diff --git a/src/components/services/widget.jsx b/src/components/services/widget.jsx index 199dbd5d4..41257a5c9 100644 --- a/src/components/services/widget.jsx +++ b/src/components/services/widget.jsx @@ -13,6 +13,7 @@ import Jellyfin from "./widgets/service/jellyfin"; import Speedtest from "./widgets/service/speedtest"; import Traefik from "./widgets/service/traefik"; import Jellyseerr from "./widgets/service/jellyseerr"; +import Overseerr from "./widgets/service/overseerr"; import Npm from "./widgets/service/npm"; import Tautulli from "./widgets/service/tautulli"; @@ -30,6 +31,7 @@ const widgetMappings = { speedtest: Speedtest, traefik: Traefik, jellyseerr: Jellyseerr, + overseerr: Overseerr, npm: Npm, tautulli: Tautulli, }; diff --git a/src/components/services/widgets/service/overseerr.jsx b/src/components/services/widgets/service/overseerr.jsx new file mode 100644 index 000000000..2e97d5a9e --- /dev/null +++ b/src/components/services/widgets/service/overseerr.jsx @@ -0,0 +1,37 @@ +import useSWR from "swr"; +import { useTranslation } from "react-i18next"; + +import Widget from "../widget"; +import Block from "../block"; + +import { formatApiUrl } from "utils/api-helpers"; + +export default function Overseerr({ service }) { + const { t } = useTranslation(); + + const config = service.widget; + + const { data: statsData, error: statsError } = useSWR(formatApiUrl(config, `request/count`)); + + if (statsError) { + return ; + } + + if (!statsData) { + return ( + + + + + + ); + } + + return ( + + + + + + ); +} diff --git a/src/pages/api/services/proxy.js b/src/pages/api/services/proxy.js index 970008e1f..c4ef2b3bc 100644 --- a/src/pages/api/services/proxy.js +++ b/src/pages/api/services/proxy.js @@ -17,6 +17,7 @@ const serviceProxyHandlers = { // uses X-API-Key header auth portainer: credentialedProxyHandler, jellyseerr: credentialedProxyHandler, + overseerr: credentialedProxyHandler, ombi: credentialedProxyHandler, // super specific handlers rutorrent: rutorrentProxyHandler, diff --git a/src/utils/api-helpers.js b/src/utils/api-helpers.js index a889487ef..c8953a825 100644 --- a/src/utils/api-helpers.js +++ b/src/utils/api-helpers.js @@ -10,6 +10,7 @@ const formats = { portainer: `{url}/api/endpoints/{env}/{endpoint}`, rutorrent: `{url}/plugins/httprpc/action.php`, jellyseerr: `{url}/api/v1/{endpoint}`, + overseerr: `{url}/api/v1/{endpoint}`, ombi: `{url}/api/v1/{endpoint}`, npm: `{url}/api/{endpoint}`, };