Add Peertube widget

This commit is contained in:
Pablo Garcia de los Salmones Valencia 2022-09-20 04:05:54 +02:00
parent 586ded6b3f
commit e06a67076e
No known key found for this signature in database
GPG Key ID: 0672D5575556C568
5 changed files with 46 additions and 0 deletions

View File

@ -173,5 +173,10 @@
"user_count": "Users", "user_count": "Users",
"status_count": "Posts", "status_count": "Posts",
"domain_count": "Domains" "domain_count": "Domains"
},
"peertube": {
"totalUsers": "Users",
"totalVideos": "Videos",
"totalLocalVideoFilesSize": "Video Storaged"
} }
} }

View File

@ -28,6 +28,7 @@ import Prowlarr from "./widgets/service/prowlarr";
import Jackett from "./widgets/service/jackett"; import Jackett from "./widgets/service/jackett";
import AdGuard from "./widgets/service/adguard"; import AdGuard from "./widgets/service/adguard";
import Mastodon from "./widgets/service/mastodon"; import Mastodon from "./widgets/service/mastodon";
import Peertube from "./widgets/service/peertube";
const widgetMappings = { const widgetMappings = {
docker: Docker, docker: Docker,
@ -58,6 +59,7 @@ const widgetMappings = {
jackett: Jackett, jackett: Jackett,
adguard: AdGuard, adguard: AdGuard,
mastodon: Mastodon, mastodon: Mastodon,
peertube: Peertube
}; };
export default function Widget({ service }) { export default function Widget({ service }) {

View File

@ -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 Peertube({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { data: statsData, error: statsError } = useSWR(formatApiUrl(config, `server/stats`));
if (statsError) {
return <Widget error={t("widget.api_error")} />;
}
if (!statsData) {
return (
<Widget>
<Block label={t("peertube.totalUsers")} />
<Block label={t("peertube.totalVideos")} />
<Block label={t("peertube.totalLocalVideoFilesSize")} />
</Widget>
);
}
return (
<Widget>
<Block label={t("peertube.totalUsers")} value={t("common.number", { value: statsData.totalUsers })} />
<Block label={t("peertube.totalVideos")} value={t("common.number", { value: statsData.totalVideos })} />
<Block label={t("peertube.totalLocalVideoFilesSize")} value={t("common.bytes", { value: statsData.totalLocalVideoFilesSize })} />
</Widget>
);
}

View File

@ -82,6 +82,7 @@ const serviceProxyHandlers = {
jackett: genericProxyHandler, jackett: genericProxyHandler,
adguard: genericProxyHandler, adguard: genericProxyHandler,
mastodon: genericProxyHandler, mastodon: genericProxyHandler,
peertube: genericProxyHandler,
// uses X-API-Key (or similar) header auth // uses X-API-Key (or similar) header auth
gotify: credentialedProxyHandler, gotify: credentialedProxyHandler,
portainer: credentialedProxyHandler, portainer: credentialedProxyHandler,

View File

@ -25,6 +25,7 @@ const formats = {
jackett: `{url}/api/v2.0/{endpoint}?apikey={key}&configured=true`, jackett: `{url}/api/v2.0/{endpoint}?apikey={key}&configured=true`,
adguard: `{url}/control/{endpoint}`, adguard: `{url}/control/{endpoint}`,
mastodon: `{url}/api/v1/{endpoint}`, mastodon: `{url}/api/v1/{endpoint}`,
peertube: `{url}/api/v1/{endpoint}`,
}; };
export function formatApiCall(api, args) { export function formatApiCall(api, args) {