Add Matrix/Synapse widget
This commit is contained in:
parent
1066d17f70
commit
a4066d63cc
@ -757,5 +757,10 @@
|
||||
"inCinemas": "In cinemas",
|
||||
"physicalRelease": "Physical release",
|
||||
"digitalRelease": "Digital release"
|
||||
},
|
||||
"synapse": {
|
||||
"users": "Users",
|
||||
"rooms": "Rooms",
|
||||
"peers": "Peers"
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,6 +36,7 @@ export default async function credentialedProxyHandler(req, res, map) {
|
||||
"tailscale",
|
||||
"truenas",
|
||||
"pterodactyl",
|
||||
"synapse",
|
||||
].includes(widget.type))
|
||||
{
|
||||
headers.Authorization = `Bearer ${widget.key}`;
|
||||
|
||||
@ -88,6 +88,7 @@ const components = {
|
||||
scrutiny: dynamic(() => import("./scrutiny/component")),
|
||||
sonarr: dynamic(() => import("./sonarr/component")),
|
||||
speedtest: dynamic(() => import("./speedtest/component")),
|
||||
synapse: dynamic(() => import("./synapse/component")),
|
||||
strelaysrv: dynamic(() => import("./strelaysrv/component")),
|
||||
tailscale: dynamic(() => import("./tailscale/component")),
|
||||
tautulli: dynamic(() => import("./tautulli/component")),
|
||||
|
||||
37
src/widgets/synapse/component.jsx
Normal file
37
src/widgets/synapse/component.jsx
Normal file
@ -0,0 +1,37 @@
|
||||
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: usersData, error: usersError } = useWidgetAPI(widget, "users");
|
||||
const { data: roomsData, error: roomsError } = useWidgetAPI(widget, "rooms");
|
||||
const { data: peersData, error: peersError } = useWidgetAPI(widget, "peers");
|
||||
|
||||
if (usersError || roomsError || peersError) {
|
||||
return <Container service={service} error={usersError ?? roomsError ?? peersError} />;
|
||||
}
|
||||
|
||||
if (!usersData || !roomsData || !peersData) {
|
||||
return (
|
||||
<Container service={service}>
|
||||
<Block label="synapse.users" />
|
||||
<Block label="synapse.rooms" />
|
||||
<Block label="synapse.peers" />
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<Container service={service}>
|
||||
<Block label="synapse.users" value={t("common.number", { value: usersData.total })} />
|
||||
<Block label="synapse.rooms" value={t("common.number", { value: roomsData.total_rooms })} />
|
||||
<Block label="synapse.peers" value={t("common.number", { value: peersData.total })} />
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
20
src/widgets/synapse/widget.js
Normal file
20
src/widgets/synapse/widget.js
Normal file
@ -0,0 +1,20 @@
|
||||
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
|
||||
|
||||
const widget = {
|
||||
api: "{url}/_synapse/admin/{endpoint}",
|
||||
proxyHandler: credentialedProxyHandler,
|
||||
|
||||
mappings: {
|
||||
users: {
|
||||
endpoint: "v2/users",
|
||||
},
|
||||
rooms: {
|
||||
endpoint: "v1/rooms",
|
||||
},
|
||||
peers: {
|
||||
endpoint: "v1/federation/destinations",
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default widget;
|
||||
@ -81,6 +81,7 @@ import sabnzbd from "./sabnzbd/widget";
|
||||
import scrutiny from "./scrutiny/widget";
|
||||
import sonarr from "./sonarr/widget";
|
||||
import speedtest from "./speedtest/widget";
|
||||
import synapse from "./synapse/widget";
|
||||
import strelaysrv from "./strelaysrv/widget";
|
||||
import tailscale from "./tailscale/widget";
|
||||
import tautulli from "./tautulli/widget";
|
||||
@ -183,6 +184,7 @@ const widgets = {
|
||||
scrutiny,
|
||||
sonarr,
|
||||
speedtest,
|
||||
synapse,
|
||||
strelaysrv,
|
||||
tailscale,
|
||||
tautulli,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user