diff --git a/src/utils/proxy/use-widget-api.js b/src/utils/proxy/use-widget-api.js index 52e986e1b..e4744038e 100644 --- a/src/utils/proxy/use-widget-api.js +++ b/src/utils/proxy/use-widget-api.js @@ -7,7 +7,11 @@ export default function useWidgetAPI(widget, ...options) { if (options && options[1]?.refreshInterval) { config.refreshInterval = options[1].refreshInterval; } - const { data, error, mutate } = useSWR(formatProxyUrl(widget, ...options), config); + let url = formatProxyUrl(widget, ...options) + if (options[0] === "") { + url = null + } + const { data, error, mutate } = useSWR(url, config); // make the data error the top-level error return { data, error: data?.error ?? error, mutate } } diff --git a/src/widgets/lidarr/component.jsx b/src/widgets/lidarr/component.jsx index a6aa82c7f..77d831f84 100644 --- a/src/widgets/lidarr/component.jsx +++ b/src/widgets/lidarr/component.jsx @@ -9,7 +9,9 @@ export default function Component({ service }) { const { widget } = service; - const { data: albumsData, error: albumsError } = useWidgetAPI(widget, "album"); + // album API endpoint can get massive, so we prevent calling if not included in fields see https://github.com/benphelps/homepage/discussions/1577 + const showAlbums = widget.fields?.includes('albums') || !widget.fields; + const { data: albumsData, error: albumsError } = useWidgetAPI(widget, showAlbums ? "album" : ""); const { data: wantedData, error: wantedError } = useWidgetAPI(widget, "wanted/missing"); const { data: queueData, error: queueError } = useWidgetAPI(widget, "queue/status"); @@ -18,7 +20,7 @@ export default function Component({ service }) { return ; } - if (!albumsData || !wantedData || !queueData) { + if ((showAlbums && !albumsData) || !wantedData || !queueData) { return ( @@ -32,7 +34,7 @@ export default function Component({ service }) { - + {showAlbums && } ); }