mirror of
				https://github.com/karl0ss/homepage.git
				synced 2025-10-30 22:13:59 +00:00 
			
		
		
		
	Merge pull request #1437 from GAntoine/hide-widget-on-error-setting
Add setting to hide widgets on failure
This commit is contained in:
		
						commit
						f4ffc2d29b
					
				| @ -1,8 +1,18 @@ | ||||
| import { useContext } from "react"; | ||||
| 
 | ||||
| import Error from "./error"; | ||||
| 
 | ||||
| import { SettingsContext } from "utils/contexts/settings"; | ||||
| 
 | ||||
| export default function Container({ error = false, children, service }) { | ||||
|   const { settings } = useContext(SettingsContext); | ||||
| 
 | ||||
|   if (error) { | ||||
|     return <Error error={error} /> | ||||
|     if (settings.hideErrors || service.widget.hide_errors) { | ||||
|       return null; | ||||
|     } | ||||
| 
 | ||||
|     return <Error service={service} error={error} /> | ||||
|   } | ||||
| 
 | ||||
|   let visibleChildren = children; | ||||
|  | ||||
| @ -9,12 +9,10 @@ function displayData(data) { | ||||
|   return (data.type === 'Buffer') ? Buffer.from(data).toString() : JSON.stringify(data, 4); | ||||
| } | ||||
| 
 | ||||
| export default function Error({ error }) { | ||||
| export default function Error({ error: err }) { | ||||
|   const { t } = useTranslation(); | ||||
| 
 | ||||
|   if (error?.data?.error) { | ||||
|     error = error.data.error; // eslint-disable-line no-param-reassign | ||||
|   } | ||||
|   const { error } = err?.data ?? { error: err }; | ||||
| 
 | ||||
|   return ( | ||||
|     <details className="px-1 pb-1"> | ||||
|  | ||||
| @ -257,6 +257,7 @@ export function cleanServiceGroups(groups) { | ||||
|         const { | ||||
|           type, // all widgets
 | ||||
|           fields, | ||||
|           hideErrors, | ||||
|           server, // docker widget
 | ||||
|           container, | ||||
|           currency, // coinmarketcap widget
 | ||||
| @ -269,7 +270,7 @@ export function cleanServiceGroups(groups) { | ||||
|           wan, // opnsense widget,
 | ||||
|           enableBlocks, // emby/jellyfin
 | ||||
|           enableNowPlaying, | ||||
|           volume // diskstation widget
 | ||||
|           volume, // diskstation widget
 | ||||
|         } = cleanedService.widget; | ||||
| 
 | ||||
|         const fieldsList = typeof fields === 'string' ? JSON.parse(fields) : fields; | ||||
| @ -277,6 +278,7 @@ export function cleanServiceGroups(groups) { | ||||
|         cleanedService.widget = { | ||||
|           type, | ||||
|           fields: fieldsList || null, | ||||
|           hide_errors: hideErrors || false, | ||||
|           service_name: service.name, | ||||
|           service_group: serviceGroup.name, | ||||
|         }; | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: adguardData, error: adguardError } = useWidgetAPI(widget, "stats"); | ||||
| 
 | ||||
|   if (adguardError) { | ||||
|     return <Container error={adguardError} />; | ||||
|     return <Container service={service} error={adguardError} />; | ||||
|   } | ||||
|    | ||||
|   if (!adguardData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|    | ||||
|   if (librariesError) { | ||||
|     return <Container error={librariesError} />; | ||||
|     return <Container service={service} error={librariesError} />; | ||||
|   } | ||||
|    | ||||
|   if (!librariesData) { | ||||
|  | ||||
| @ -15,7 +15,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (usersError || loginsError || failedLoginsError) { | ||||
|     const finalError = usersError ?? loginsError ?? failedLoginsError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!usersData || !loginsData || !failedLoginsData) { | ||||
|  | ||||
| @ -15,7 +15,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (statsError || filtersError || indexersError) { | ||||
|     const finalError = statsError ?? filtersError ?? indexersError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!statsData || !filtersData || !indexersData) { | ||||
|  | ||||
| @ -14,7 +14,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (moviesError || episodesError) { | ||||
|     const finalError = moviesError ?? episodesError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!episodesData || !moviesData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data, error } = useWidgetAPI(widget, "info"); | ||||
| 
 | ||||
|   if (error) { | ||||
|     return <Container error={error} />; | ||||
|     return <Container service={service} error={error} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!data) { | ||||
|  | ||||
| @ -11,7 +11,7 @@ export default function Component({ service }) { | ||||
|   const { data: channelsData, error: channelsError } = useWidgetAPI(widget, "status"); | ||||
| 
 | ||||
|   if (channelsError) { | ||||
|     return <Container error={channelsError} />; | ||||
|     return <Container service={service} error={channelsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!channelsData) { | ||||
|  | ||||
| @ -8,7 +8,7 @@ export default function Component({ service }) { | ||||
|   const { data: statsData, error: statsError } = useWidgetAPI(widget, "cfd_tunnel"); | ||||
| 
 | ||||
|   if (statsError) { | ||||
|     return <Container error={statsError} />; | ||||
|     return <Container service={service} error={statsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!statsData) { | ||||
| @ -28,4 +28,4 @@ export default function Component({ service }) { | ||||
|       <Block label="cloudflared.origin_ip" value={originIP} /> | ||||
|     </Container> | ||||
|   ); | ||||
| } | ||||
| } | ||||
|  | ||||
| @ -38,7 +38,7 @@ export default function Component({ service }) { | ||||
|   } | ||||
| 
 | ||||
|   if (statsError) { | ||||
|     return <Container error={statsError} />; | ||||
|     return <Container service={service} error={statsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!statsData || !dateRange) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: torrentData, error: torrentError } = useWidgetAPI(widget); | ||||
| 
 | ||||
|   if (torrentError) { | ||||
|     return <Container error={torrentError} />; | ||||
|     return <Container service={service} error={torrentError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!torrentData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: utilizationData, error: utilizationError } = useWidgetAPI(widget, "utilization"); | ||||
| 
 | ||||
|   if (storageError || infoError || utilizationError) { | ||||
|     return <Container error={ storageError ?? infoError ?? utilizationError } />; | ||||
|     return <Container service={service} error={ storageError ?? infoError ?? utilizationError } />; | ||||
|   } | ||||
| 
 | ||||
|   if (!storageData || !infoData || !utilizationData) { | ||||
|  | ||||
| @ -19,7 +19,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (statsError || statsData?.error || statusError || statusData?.error) { | ||||
|     const finalError = statsError ?? statsData?.error ?? statusError ?? statusData?.error; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (statusData && !(statusData.status.includes("running") || statusData.status.includes("partial"))) { | ||||
|  | ||||
| @ -10,7 +10,7 @@ export default function Component({ service }) { | ||||
|   const { data: listData, error: listError } = useWidgetAPI(widget, "list"); | ||||
| 
 | ||||
|   if (listError) { | ||||
|     return <Container error={listError} />; | ||||
|     return <Container service={service} error={listError} />; | ||||
|   } | ||||
| 
 | ||||
|   const tasks = listData?.data?.tasks; | ||||
|  | ||||
| @ -206,7 +206,7 @@ export default function Component({ service }) { | ||||
|   } | ||||
| 
 | ||||
|   if (sessionsError || countError) { | ||||
|     return <Container error={sessionsError ?? countError} />; | ||||
|     return <Container service={service} error={sessionsError ?? countError} />; | ||||
|   } | ||||
| 
 | ||||
|   const enableBlocks = service.widget?.enableBlocks | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: fileflowsData, error: fileflowsError } = useWidgetAPI(widget, "status"); | ||||
| 
 | ||||
|   if (fileflowsError) { | ||||
|     return <Container error={fileflowsError} />; | ||||
|     return <Container service={service} error={fileflowsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!fileflowsData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: torrentData, error: torrentError } = useWidgetAPI(widget, "torrents"); | ||||
| 
 | ||||
|   if (torrentError || !torrentData?.torrents) { | ||||
|     return <Container error={torrentError ?? {message: "No torrent data returned"}} />; | ||||
|     return <Container service={service} error={torrentError ?? {message: "No torrent data returned"}} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!torrentData || !torrentData.torrents) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: freshrssData, error: freshrssError } = useWidgetAPI(widget, "info"); | ||||
| 
 | ||||
|   if (freshrssError) { | ||||
|     return <Container error={freshrssError} />; | ||||
|     return <Container service={service} error={freshrssError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!freshrssData) { | ||||
|  | ||||
| @ -18,7 +18,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (ghostfolioErrorToday || ghostfolioErrorYear || ghostfolioErrorMax) { | ||||
|     const finalError = ghostfolioErrorToday ?? ghostfolioErrorYear ?? ghostfolioErrorMax | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!performanceToday || !performanceYear || !performanceMax) { | ||||
|  | ||||
| @ -8,7 +8,7 @@ export default function Component({ service }) { | ||||
|   const { data: gluetunData, error: gluetunError } = useWidgetAPI(widget, "ip"); | ||||
| 
 | ||||
|   if (gluetunError) { | ||||
|     return <Container error={gluetunError} />; | ||||
|     return <Container service={service} error={gluetunError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!gluetunData) { | ||||
|  | ||||
| @ -11,7 +11,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (appsError || messagesError || clientsError) { | ||||
|     const finalError = appsError ?? messagesError ?? clientsError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: alertsData, error: alertsError } = useWidgetAPI(widget, "alerts"); | ||||
| 
 | ||||
|   if (statsError || alertsError) { | ||||
|     return <Container error={statsError ?? alertsError} />; | ||||
|     return <Container service={service} error={statsError ?? alertsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!statsData || !alertsData) { | ||||
|  | ||||
| @ -8,7 +8,7 @@ export default function Component({ service }) { | ||||
|   const { data: channelsData, error: channelsError } = useWidgetAPI(widget, "lineup"); | ||||
| 
 | ||||
|   if (channelsError) { | ||||
|     return <Container error={channelsError} />; | ||||
|     return <Container service={service} error={channelsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!channelsData) { | ||||
|  | ||||
| @ -30,7 +30,7 @@ export default function Component({ service }) { | ||||
|   const { data, error } = useWidgetAPI(widget, "checks"); | ||||
| 
 | ||||
|   if (error) { | ||||
|     return <Container error={error} />; | ||||
|     return <Container service={service} error={error} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!data) { | ||||
|  | ||||
| @ -7,7 +7,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   const { data, error } = useWidgetAPI(widget, null, { refreshInterval: 60000 }); | ||||
|   if (error) { | ||||
|     return <Container error={error} />; | ||||
|     return <Container service={service} error={error} />; | ||||
|   } | ||||
|    | ||||
|   return <Container service={service}> | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: homebridgeData, error: homebridgeError } = useWidgetAPI(widget, "info"); | ||||
| 
 | ||||
|   if (homebridgeError) { | ||||
|     return <Container error={homebridgeError} />; | ||||
|     return <Container service={service} error={homebridgeError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!homebridgeData) { | ||||
|  | ||||
| @ -11,7 +11,7 @@ export default function Component({ service }) { | ||||
|   const { data: immichData, error: immichError } = useWidgetAPI(widget); | ||||
| 
 | ||||
|   if (immichError || immichData?.statusCode === 401) { | ||||
|     return <Container error={immichError ?? immichData} />; | ||||
|     return <Container service={service} error={immichError ?? immichData} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!immichData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: indexersData, error: indexersError } = useWidgetAPI(widget, "indexers"); | ||||
| 
 | ||||
|   if (indexersError) { | ||||
|     return <Container error={indexersError} />; | ||||
|     return <Container service={service} error={indexersError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!indexersData) { | ||||
|  | ||||
| @ -8,7 +8,7 @@ export default function Component({ service }) { | ||||
|   const { data: statsData, error: statsError } = useWidgetAPI(widget, "request/count"); | ||||
| 
 | ||||
|   if (statsError) { | ||||
|     return <Container error={statsError} />; | ||||
|     return <Container service={service} error={statsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!statsData) { | ||||
|  | ||||
| @ -14,7 +14,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (libraryError || seriesError || bookError) { | ||||
|     const finalError = libraryError ?? seriesError ?? bookError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!libraryData || !seriesData || !bookData) { | ||||
| @ -34,4 +34,4 @@ export default function Component({ service }) { | ||||
|       <Block label="komga.books" value={t("common.number", { value: bookData.totalElements })} /> | ||||
|     </Container> | ||||
|   ); | ||||
| } | ||||
| } | ||||
|  | ||||
| @ -38,7 +38,7 @@ export default function Component({ service }) { | ||||
|   const { data: statusData, error: statusError } = useWidgetAPI(widget, "status"); | ||||
| 
 | ||||
|   if (statusError) { | ||||
|     return <Container error={statusError} />; | ||||
|     return <Container service={service} error={statusError} />; | ||||
|   } | ||||
| 
 | ||||
|   const source = statusData?.sources[0]; | ||||
| @ -65,4 +65,4 @@ export default function Component({ service }) { | ||||
|       {nextTime && <Block label="kopia.nextrun" value={ relativeDate(nextTime) } />} | ||||
|     </Container> | ||||
|   ); | ||||
| } | ||||
| } | ||||
|  | ||||
| @ -16,7 +16,7 @@ export default function Component({ service }) { | ||||
|     `/api/kubernetes/stats/${widget.namespace}/${widget.app}?${podSelectorString}`); | ||||
| 
 | ||||
|   if (statsError || statusError) { | ||||
|     return <Container error={t("widget.api_error")} />; | ||||
|     return <Container service={service} error={t("widget.api_error")} />; | ||||
|   } | ||||
| 
 | ||||
|   if (statusData && statusData.status !== "running") { | ||||
|  | ||||
| @ -15,7 +15,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (albumsError || wantedError || queueError) { | ||||
|     const finalError = albumsError ?? wantedError ?? queueError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!albumsData || !wantedData || !queueData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: statsData, error: statsError } = useWidgetAPI(widget, "instance"); | ||||
| 
 | ||||
|   if (statsError) { | ||||
|     return <Container error={statsError} />; | ||||
|     return <Container service={service} error={statsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!statsData) { | ||||
|  | ||||
| @ -13,7 +13,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (statsError || futureError) { | ||||
|     const finalError = statsError ?? futureError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!statsData || !futureData) { | ||||
|  | ||||
| @ -14,7 +14,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (statsError || leasesError) { | ||||
|     const finalError = statsError ?? leasesError; | ||||
|     return <Container error={ finalError } />; | ||||
|     return <Container service={service} error={ finalError } />; | ||||
|   } | ||||
| 
 | ||||
|   if (!statsData || !leasesData) { | ||||
|  | ||||
| @ -10,7 +10,7 @@ export default function Component({ service }) { | ||||
|   const { t } = useTranslation(); | ||||
|    | ||||
|   if(serverError){ | ||||
|     return <Container error={serverError} />; | ||||
|     return <Container service={service} error={serverError} />; | ||||
|   } | ||||
|   if (!serverData) { | ||||
|     return ( | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: minifluxData, error: minifluxError } = useWidgetAPI(widget, "counters"); | ||||
| 
 | ||||
|   if (minifluxError) { | ||||
|     return <Container error={minifluxError} />; | ||||
|     return <Container service={service} error={minifluxError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!minifluxData) { | ||||
|  | ||||
| @ -15,7 +15,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (printStatsError || displayStatsError || webHooksError) { | ||||
|     const finalError = printStatsError ?? displayStatsError ?? webHooksError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!printStats || !displayStatus || !webHooks) { | ||||
|  | ||||
| @ -15,7 +15,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (seriesError || issuesError || wantedError) { | ||||
|     const finalError = seriesError ?? issuesError ?? wantedError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!seriesData || !issuesData || !wantedData) { | ||||
| @ -37,4 +37,4 @@ export default function Component({ service }) { | ||||
|       <Block label="mylar.wanted" value={t("common.number", { value: wantedData.issues.length })} /> | ||||
|     </Container> | ||||
|   ); | ||||
| } | ||||
| } | ||||
|  | ||||
| @ -27,7 +27,7 @@ export default function Component({ service }) { | ||||
|   const { data: navidromeData, error: navidromeError } = useWidgetAPI(widget, "getNowPlaying"); | ||||
| 
 | ||||
|   if (navidromeError || navidromeData?.["subsonic-response"]?.error) { | ||||
|     return <Container error={navidromeError ?? navidromeData?.["subsonic-response"]?.error} />; | ||||
|     return <Container service={service} error={navidromeError ?? navidromeData?.["subsonic-response"]?.error} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!navidromeData) { | ||||
|  | ||||
| @ -11,7 +11,7 @@ export default function Component({ service }) { | ||||
|   const { data: nextcloudData, error: nextcloudError } = useWidgetAPI(widget, "serverinfo"); | ||||
| 
 | ||||
|   if (nextcloudError) { | ||||
|     return <Container error={nextcloudError} />; | ||||
|     return <Container service={service} error={nextcloudError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!nextcloudData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: nextdnsData, error: nextdnsError } = useWidgetAPI(widget, "analytics/status"); | ||||
| 
 | ||||
|   if (nextdnsError) { | ||||
|     return <Container error={nextdnsError} />; | ||||
|     return <Container service={service} error={nextdnsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!nextdnsData) { | ||||
|  | ||||
| @ -8,7 +8,7 @@ export default function Component({ service }) { | ||||
|   const { data: infoData, error: infoError } = useWidgetAPI(widget, "nginx/proxy-hosts"); | ||||
| 
 | ||||
|   if (infoError) { | ||||
|     return <Container error={infoError} />; | ||||
|     return <Container service={service} error={infoError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!infoData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: statusData, error: statusError } = useWidgetAPI(widget, "status"); | ||||
| 
 | ||||
|   if (statusError) { | ||||
|     return <Container error={statusError} />; | ||||
|     return <Container service={service} error={statusError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!statusData) { | ||||
|  | ||||
| @ -9,11 +9,11 @@ export default function Component({ service }) { | ||||
|   const { data: jobStats, error: jobStatsError } = useWidgetAPI(widget, "job_stats"); | ||||
| 
 | ||||
|   if (printerStatsError) { | ||||
|     return <Container error={printerStatsError} />; | ||||
|     return <Container service={service} error={printerStatsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (jobStatsError) { | ||||
|     return <Container error={jobStatsError} />; | ||||
|     return <Container service={service} error={jobStatsError} />; | ||||
|   } | ||||
| 
 | ||||
|   const state = printerStats?.state?.text; | ||||
|  | ||||
| @ -14,7 +14,7 @@ export default function Component({ service }) { | ||||
|   }); | ||||
| 
 | ||||
|   if (omadaAPIError) { | ||||
|     return <Container error={omadaAPIError} />; | ||||
|     return <Container service={service} error={omadaAPIError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!omadaData) { | ||||
|  | ||||
| @ -8,7 +8,7 @@ export default function Component({ service }) { | ||||
|   const { data: statsData, error: statsError } = useWidgetAPI(widget, "Request/count"); | ||||
| 
 | ||||
|   if (statsError) { | ||||
|     return <Container error={statsError} />; | ||||
|     return <Container service={service} error={statsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!statsData) { | ||||
|  | ||||
| @ -14,7 +14,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (activityError || interfaceError) { | ||||
|     const finalError = activityError ?? interfaceError; | ||||
|     return <Container error={ finalError } />; | ||||
|     return <Container service={service} error={ finalError } />; | ||||
|   } | ||||
| 
 | ||||
|   if (!activityData || !interfaceData) { | ||||
|  | ||||
| @ -11,7 +11,7 @@ export default function Component({ service }) { | ||||
|   const { data: statsData, error: statsError } = useWidgetAPI(widget, "request/count"); | ||||
| 
 | ||||
|   if (statsError) { | ||||
|     return <Container error={statsError} />; | ||||
|     return <Container service={service} error={statsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!statsData) { | ||||
|  | ||||
| @ -8,7 +8,7 @@ export default function Component({ service }) { | ||||
|   const { data: statisticsData, error: statisticsError } = useWidgetAPI(widget, "statistics"); | ||||
| 
 | ||||
|   if (statisticsError) { | ||||
|     return <Container error={statisticsError} />; | ||||
|     return <Container service={service} error={statisticsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!statisticsData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: photoprismData, error: photoprismError } = useWidgetAPI(widget); | ||||
| 
 | ||||
|   if (photoprismError) { | ||||
|     return <Container error={photoprismError} />; | ||||
|     return <Container service={service} error={photoprismError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!photoprismData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: piholeData, error: piholeError } = useWidgetAPI(widget, "summaryRaw"); | ||||
| 
 | ||||
|   if (piholeError) { | ||||
|     return <Container error={piholeError} />; | ||||
|     return <Container service={service} error={piholeError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!piholeData) { | ||||
|  | ||||
| @ -14,7 +14,7 @@ export default function Component({ service }) { | ||||
|   }); | ||||
| 
 | ||||
|   if (plexAPIError) { | ||||
|     return <Container error={plexAPIError} />; | ||||
|     return <Container service={service} error={plexAPIError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!plexData) { | ||||
|  | ||||
| @ -14,7 +14,7 @@ export default function Component({ service }) { | ||||
|   }); | ||||
| 
 | ||||
|   if (containersError) { | ||||
|     return <Container error={containersError} />; | ||||
|     return <Container service={service} error={containersError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!containersData) { | ||||
| @ -28,7 +28,7 @@ export default function Component({ service }) { | ||||
|   } | ||||
| 
 | ||||
|   if (containersData.error) { | ||||
|     return <Container error={t("widget.api_error")} />; | ||||
|     return <Container service={service} error={t("widget.api_error")} />; | ||||
|   } | ||||
| 
 | ||||
|   const running = containersData.filter((c) => c.State === "running").length; | ||||
|  | ||||
| @ -11,7 +11,7 @@ export default function Component({ service }) { | ||||
|   const { data: targetsData, error: targetsError } = useWidgetAPI(widget, "targets"); | ||||
| 
 | ||||
|   if (targetsError) { | ||||
|     return <Container error={targetsError} />; | ||||
|     return <Container service={service} error={targetsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!targetsData) { | ||||
|  | ||||
| @ -11,7 +11,7 @@ export default function Component({ service }) { | ||||
|   const { data: grabsData, error: grabsError } = useWidgetAPI(widget, "indexerstats"); | ||||
| 
 | ||||
|   if (grabsError) { | ||||
|     return <Container error={grabsError} />; | ||||
|     return <Container service={service} error={grabsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!grabsData) { | ||||
|  | ||||
| @ -16,7 +16,7 @@ export default function Component({ service }) { | ||||
|   const { data: clusterData, error: clusterError } = useWidgetAPI(widget, "cluster/resources"); | ||||
| 
 | ||||
|   if (clusterError) { | ||||
|     return <Container error={clusterError} />; | ||||
|     return <Container service={service} error={clusterError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!clusterData || !clusterData.data) { | ||||
|  | ||||
| @ -15,7 +15,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (datastoreError || tasksError || hostError) { | ||||
|     const finalError = tasksError ?? datastoreError ?? hostError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!datastoreData || !tasksData || !hostData) { | ||||
|  | ||||
| @ -10,7 +10,7 @@ export default function Component({ service }) { | ||||
|   const {data: nodesData, error: nodesError} = useWidgetAPI(widget, "nodes"); | ||||
| 
 | ||||
|   if (nodesError) { | ||||
|     return <Container error={ nodesError } />; | ||||
|     return <Container service={service} error={ nodesError } />; | ||||
|   } | ||||
| 
 | ||||
|   if (!nodesData) { | ||||
|  | ||||
| @ -10,7 +10,7 @@ export default function Component({ service }) { | ||||
|   const { data: pyloadData, error: pyloadError } = useWidgetAPI(widget, "status"); | ||||
| 
 | ||||
|   if (pyloadError) { | ||||
|     return <Container error={pyloadError} />; | ||||
|     return <Container service={service} error={pyloadError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!pyloadData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: torrentData, error: torrentError } = useWidgetAPI(widget, "torrents/info"); | ||||
| 
 | ||||
|   if (torrentError) { | ||||
|     return <Container error={torrentError} />; | ||||
|     return <Container service={service} error={torrentError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!torrentData) { | ||||
|  | ||||
| @ -13,7 +13,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (moviesError || queuedError) { | ||||
|     const finalError = moviesError ?? queuedError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!moviesData || !queuedData) { | ||||
|  | ||||
| @ -15,7 +15,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (booksError || wantedError || queueError) { | ||||
|     const finalError = booksError ?? wantedError ?? queueError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!booksData || !wantedData || !queueData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: statusData, error: statusError } = useWidgetAPI(widget); | ||||
| 
 | ||||
|   if (statusError) { | ||||
|     return <Container error={statusError} />; | ||||
|     return <Container service={service} error={statusError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!statusData) { | ||||
|  | ||||
| @ -22,7 +22,7 @@ export default function Component({ service }) { | ||||
|   const { data: queueData, error: queueError } = useWidgetAPI(widget, "queue"); | ||||
| 
 | ||||
|   if (queueError) { | ||||
|     return <Container error={queueError} />; | ||||
|     return <Container service={service} error={queueError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!queueData) { | ||||
|  | ||||
| @ -29,7 +29,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (scrutinyError || scrutinySettingsError) { | ||||
|     const finalError = scrutinyError ?? scrutinySettingsError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!scrutinyData || !scrutinySettings) { | ||||
|  | ||||
| @ -14,7 +14,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (wantedError || queuedError || seriesError) { | ||||
|     const finalError = wantedError ?? queuedError ?? seriesError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!wantedData || !queuedData || !seriesData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: speedtestData, error: speedtestError } = useWidgetAPI(widget, "speedtest/latest"); | ||||
| 
 | ||||
|   if (speedtestError) { | ||||
|     return <Container error={speedtestError} />; | ||||
|     return <Container service={service} error={speedtestError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!speedtestData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: statsData, error: statsError } = useWidgetAPI(widget, "status"); | ||||
| 
 | ||||
|   if (statsError) { | ||||
|     return <Container error={statsError} />; | ||||
|     return <Container service={service} error={statsError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!statsData) { | ||||
|  | ||||
| @ -123,7 +123,7 @@ export default function Component({ service }) { | ||||
|   }); | ||||
| 
 | ||||
|   if (activityError) { | ||||
|     return <Container error={activityError} />; | ||||
|     return <Container service={service} error={activityError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!activityData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: tdarrData, error: tdarrError } = useWidgetAPI(widget); | ||||
| 
 | ||||
|   if (tdarrError) { | ||||
|     return <Container error={tdarrError} />; | ||||
|     return <Container service={service} error={tdarrError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!tdarrData) { | ||||
|  | ||||
| @ -8,7 +8,7 @@ export default function Component({ service }) { | ||||
|   const { data: traefikData, error: traefikError } = useWidgetAPI(widget, "overview"); | ||||
| 
 | ||||
|   if (traefikError) { | ||||
|     return <Container error={traefikError} />; | ||||
|     return <Container service={service} error={traefikError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!traefikData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: torrentData, error: torrentError } = useWidgetAPI(widget); | ||||
| 
 | ||||
|   if (torrentError) { | ||||
|     return <Container error={torrentError} />; | ||||
|     return <Container service={service} error={torrentError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!torrentData) { | ||||
|  | ||||
| @ -43,7 +43,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (alertError || statusError) { | ||||
|     const finalError = alertError ?? statusError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!alertData || !statusData) { | ||||
|  | ||||
| @ -16,7 +16,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (downloadsError || videosError || channelsError || playlistsError) { | ||||
|     const finalError = downloadsError ?? videosError ?? channelsError ?? playlistsError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!downloadsData || !videosData || !channelsData || !playlistsData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|     const { data: statsData, error: statsError } = useWidgetAPI(widget, "stat/sites"); | ||||
| 
 | ||||
|     if (statsError) { | ||||
|         return <Container error={statsError} />; | ||||
|         return <Container service={service} error={statsError} />; | ||||
|     } | ||||
| 
 | ||||
|     const defaultSite = widget.site ? statsData?.data.find(s => s.desc === widget.site) : statsData?.data?.find(s => s.name === "default"); | ||||
|  | ||||
| @ -10,7 +10,7 @@ export default function Component({ service }) { | ||||
| 
 | ||||
|   if (workersError || pendingError) { | ||||
|     const finalError = workersError ?? pendingError; | ||||
|     return <Container error={finalError} />; | ||||
|     return <Container service={service} error={finalError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!workersData || !pendingData) { | ||||
|  | ||||
| @ -13,7 +13,7 @@ export default function Component({ service }) { | ||||
|   const { data: heartbeatData, error: heartbeatError } = useWidgetAPI(widget, "heartbeat"); | ||||
| 
 | ||||
|   if (statusError || heartbeatError) { | ||||
|     return <Container error={statusError ?? heartbeatError} />; | ||||
|     return <Container service={service} error={statusError ?? heartbeatError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!statusData || !heartbeatData) { | ||||
|  | ||||
| @ -13,7 +13,7 @@ export default function Component({ service }) { | ||||
|   const { data: watchData, error: watchError } = useWidgetAPI(widget, "watchtower"); | ||||
| 
 | ||||
|   if (watchError) { | ||||
|     return <Container error={watchError} />; | ||||
|     return <Container service={service} error={watchError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!watchData) { | ||||
|  | ||||
| @ -8,7 +8,7 @@ export default function Component({ service }) { | ||||
|   const { data: containersData, error: containersError } = useWidgetAPI(widget, "containers"); | ||||
|    | ||||
|   if (containersError) { | ||||
|     return <Container error={containersError} />; | ||||
|     return <Container service={service} error={containersError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!containersData) { | ||||
|  | ||||
| @ -12,7 +12,7 @@ export default function Component({ service }) { | ||||
|   const { data: xteveData, error: xteveError } = useWidgetAPI(widget, "api"); | ||||
| 
 | ||||
|   if (xteveError) { | ||||
|     return <Container error={xteveError} />; | ||||
|     return <Container service={service} error={xteveError} />; | ||||
|   } | ||||
| 
 | ||||
|   if (!xteveData) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 shamoon
						shamoon