diff --git a/src/widgets/calendar/integrations/lidarr.jsx b/src/widgets/calendar/integrations/lidarr.jsx new file mode 100644 index 00000000..4bd42775 --- /dev/null +++ b/src/widgets/calendar/integrations/lidarr.jsx @@ -0,0 +1,36 @@ +import { DateTime } from "luxon"; +import { useContext, useEffect } from "react"; + +import useWidgetAPI from "../../../utils/proxy/use-widget-api"; +import { EventContext } from "../../../utils/contexts/calendar"; +import Error from "../../../components/services/widget/error"; + +export default function Integration({ config, params }) { + const { setEvents } = useContext(EventContext); + const { data: lidarrData, error: lidarrError } = useWidgetAPI(config, "calendar", + { ...params, includeArtist: 'false', ...config?.params ?? {} } + ); + + useEffect(() => { + if (!lidarrData || lidarrError) { + return; + } + + const eventsToAdd = {}; + + lidarrData?.forEach(event => { + const title = `${event.artist.artistName} - ${event.title}`; + + eventsToAdd[title] = { + title, + date: DateTime.fromISO(event.releaseDate), + color: config?.color ?? 'green' + }; + }) + + setEvents((prevEvents) => ({ ...prevEvents, ...eventsToAdd })); + }, [lidarrData, lidarrError, config, setEvents]); + + const error = lidarrError ?? lidarrData?.error; + return error && +} diff --git a/src/widgets/lidarr/widget.js b/src/widgets/lidarr/widget.js index 2f036726..f7e26682 100644 --- a/src/widgets/lidarr/widget.js +++ b/src/widgets/lidarr/widget.js @@ -14,6 +14,10 @@ const widget = { "queue/status": { endpoint: "queue/status", }, + calendar: { + endpoint: "calendar", + params: ["start", "end", "unmonitored", "includeArtist"], + }, }, };