WIP: Add maintainerr widget

This commit is contained in:
Jack Bailey 2024-05-24 17:10:12 +01:00
parent 0a75c831a6
commit edaab688bb
No known key found for this signature in database
8 changed files with 57 additions and 2 deletions

View File

@ -111,6 +111,7 @@ export async function servicesResponse() {
try {
configuredServices = cleanServiceGroups(await servicesFromConfig());
console.log({configuredServices: configuredServices[2]})
} catch (e) {
console.error("Failed to load services.yaml, please check for errors");
if (e) console.error(e.toString());

View File

@ -434,6 +434,9 @@ export function cleanServiceGroups(groups) {
namespace,
podSelector,
// maintainerr
collectionId,
// mjpeg
fit,
stream,
@ -564,6 +567,10 @@ export function cleanServiceGroups(groups) {
if (pointsLimit) cleanedService.widget.pointsLimit = pointsLimit;
if (diskUnits) cleanedService.widget.diskUnits = diskUnits;
}
if (type === "maintainerr") {
if (collectionId) cleanedService.widget.collectionId = collectionId;
console.log({ collectionId, cleanedService });
}
if (type === "mjpeg") {
if (stream) cleanedService.widget.stream = stream;
if (fit) cleanedService.widget.fit = fit;

View File

@ -99,7 +99,7 @@ export default async function credentialedProxyHandler(req, res, map) {
return res
.status(500)
.json({ error: { message: "Invalid data", url: sanitizeErrorURL(url), data: resultData } });
}
}
if (map) resultData = map(resultData);
}

View File

@ -14,7 +14,6 @@ export default function validateWidgetData(widget, endpoint, data) {
valid = false;
}
}
if (dataParsed && Object.entries(dataParsed).length) {
const mappings = widgets[widget.type]?.mappings;
if (mappings) {

View File

@ -53,6 +53,7 @@ const components = {
komga: dynamic(() => import("./komga/component")),
kopia: dynamic(() => import("./kopia/component")),
lidarr: dynamic(() => import("./lidarr/component")),
maintainerr: dynamic(() => import("./maintainerr/component")),
mastodon: dynamic(() => import("./mastodon/component")),
mealie: dynamic(() => import("./mealie/component")),
medusa: dynamic(() => import("./medusa/component")),

View File

@ -0,0 +1,36 @@
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 { categoryId } = widget;
console.log({categoryId});
const { data: collections, error: statsError } = useWidgetAPI(widget, "collections");
if (statsError) {
return <Container service={service} error={statsError} />;
}
if (!collections) {
return (
<Container service={service}>
<Block label="overseerr.pending" />
<Block label="overseerr.processing" />
<Block label="overseerr.approved" />
<Block label="overseerr.available" />
</Container>
);
}
return (
<Container service={service}>
<Block label="overseerr.pending" value={t("common.number", { value: collections.length })} />
</Container>
);
}

View File

@ -0,0 +1,9 @@
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
import { asJson, jsonArrayFilter } from "utils/proxy/api-helpers";
const widget = {
api: "{url}/api/{endpoint}",
proxyHandler: credentialedProxyHandler,
};
export default widget;

View File

@ -45,6 +45,7 @@ import kavita from "./kavita/widget";
import komga from "./komga/widget";
import kopia from "./kopia/widget";
import lidarr from "./lidarr/widget";
import maintainerr from "./maintainerr/widget";
import mastodon from "./mastodon/widget";
import mealie from "./mealie/widget";
import medusa from "./medusa/widget";
@ -162,6 +163,7 @@ const widgets = {
komga,
kopia,
lidarr,
maintainerr,
mastodon,
mealie,
medusa,