Create the MySpeed widget

This commit is contained in:
Mathias Wagner 2024-06-23 17:07:10 +02:00
parent 0962e3384c
commit 84e1b92125
No known key found for this signature in database
GPG Key ID: B8DC354B0A1F5B44
2 changed files with 78 additions and 0 deletions

View File

@ -0,0 +1,64 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data, error } = useWidgetAPI(widget, "info");
if (error) {
return <Container service={service} error={error} />;
}
if (!data) {
return (
<Container service={service}>
<Block label="myspeed.ping" />
<Block label="myspeed.download" />
<Block label="myspeed.upload" />
</Container>
);
}
if (data.message) {
return <Container service={service} error={data} />;
}
if (Array.isArray(data) && data.length > 0 && data[0].error) {
try {
return <Container service={service} error={JSON.parse(data[0].error)} />;
} catch (e) {
return <Container service={service} error={data[0].error} />;
}
}
return (
<Container service={service}>
<Block
label="myspeed.ping"
value={t("common.ms", {
value: data[0].ping,
style: "unit",
unit: "millisecond",
})}
/>
<Block
label="myspeed.download"
value={t("common.bitrate", {
value: data[0].download * 1000 * 1000,
decimals: 2,
})}
/>
<Block
label="myspeed.upload"
value={t("common.bitrate", {
value: data[0].upload * 1000 * 1000,
decimals: 2,
})}
/>
</Container>
);
}

View File

@ -0,0 +1,14 @@
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
const widget = {
api: "{url}/api/{endpoint}",
proxyHandler: credentialedProxyHandler,
mappings: {
info: {
endpoint: "speedtests?limit=1"
}
}
};
export default widget;