From 1a6259c82cca5c18bf6f309ed9191f27efae70f4 Mon Sep 17 00:00:00 2001 From: chiragkrishna Date: Sun, 15 Sep 2024 20:11:18 +0530 Subject: [PATCH] Add Kapowarr Widget --- src/widgets/kapowarr/component.jsx | 47 ++++++++++++++++++++++++++++++ src/widgets/kapowarr/widget.js | 8 +++++ 2 files changed, 55 insertions(+) create mode 100644 src/widgets/kapowarr/component.jsx create mode 100644 src/widgets/kapowarr/widget.js diff --git a/src/widgets/kapowarr/component.jsx b/src/widgets/kapowarr/component.jsx new file mode 100644 index 00000000..7c85d7e1 --- /dev/null +++ b/src/widgets/kapowarr/component.jsx @@ -0,0 +1,47 @@ +import { useTranslation } from 'react-i18next'; + +import Container from "components/services/widget/container"; +import Block from "components/services/widget/block"; +import useWidgetAPI from "utils/proxy/use-widget-api"; + +const ROMM_DEFAULT_FIELDS = ["volumes", "issues", "monitored"]; +const MAX_ALLOWED_FIELDS = 4; + +export default function Component({ service }) { + const { t } = useTranslation(); + const { widget } = service; + + const { data: stats, error: statsError } = useWidgetAPI(widget); + + if (statsError) { + return ; + } + + if (!widget.fields?.length > 0) { + widget.fields = ROMM_DEFAULT_FIELDS; + } else if (widget.fields.length > MAX_ALLOWED_FIELDS) { + widget.fields = widget.fields.slice(0, MAX_ALLOWED_FIELDS); + } + + if (!stats || stats.error || statsError || !stats.result) { + return ( + + + + + + + + ); + } + + return ( + + + + + + + + ); +} diff --git a/src/widgets/kapowarr/widget.js b/src/widgets/kapowarr/widget.js new file mode 100644 index 00000000..ae6c1d54 --- /dev/null +++ b/src/widgets/kapowarr/widget.js @@ -0,0 +1,8 @@ +import genericProxyHandler from "utils/proxy/handlers/generic"; + +const widget = { + api: "{url}/api/volumes/stats?api_key={key}", + proxyHandler: genericProxyHandler, +}; + +export default widget;