Initial commit

This commit is contained in:
codey 2025-01-22 10:53:58 -05:00
commit a22fe38f7d
8 changed files with 219 additions and 0 deletions

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 { data, error } = useWidgetAPI(widget, "widget", {
refreshInterval: 5000,
});
if (error) {
return <Container service={service} error={error} />;
}
if (!data) {
return (
<Container service={service}>
<Block label="Cache" />
<Block label="LRCLib" />
<Block label="Genius" />
</Container>
);
}
return (
<Container service={service}>
<Block label="Cache" value={t("common.number", { value: data.cache })} />
<Block label="LRCLib" value={t("common.number", { value: data.lrclib })} />
<Block label="Genius" value={t("common.number", { value: data.genius })} />
</Container>
);
}

View File

@ -0,0 +1,19 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/{endpoint}" ,
proxyHandler: genericProxyHandler ,
mappings: {
"widget": {
endpoint: "widget/lyrics/",
method: "GET",
headers: {
"Accept": "application/json",
"Accept-Content": "application/json",
},
},
},
};
export default widget;

View File

@ -0,0 +1,33 @@
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, "widget", {
refreshInterval: 5000,
});
if (error) {
return <Container service={service} error={error} />;
}
if (!data) {
return (
<Container service={service}>
<Block label="Now Playing" />
</Container>
);
}
return (
<Container service={service}>
<img src={`https://codey.lol/images/radio_art.jpg?${Date.now()}`} height={85} width={85}></img>
<Block label="Now Playing" value={ data.now_playing } />
</Container>
);
}

View File

@ -0,0 +1,19 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/{endpoint}" ,
proxyHandler: genericProxyHandler ,
mappings: {
"widget": {
endpoint: "widget/radio/",
method: "GET",
headers: {
"Accept": "application/json",
"Accept-Content": "application/json",
},
},
},
};
export default widget;

View File

@ -0,0 +1,38 @@
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, "widget", {
refreshInterval: 5000,
});
if (error) {
return <Container service={service} error={error} />;
}
if (!data) {
return (
<Container service={service}>
<Block label="Response Time" />
<Block label="Stored Keys" />
<Block label="Indexed Lyrics" />
<Block label="Stored Sessions" />
</Container>
);
}
return (
<Container service={service}>
<Block label="Response Time" value={`${data.responseTime}s` } />
<Block label="Stored Keys" value={t("common.number", { value: data.storedKeys })} />
<Block label="Indexed Lyrics" value={t("common.number", { value: data.indexedLyrics })} />
<Block label="Stored Sessions" value={t("common.number", { value: data.sessions })} />
</Container>
);
}

View File

@ -0,0 +1,19 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/{endpoint}" ,
proxyHandler: genericProxyHandler ,
mappings: {
"widget": {
endpoint: "widget/redis/",
method: "GET",
headers: {
"Accept": "application/json",
"Accept-Content": "application/json",
},
},
},
};
export default widget;

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 { data, error } = useWidgetAPI(widget, "widget", {
refreshInterval: 5000,
}
);
if (error) {
return <Container service={service} error={error} />;
}
if (!data) {
return (
<Container service={service}>
<Block label="Stored Tracks" />
<Block label="Distinct Artists" />
<Block label="Total Lyrics Length" />
</Container>
);
}
return (
<Container service={service}>
<Block label="Stored Tracks" value={t("common.number", { value: data.storedRows })} />
<Block label="Distinct Artists" value={t("common.number", { value: data.distinctArtists })} />
<Block label="Total Lyrics Length" value={t("common.number", { value: data.lyricsLength })} />
</Container>
);
}

View File

@ -0,0 +1,19 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/{endpoint}" ,
proxyHandler: genericProxyHandler ,
mappings: {
"widget": {
endpoint: "widget/sqlite/",
method: "GET",
headers: {
"Accept": "application/json",
"Accept-Content": "application/json",
},
},
},
};
export default widget;