wrapped proxy calls via useWidgetAPI

This commit is contained in:
Ben Phelps 2022-09-27 22:59:14 +03:00
parent 649f0038bc
commit 0a58f259ff
30 changed files with 115 additions and 153 deletions

View file

@ -0,0 +1,7 @@
import useSWR from "swr";
import { formatProxyUrl } from "./api-helpers";
export default function useWidgetAPI(widget, ...options) {
return useSWR(formatProxyUrl(widget, ...options));
}

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: adguardData, error: adguardError } = useSWR(formatProxyUrl(config, "stats"));
const { data: adguardData, error: adguardError } = useWidgetAPI(widget, "stats");
if (adguardError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,18 +1,17 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: usersData, error: usersError } = useSWR(formatProxyUrl(config, "users"));
const { data: loginsData, error: loginsError } = useSWR(formatProxyUrl(config, "login"));
const { data: failedLoginsData, error: failedLoginsError } = useSWR(formatProxyUrl(config, "login_failed"));
const { data: usersData, error: usersError } = useWidgetAPI(widget, "users");
const { data: loginsData, error: loginsError } = useWidgetAPI(widget, "login");
const { data: failedLoginsData, error: failedLoginsError } = useWidgetAPI(widget, "login_failed");
if (usersError || loginsError || failedLoginsError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,17 +1,16 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: episodesData, error: episodesError } = useSWR(formatProxyUrl(config, "episodes"));
const { data: moviesData, error: moviesError } = useSWR(formatProxyUrl(config, "movies"));
const { data: episodesData, error: episodesError } = useWidgetAPI(widget, "episodes");
const { data: moviesData, error: moviesError } = useWidgetAPI(widget, "movies");
if (episodesError || moviesError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,4 +1,3 @@
import useSWR from "swr";
import { useState } from "react";
import { useTranslation } from "next-i18next";
import classNames from "classnames";
@ -6,7 +5,7 @@ import classNames from "classnames";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import Dropdown from "components/services/dropdown";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
@ -20,16 +19,14 @@ export default function Component({ service }) {
const [dateRange, setDateRange] = useState(dateRangeOptions[0].value);
const config = service.widget;
const currencyCode = config.currency ?? "USD";
const { symbols } = config;
const { widget } = service;
const { symbols } = widget;
const currencyCode = widget.currency ?? "USD";
const { data: statsData, error: statsError } = useSWR(
formatProxyUrl(config, "v1/cryptocurrency/quotes/latest", {
symbol: `${symbols.join(",")}`,
convert: `${currencyCode}`,
})
);
const { data: statsData, error: statsError } = useWidgetAPI(widget, "v1/cryptocurrency/quotes/latest", {
symbol: `${symbols.join(",")}`,
convert: `${currencyCode}`,
});
if (!symbols || symbols.length === 0) {
return (

View file

@ -9,13 +9,13 @@ import Block from "components/services/widget/block";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: statusData, error: statusError } = useSWR(
`/api/docker/status/${config.container}/${config.server || ""}`
`/api/docker/status/${widget.container}/${widget.server || ""}`
);
const { data: statsData, error: statsError } = useSWR(`/api/docker/stats/${config.container}/${config.server || ""}`);
const { data: statsData, error: statsError } = useSWR(`/api/docker/stats/${widget.container}/${widget.server || ""}`);
if (statsError || statusError) {
return <Container error={t("widget.api_error")} />;

View file

@ -151,18 +151,18 @@ function SessionEntry({ playCommand, session }) {
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const {
data: sessionsData,
error: sessionsError,
mutate: sessionMutate,
} = useSWR(formatProxyUrl(config, "Sessions"), {
} = useSWR(formatProxyUrl(widget, "Sessions"), {
refreshInterval: 5000,
});
async function handlePlayCommand(session, command) {
const url = formatProxyUrlWithSegments(config, "PlayControl", {
const url = formatProxyUrlWithSegments(widget, "PlayControl", {
sessionId: session.Id,
command,
});

View file

@ -1,18 +1,17 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: appsData, error: appsError } = useSWR(formatProxyUrl(config, `application`));
const { data: messagesData, error: messagesError } = useSWR(formatProxyUrl(config, `message`));
const { data: clientsData, error: clientsError } = useSWR(formatProxyUrl(config, `client`));
const { data: appsData, error: appsError } = useWidgetAPI(widget, "application");
const { data: messagesData, error: messagesError } = useWidgetAPI(widget, "message");
const { data: clientsData, error: clientsError } = useWidgetAPI(widget, "client");
if (appsError || messagesError || clientsError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: indexersData, error: indexersError } = useSWR(formatProxyUrl(config, "indexers"));
const { data: indexersData, error: indexersError } = useWidgetAPI(widget, "indexers");
if (indexersError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: statsData, error: statsError } = useSWR(formatProxyUrl(config, `request/count`));
const { data: statsData, error: statsError } = useWidgetAPI(widget, "request/count");
if (statsError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,18 +1,17 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: albumsData, error: albumsError } = useSWR(formatProxyUrl(config, "album"));
const { data: wantedData, error: wantedError } = useSWR(formatProxyUrl(config, "wanted/missing"));
const { data: queueData, error: queueError } = useSWR(formatProxyUrl(config, "queue/status"));
const { data: albumsData, error: albumsError } = useWidgetAPI(widget, "album");
const { data: wantedData, error: wantedError } = useWidgetAPI(widget, "wanted/missing");
const { data: queueData, error: queueError } = useWidgetAPI(widget, "queue/status");
if (albumsError || wantedError || queueError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: statsData, error: statsError } = useSWR(formatProxyUrl(config, `instance`));
const { data: statsData, error: statsError } = useWidgetAPI(widget, "instance");
if (statsError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: infoData, error: infoError } = useSWR(formatProxyUrl(config, "nginx/proxy-hosts"));
const { data: infoData, error: infoError } = useWidgetAPI(widget, "nginx/proxy-hosts");
if (infoError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation("common");
const config = service.widget;
const { widget } = service;
const { data: statusData, error: statusError } = useSWR(formatProxyUrl(config, "status"));
const { data: statusData, error: statusError } = useWidgetAPI(widget, "status");
if (statusError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: statsData, error: statsError } = useSWR(formatProxyUrl(config, `Request/count`));
const { data: statsData, error: statsError } = useWidgetAPI(widget, "Request/count");
if (statsError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: statsData, error: statsError } = useSWR(formatProxyUrl(config, "request/count"));
const { data: statsData, error: statsError } = useWidgetAPI(widget, "request/count");
if (statsError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: piholeData, error: piholeError } = useSWR(formatProxyUrl(config, "api.php"));
const { data: piholeData, error: piholeError } = useWidgetAPI(widget, "api.php");
if (piholeError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,20 +1,17 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: containersData, error: containersError } = useSWR(
formatProxyUrl(config, `docker/containers/json`, {
all: 1,
})
);
const { data: containersData, error: containersError } = useWidgetAPI(widget, "docker/containers/json", {
all: 1,
});
if (containersError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,17 +1,16 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: indexersData, error: indexersError } = useSWR(formatProxyUrl(config, "indexer"));
const { data: grabsData, error: grabsError } = useSWR(formatProxyUrl(config, "indexerstats"));
const { data: indexersData, error: indexersError } = useWidgetAPI(widget, "indexer");
const { data: grabsData, error: grabsError } = useWidgetAPI(widget, "indexerstats");
if (indexersError || grabsError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: torrentData, error: torrentError } = useSWR(formatProxyUrl(config, "torrents/info"));
const { data: torrentData, error: torrentError } = useWidgetAPI(widget, "torrents/info");
if (torrentError) {
return <Container error={t("widget.api_error")} />;
@ -42,27 +41,12 @@ export default function Component({ service }) {
const leech = torrentData.length - completed;
let unitsDl = "KB/s";
let unitsUl = "KB/s";
rateDl /= 1024;
rateUl /= 1024;
if (rateDl > 1024) {
rateDl /= 1024;
unitsDl = "MB/s";
}
if (rateUl > 1024) {
rateUl /= 1024;
unitsUl = "MB/s";
}
return (
<Container>
<Block label={t("qbittorrent.leech")} value={t("common.number", { value: leech })} />
<Block label={t("qbittorrent.download")} value={`${rateDl.toFixed(2)} ${unitsDl}`} />
<Block label={t("qbittorrent.download")} value={t("common.bitrate", { value: rateDl })} />
<Block label={t("qbittorrent.seed")} value={t("common.number", { value: completed })} />
<Block label={t("qbittorrent.upload")} value={`${rateUl.toFixed(2)} ${unitsUl}`} />
<Block label={t("qbittorrent.upload")} value={t("common.bitrate", { value: rateUl })} />
</Container>
);
}

View file

@ -1,17 +1,16 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: moviesData, error: moviesError } = useSWR(formatProxyUrl(config, "movie"));
const { data: queuedData, error: queuedError } = useSWR(formatProxyUrl(config, "queue/status"));
const { data: moviesData, error: moviesError } = useWidgetAPI(widget, "movie");
const { data: queuedData, error: queuedError } = useWidgetAPI(widget, "queue/status");
if (moviesError || queuedError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,18 +1,17 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: booksData, error: booksError } = useSWR(formatProxyUrl(config, "book"));
const { data: wantedData, error: wantedError } = useSWR(formatProxyUrl(config, "wanted/missing"));
const { data: queueData, error: queueError } = useSWR(formatProxyUrl(config, "queue/status"));
const { data: booksData, error: booksError } = useWidgetAPI(widget, "book");
const { data: wantedData, error: wantedError } = useWidgetAPI(widget, "wanted/missing");
const { data: queueData, error: queueError } = useWidgetAPI(widget, "queue/status");
if (booksError || wantedError || queueError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: statusData, error: statusError } = useSWR(formatProxyUrl(config));
const { data: statusData, error: statusError } = useWidgetAPI(widget);
if (statusError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: queueData, error: queueError } = useSWR(formatProxyUrl(config, "queue"));
const { data: queueData, error: queueError } = useWidgetAPI(widget, "queue");
if (queueError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,18 +1,17 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: wantedData, error: wantedError } = useSWR(formatProxyUrl(config, "wanted/missing"));
const { data: queuedData, error: queuedError } = useSWR(formatProxyUrl(config, "queue"));
const { data: seriesData, error: seriesError } = useSWR(formatProxyUrl(config, "series"));
const { data: wantedData, error: wantedError } = useWidgetAPI(widget, "wanted/missing");
const { data: queuedData, error: queuedError } = useWidgetAPI(widget, "queue");
const { data: seriesData, error: seriesError } = useWidgetAPI(widget, "series");
if (wantedError || queuedError || seriesError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: speedtestData, error: speedtestError } = useSWR(formatProxyUrl(config, "speedtest/latest"));
const { data: speedtestData, error: speedtestError } = useWidgetAPI(widget, "speedtest/latest");
if (speedtestError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: statsData, error: statsError } = useSWR(formatProxyUrl(config, `status`));
const { data: statsData, error: statsError } = useWidgetAPI(widget, "status");
if (statsError) {
return <Container error={t("widget.api_error")} />;

View file

@ -117,9 +117,9 @@ function SessionEntry({ session }) {
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: activityData, error: activityError } = useSWR(formatProxyUrl(config, "get_activity"), {
const { data: activityData, error: activityError } = useSWR(formatProxyUrl(widget, "get_activity"), {
refreshInterval: 5000,
});

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: traefikData, error: traefikError } = useSWR(formatProxyUrl(config, "overview"));
const { data: traefikData, error: traefikError } = useWidgetAPI(widget, "overview");
if (traefikError) {
return <Container error={t("widget.api_error")} />;

View file

@ -1,16 +1,15 @@
import useSWR from "swr";
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import { formatProxyUrl } from "utils/proxy/api-helpers";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const config = service.widget;
const { widget } = service;
const { data: torrentData, error: torrentError } = useSWR(formatProxyUrl(config));
const { data: torrentData, error: torrentError } = useWidgetAPI(widget);
if (torrentError) {
return <Container error={t("widget.api_error")} />;