Adding gitea widget.

This commit is contained in:
Brice Johnson 2023-05-08 23:30:15 -06:00
parent 892fc0842d
commit e48b7c48b0
5 changed files with 73 additions and 0 deletions

View File

@ -594,6 +594,13 @@
"gross_percent_1y": "One year", "gross_percent_1y": "One year",
"gross_percent_max": "All time" "gross_percent_max": "All time"
}, },
"gitea": {
"notifications": "Notifications",
"Issue": "Issues",
"Pull": "Pull Requests",
"Commit": "Commits",
"Repository": "Repositories"
},
"audiobookshelf": { "audiobookshelf": {
"podcasts": "Podcasts", "podcasts": "Podcasts",
"books": "Books", "books": "Books",

View File

@ -19,6 +19,7 @@ const components = {
fileflows: dynamic(() => import("./fileflows/component")), fileflows: dynamic(() => import("./fileflows/component")),
flood: dynamic(() => import("./flood/component")), flood: dynamic(() => import("./flood/component")),
freshrss: dynamic(() => import("./freshrss/component")), freshrss: dynamic(() => import("./freshrss/component")),
gitea: dynamic(() => import("./gitea/component")),
ghostfolio: dynamic(() => import("./ghostfolio/component")), ghostfolio: dynamic(() => import("./ghostfolio/component")),
gluetun: dynamic(() => import("./gluetun/component")), gluetun: dynamic(() => import("./gluetun/component")),
gotify: dynamic(() => import("./gotify/component")), gotify: dynamic(() => import("./gotify/component")),

View File

@ -0,0 +1,46 @@
import { useTranslation } from "next-i18next";
import Block from "components/services/widget/block";
import Container from "components/services/widget/container";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component ({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: notifications, error: giteaError } = useWidgetAPI(widget, "allNotifications");
const notificationTypes = (notifications ?? []).reduce((acc, notification) => {
acc[notification.subject.type].push(notification);
return acc;
}
, {
"Issue": [],
"Pull": [],
"Commit": [],
"Repository": []
}
);
if (giteaError) {
return <Container service={service} error={giteaError} />;
}
if (!notifications) return (
<Container service={service}>
<Block label="gitea.notifications" />
</Container>
);
return (
<Container service={service}>
{Object.keys(notificationTypes).map((type) =>
<Block key={type} label={`gitea.${type}`}
value={t("common.number", { value: notificationTypes[type].length })} />
)}
</Container>
);
}

View File

@ -0,0 +1,17 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/api/v1/{endpoint}?access_token={key}",
proxyHandler: genericProxyHandler,
mappings: {
"allNotifications": {
endpoint: "notifications",
},
"newNotifications": {
endpoint: "notifications/new",
},
},
};
export default widget;

View File

@ -15,6 +15,7 @@ import fileflows from "./fileflows/widget";
import flood from "./flood/widget"; import flood from "./flood/widget";
import freshrss from "./freshrss/widget"; import freshrss from "./freshrss/widget";
import ghostfolio from "./ghostfolio/widget"; import ghostfolio from "./ghostfolio/widget";
import gitea from "./gitea/widget";
import gluetun from "./gluetun/widget"; import gluetun from "./gluetun/widget";
import gotify from "./gotify/widget"; import gotify from "./gotify/widget";
import grafana from "./grafana/widget"; import grafana from "./grafana/widget";
@ -97,6 +98,7 @@ const widgets = {
flood, flood,
freshrss, freshrss,
ghostfolio, ghostfolio,
gitea,
gluetun, gluetun,
gotify, gotify,
grafana, grafana,