From f7000a280e6fc7a7012bb2a48adeec8ba533255c Mon Sep 17 00:00:00 2001 From: Pablo Garcia de los Salmones Valencia Date: Tue, 20 Sep 2022 04:41:56 +0200 Subject: [PATCH] Add Syncthing Relay Server widget --- public/locales/en/common.json | 5 +++ src/components/services/widget.jsx | 2 + .../services/widgets/service/strelaysrv.jsx | 38 +++++++++++++++++++ src/pages/api/services/proxy.js | 1 + src/utils/api-helpers.js | 1 + 5 files changed, 47 insertions(+) create mode 100644 src/components/services/widgets/service/strelaysrv.jsx diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 26f2e432a..23e6dad81 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -168,5 +168,10 @@ "jackett": { "configured": "Configured", "errored": "Errored" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Data Relayed" } } diff --git a/src/components/services/widget.jsx b/src/components/services/widget.jsx index 01dec3066..c3fb16305 100644 --- a/src/components/services/widget.jsx +++ b/src/components/services/widget.jsx @@ -27,6 +27,7 @@ import Gotify from "./widgets/service/gotify"; import Prowlarr from "./widgets/service/prowlarr"; import Jackett from "./widgets/service/jackett"; import AdGuard from "./widgets/service/adguard"; +import StRelaySrv from "./widgets/service/strelaysrv"; const widgetMappings = { docker: Docker, @@ -56,6 +57,7 @@ const widgetMappings = { prowlarr: Prowlarr, jackett: Jackett, adguard: AdGuard, + strelaysrv: StRelaySrv, }; export default function Widget({ service }) { diff --git a/src/components/services/widgets/service/strelaysrv.jsx b/src/components/services/widgets/service/strelaysrv.jsx new file mode 100644 index 000000000..8491d7e9f --- /dev/null +++ b/src/components/services/widgets/service/strelaysrv.jsx @@ -0,0 +1,38 @@ +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 StRelaySrv({ service }) { + const { t } = useTranslation(); + + const config = service.widget; + + const { data: statsData, error: statsError } = useSWR(formatApiUrl(config, `status`)); + + if (statsError) { + return ; + } + + if (!statsData) { + return ( + + + + + + ); + } + + return ( + + + + + + + ); +} diff --git a/src/pages/api/services/proxy.js b/src/pages/api/services/proxy.js index f0a7eed59..fa8b7ab36 100644 --- a/src/pages/api/services/proxy.js +++ b/src/pages/api/services/proxy.js @@ -81,6 +81,7 @@ const serviceProxyHandlers = { sabnzbd: genericProxyHandler, jackett: genericProxyHandler, adguard: genericProxyHandler, + strelaysrv: genericProxyHandler, // uses X-API-Key (or similar) header auth gotify: credentialedProxyHandler, portainer: credentialedProxyHandler, diff --git a/src/utils/api-helpers.js b/src/utils/api-helpers.js index be24f8a28..464907818 100644 --- a/src/utils/api-helpers.js +++ b/src/utils/api-helpers.js @@ -24,6 +24,7 @@ const formats = { prowlarr: `{url}/api/v1/{endpoint}`, jackett: `{url}/api/v2.0/{endpoint}?apikey={key}&configured=true`, adguard: `{url}/control/{endpoint}`, + strelaysrv: `{url}/{endpoint}`, }; export function formatApiCall(api, args) {