Merge pull request #832 from umens/main

Add Medusa widget
pull/841/head
Jason Fischer 2 years ago committed by GitHub
commit 12e111b76c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -255,6 +255,11 @@
"status_count": "Posts", "status_count": "Posts",
"domain_count": "Domains" "domain_count": "Domains"
}, },
"medusa": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series"
},
"miniflux": { "miniflux": {
"read": "Read", "read": "Read",
"unread": "Unread" "unread": "Unread"
@ -419,4 +424,4 @@
"print_progress": "Progress", "print_progress": "Progress",
"layers": "Layers" "layers": "Layers"
} }
} }

@ -21,6 +21,7 @@ const components = {
jellyseerr: dynamic(() => import("./jellyseerr/component")), jellyseerr: dynamic(() => import("./jellyseerr/component")),
lidarr: dynamic(() => import("./lidarr/component")), lidarr: dynamic(() => import("./lidarr/component")),
mastodon: dynamic(() => import("./mastodon/component")), mastodon: dynamic(() => import("./mastodon/component")),
medusa: dynamic(() => import("./medusa/component")),
miniflux: dynamic(() => import("./miniflux/component")), miniflux: dynamic(() => import("./miniflux/component")),
mikrotik: dynamic(() => import("./mikrotik/component")), mikrotik: dynamic(() => import("./mikrotik/component")),
moonraker: dynamic(() => import("./moonraker/component")), moonraker: dynamic(() => import("./moonraker/component")),

@ -0,0 +1,39 @@
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: statsData, error: statsError } = useWidgetAPI(widget, "stats");
const { data: futureData, error: futureError } = useWidgetAPI(widget, "future");
if (statsError || futureError) {
const finalError = statsError ?? futureError;
return <Container error={finalError} />;
}
if (!statsData || !futureData) {
return (
<Container service={service}>
<Block label="medusa.wanted" />
<Block label="medusa.queued" />
<Block label="medusa.series" />
</Container>
);
}
const { later, missed, soon, today } = futureData.data;
const future = later.length + missed.length + soon.length + today.length;
return (
<Container service={service}>
<Block label="medusa.wanted" value={t("common.number", { value: future })} />
<Block label="medusa.queued" value={t("common.number", { value: statsData.data.ep_snatched })} />
<Block label="medusa.series" value={t("common.number", { value: statsData.data.shows_active })} />
</Container>
);
}

@ -0,0 +1,23 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/api/v1/{key}/{endpoint}/",
proxyHandler: genericProxyHandler,
mappings: {
stats: {
endpoint: "?cmd=shows.stats",
validate: [
"data"
]
},
future: {
endpoint: "?cmd=future",
validate: [
"data"
]
}
}
};
export default widget;

@ -16,6 +16,7 @@ import jackett from "./jackett/widget";
import jellyseerr from "./jellyseerr/widget"; import jellyseerr from "./jellyseerr/widget";
import lidarr from "./lidarr/widget"; import lidarr from "./lidarr/widget";
import mastodon from "./mastodon/widget"; import mastodon from "./mastodon/widget";
import medusa from "./medusa/widget";
import miniflux from "./miniflux/widget"; import miniflux from "./miniflux/widget";
import mikrotik from "./mikrotik/widget"; import mikrotik from "./mikrotik/widget";
import moonraker from "./moonraker/widget"; import moonraker from "./moonraker/widget";
@ -74,6 +75,7 @@ const widgets = {
jellyseerr, jellyseerr,
lidarr, lidarr,
mastodon, mastodon,
medusa,
miniflux, miniflux,
mikrotik, mikrotik,
moonraker, moonraker,

Loading…
Cancel
Save