Your ROOT_URL in app.ini is https://git.cloudchain.link/ but you are visiting https://dash.bss.nz/open-source-mirrors/homepage/commit/8a783ba9f6c1e034f74ff1d4a71dedfe49e2f30b
You should set ROOT_URL correctly, otherwise the web may not work correctly.
41 changed files with
93 additions and
113 deletions
@ -12,7 +12,7 @@ export default function Widget({ options }) {
options . type = "unifi_console" ;
const { data : statsData , error : statsError } = useWidgetAPI ( options , "stat/sites" , { index : options . index } ) ;
if ( statsError || statsData ? . error ) {
if ( statsError ) {
return (
< div className = "flex flex-col justify-center first:ml-0 ml-4" >
< div className = "flex flex-row items-center justify-end" >
@ -3,5 +3,11 @@ import useSWR from "swr";
import { formatProxyUrl } from "./api-helpers" ;
export default function useWidgetAPI ( widget , ... options ) {
return useSWR ( formatProxyUrl ( widget , ... options ) ) ;
const config = { } ;
if ( options ? . refreshInterval ) {
config . refreshInterval = options . refreshInterval ;
}
const { data , error } = useSWR ( formatProxyUrl ( widget , ... options ) , config ) ;
// make the data error the top-level error
return { data , error : data ? . error ? ? error }
}
@ -11,10 +11,10 @@ export default function Component({ service }) {
const { data : adguardData , error : adguardError } = useWidgetAPI ( widget , "stats" ) ;
if ( adguardError || adguardData ? . error ) {
const finalError = adguardError ? ? adguardData . error ;
return < Container error = { finalError } / > ;
if ( adguardError ) {
return < Container error = { adguardError } / > ;
}
if ( ! adguardData ) {
return (
< Container service = { service } >
@ -13,8 +13,8 @@ export default function Component({ service }) {
const { data : loginsData , error : loginsError } = useWidgetAPI ( widget , "login" ) ;
const { data : failedLoginsData , error : failedLoginsError } = useWidgetAPI ( widget , "login_failed" ) ;
if ( usersError || usersData? . error || loginsError || loginsData? . error || failedLoginsError || failedLoginsData ? . e rror) {
const finalError = usersError ? ? usersData? . error ? ? loginsError ? ? loginsData? . error ? ? failedLoginsError ? ? failedLoginsData ? . e rror;
if ( usersError || loginsError || failedLoginsError) {
const finalError = usersError ? ? loginsError ? ? failedLoginsError;
return < Container error = { finalError } / > ;
}
@ -13,8 +13,8 @@ export default function Component({ service }) {
const { data : filtersData , error : filtersError } = useWidgetAPI ( widget , "filters" ) ;
const { data : indexersData , error : indexersError } = useWidgetAPI ( widget , "indexers" ) ;
if ( statsError || statsData? . error || filtersError || filtersData? . error || indexersError || indexersData ? . e rror) {
const finalError = statsError ? ? statsData? . error ? ? filtersError ? ? filtersData? . error ? ? indexersError ? ? indexersData ? . e rror;
if ( statsError || filtersError || indexersError) {
const finalError = statsError ? ? filtersError ? ? indexersError;
return < Container error = { finalError } / > ;
}
@ -12,8 +12,8 @@ export default function Component({ service }) {
const { data : episodesData , error : episodesError } = useWidgetAPI ( widget , "episodes" ) ;
const { data : moviesData , error : moviesError } = useWidgetAPI ( widget , "movies" ) ;
if ( moviesError || moviesData? . error || episodesError || episodesData ? . e rror) {
const finalError = moviesError ? ? moviesData? . error ? ? episodesError ? ? episodesData ? . e rror;
if ( moviesError || episodesError) {
const finalError = moviesError ? ? episodesError;
return < Container error = { finalError } / > ;
}
@ -11,9 +11,8 @@ export default function Component({ service }) {
const { data , error } = useWidgetAPI ( widget , "info" ) ;
if ( error || data ? . error ) {
const finalError = error ? ? data . error ;
return < Container error = { finalError } / > ;
if ( error ) {
return < Container error = { error } / > ;
}
const totalObserved = Object . keys ( data ) . length ;
let diffsDetected = 0 ;
@ -36,9 +36,8 @@ export default function Component({ service }) {
) ;
}
if ( statsError || statsData ? . error ) {
const finalError = statsError ? ? statsData . error ;
return < Container error = { finalError } / > ;
if ( statsError ) {
return < Container error = { statsError } / > ;
}
if ( ! statsData || ! dateRange ) {
@ -1,10 +1,10 @@
import useSWR from "swr" ;
import { useTranslation } from "next-i18next" ;
import { BsVolumeMuteFill , BsFillPlayFill , BsPauseFill , BsCpu , BsFillCpuFill } from "react-icons/bs" ;
import { MdOutlineSmartDisplay } from "react-icons/md" ;
import { formatProxyUrl , formatProxyUrlWithSegments } from "utils/proxy/api-helpers" ;
import Container from "components/services/widget/container" ;
import { formatProxyUrlWithSegments } from "utils/proxy/api-helpers" ;
import useWidgetAPI from "utils/proxy/use-widget-api" ;
function ticksToTime ( ticks ) {
const milliseconds = ticks / 10000 ;
@ -157,7 +157,7 @@ export default function Component({ service }) {
data : sessionsData ,
error : sessionsError ,
mutate : sessionMutate ,
} = use SWR( formatProxyUrl ( widget , "Sessions" ) , {
} = use WidgetAPI ( widget , "Sessions" , {
refreshInterval : 5000 ,
} ) ;
@ -171,9 +171,8 @@ export default function Component({ service }) {
} ) ;
}
if ( sessionsError || sessionsData ? . error ) {
const finalError = sessionsError ? ? sessionsData . error ;
return < Container error = { finalError } / > ;
if ( sessionsError ) {
return < Container error = { sessionsError } / > ;
}
if ( ! sessionsData ) {
@ -9,8 +9,8 @@ export default function Component({ service }) {
const { data : messagesData , error : messagesError } = useWidgetAPI ( widget , "message" ) ;
const { data : clientsData , error : clientsError } = useWidgetAPI ( widget , "client" ) ;
if ( appsError || appsData? . error || messagesError || messagesData? . error || clientsError || clientsData ? . e rror) {
const finalError = appsError ? ? appsData? . error ? ? messagesError ? ? messagesData? . error ? ? clientsError ? ? clientsData ? . e rror;
if ( appsError || messagesError || clientsError) {
const finalError = appsError ? ? messagesError ? ? clientsError;
return < Container error = { finalError } / > ;
}
@ -11,9 +11,8 @@ export default function Component({ service }) {
const { data : homebridgeData , error : homebridgeError } = useWidgetAPI ( widget , "info" ) ;
if ( homebridgeError || homebridgeData ? . error ) {
const finalError = homebridgeError ? ? homebridgeData . error ;
return < Container error = { finalError } / > ;
if ( homebridgeError ) {
return < Container error = { homebridgeError } / > ;
}
if ( ! homebridgeData ) {
@ -11,9 +11,8 @@ export default function Component({ service }) {
const { data : indexersData , error : indexersError } = useWidgetAPI ( widget , "indexers" ) ;
if ( indexersError || indexersData ? . error ) {
const finalError = indexersError ? ? indexersData . error ;
return < Container error = { finalError } / > ;
if ( indexersError ) {
return < Container error = { indexersError } / > ;
}
if ( ! indexersData ) {
@ -7,9 +7,8 @@ export default function Component({ service }) {
const { data : statsData , error : statsError } = useWidgetAPI ( widget , "request/count" ) ;
if ( statsError || statsData ? . error ) {
const finalError = statsError ? ? statsData . error ;
return < Container error = { finalError } / > ;
if ( statsError ) {
return < Container error = { statsError } / > ;
}
if ( ! statsData ) {
@ -13,8 +13,8 @@ export default function Component({ service }) {
const { data : wantedData , error : wantedError } = useWidgetAPI ( widget , "wanted/missing" ) ;
const { data : queueData , error : queueError } = useWidgetAPI ( widget , "queue/status" ) ;
if ( albumsError || albumsData? . error || wantedError || wantedData? . error || queueError || queueData ? . e rror) {
const finalError = albumsError ? ? albumsData? . error ? ? wantedError ? ? wantedData? . error ? ? queueError ? ? queueData ? . e rror;
if ( albumsError || wantedError || queueError) {
const finalError = albumsError ? ? wantedError ? ? queueError;
return < Container error = { finalError } / > ;
}
@ -11,9 +11,8 @@ export default function Component({ service }) {
const { data : statsData , error : statsError } = useWidgetAPI ( widget , "instance" ) ;
if ( statsError || statsData ? . error ) {
const finalError = statsError ? ? statsData . error ;
return < Container error = { finalError } / > ;
if ( statsError ) {
return < Container error = { statsError } / > ;
}
if ( ! statsData ) {
@ -26,8 +26,8 @@ export default function Component({ service }) {
const { data : navidromeData , error : navidromeError } = useWidgetAPI ( widget , "getNowPlaying" ) ;
if ( navidromeError || navidromeData ? . error || navidromeData ? . [ "subsonic-response" ] ? . error ) {
return < Container error = { t( "widget.api_error" ) } / > ;
if ( navidromeError || navidromeData ? . [ "subsonic-response" ] ? . error ) {
return < Container error = { navidromeError ? ? navidromeData ? . [ "subsonic-response" ] ? . error } / > ;
}
if ( ! navidromeData ) {
@ -11,9 +11,8 @@ export default function Component({ service }) {
const { data : statusData , error : statusError } = useWidgetAPI ( widget , "status" ) ;
if ( statusError || statusData ? . error ) {
const finalError = statusError ? ? statusData . error ;
return < Container error = { finalError } / > ;
if ( statusError ) {
return < Container error = { statusError } / > ;
}
if ( ! statusData ) {
@ -7,9 +7,8 @@ export default function Component({ service }) {
const { data : statsData , error : statsError } = useWidgetAPI ( widget , "Request/count" ) ;
if ( statsError || statsData ? . error ) {
const finalError = statsError ? ? statsData . error ;
return < Container error = { finalError } / > ;
if ( statsError ) {
return < Container error = { statsError } / > ;
}
if ( ! statsData ) {
@ -7,9 +7,8 @@ export default function Component({ service }) {
const { data : statsData , error : statsError } = useWidgetAPI ( widget , "request/count" ) ;
if ( statsError || statsData ? . error ) {
const finalError = statsError ? ? statsData . error ;
return < Container error = { finalError } / > ;
if ( statsError ) {
return < Container error = { statsError } / > ;
}
if ( ! statsData ) {
@ -11,9 +11,8 @@ export default function Component({ service }) {
const { data : piholeData , error : piholeError } = useWidgetAPI ( widget , "api.php" ) ;
if ( piholeError || piholeData ? . error ) {
const finalError = piholeError ? ? piholeData . error ;
return < Container error = { finalError } / > ;
if ( piholeError ) {
return < Container error = { piholeError } / > ;
}
if ( ! piholeData ) {
@ -1,22 +1,20 @@
import useSWR from "swr" ;
import { useTranslation } from "next-i18next" ;
import Block from "components/services/widget/block" ;
import Container from "components/services/widget/container" ;
import { formatProxyUrl } from "utils/proxy/api-helpers ";
import useWidgetAPI from "utils/proxy/use-widget-api ";
export default function Component ( { service } ) {
const { t } = useTranslation ( ) ;
const { widget } = service ;
const { data : plexData , error : plexAPIError } = use SWR( formatProxyUrl ( widget , "unified" ) , {
const { data : plexData , error : plexAPIError } = use WidgetAPI ( widget , "unified" , {
refreshInterval : 5000 ,
} ) ;
if ( plexAPIError || plexData ? . error ) {
const finalError = plexAPIError ? ? plexData . error ;
return < Container error = { finalError } / > ;
if ( plexAPIError ) {
return < Container error = { plexAPIError } / > ;
}
if ( ! plexData ) {
@ -67,7 +67,7 @@ export default async function plexProxyHandler(req, res) {
let [ status , apiData ] = await fetchFromPlexAPI ( "/status/sessions" , widget ) ;
if ( status !== 200 ) {
return res . status ( status ) . json ( { error : { message : "HTTP error communicating with Plex API" , data : apiData} } ) ;
return res . status ( status ) . json ( { error : { message : "HTTP error communicating with Plex API" , data : Buffer. from ( apiData) . toString ( ) } } ) ;
}
if ( apiData && apiData . MediaContainer ) {
@ -13,9 +13,8 @@ export default function Component({ service }) {
all : 1 ,
} ) ;
if ( containersError || containersData ? . error ) {
const finalError = containersError ? ? containersData . error ;
return < Container error = { finalError } / > ;
if ( containersError ) {
return < Container error = { containersError } / > ;
}
if ( ! containersData ) {
@ -8,8 +8,8 @@ export default function Component({ service }) {
const { data : indexersData , error : indexersError } = useWidgetAPI ( widget , "indexer" ) ;
const { data : grabsData , error : grabsError } = useWidgetAPI ( widget , "indexerstats" ) ;
if ( indexersError || indexersData? . error || grabsError || grabsData ? . e rror) {
const finalError = indexersError ? ? indexersData? . error ? ? grabsError ? ? grabsData ? . e rror;
if ( indexersError || grabsError) {
const finalError = indexersError ? ? grabsError;
return < Container error = { finalError } / > ;
}
@ -15,9 +15,8 @@ export default function Component({ service }) {
const { data : clusterData , error : clusterError } = useWidgetAPI ( widget , "cluster/resources" ) ;
if ( clusterError || clusterData ? . error ) {
const finalError = clusterError ? ? clusterData . error ;
return < Container error = { finalError } / > ;
if ( clusterError ) {
return < Container error = { clusterError } / > ;
}
if ( ! clusterData || ! clusterData . data ) {
@ -9,8 +9,8 @@ export default function Component({ service }) {
const { widget } = service ;
const { data : pyloadData , error : pyloadError } = useWidgetAPI ( widget , "status" ) ;
if ( pyloadError || pyloadData ? . error ) {
return < Container error = { t( "widget.api_error" ) } / > ;
if ( pyloadError ) {
return < Container error = { pyloadError } / > ;
}
if ( ! pyloadData ) {
@ -11,9 +11,8 @@ export default function Component({ service }) {
const { data : torrentData , error : torrentError } = useWidgetAPI ( widget , "torrents/info" ) ;
if ( torrentError || torrentData ? . error ) {
const finalError = torrentError ? ? torrentData . error ;
return < Container error = { finalError } / > ;
if ( torrentError ) {
return < Container error = { torrentError } / > ;
}
if ( ! torrentData ) {
@ -8,8 +8,8 @@ export default function Component({ service }) {
const { data : moviesData , error : moviesError } = useWidgetAPI ( widget , "movie" ) ;
const { data : queuedData , error : queuedError } = useWidgetAPI ( widget , "queue/status" ) ;
if ( moviesError || moviesData? . error || queuedError || queuedData ? . e rror) {
const finalError = moviesError ? ? moviesData? . error ? ? queuedError ? ? queuedData ? . e rror;
if ( moviesError || queuedError) {
const finalError = moviesError ? ? queuedError;
return < Container error = { finalError } / > ;
}
@ -13,8 +13,8 @@ export default function Component({ service }) {
const { data : wantedData , error : wantedError } = useWidgetAPI ( widget , "wanted/missing" ) ;
const { data : queueData , error : queueError } = useWidgetAPI ( widget , "queue/status" ) ;
if ( booksError || booksData? . error || wantedError || wantedData? . error || queueError || queueData ? . e rror) {
const finalError = booksError ? ? booksData? . error ? ? wantedError ? ? wantedData? . error ? ? queueError ? ? queueData ? . e rror;
if ( booksError || wantedError || queueError) {
const finalError = booksError ? ? wantedError ? ? queueError;
return < Container error = { finalError } / > ;
}
@ -11,9 +11,8 @@ export default function Component({ service }) {
const { data : statusData , error : statusError } = useWidgetAPI ( widget ) ;
if ( statusError || statusData ? . error ) {
const finalError = statusError ? ? statusData . error ;
return < Container error = { finalError } / > ;
if ( statusError ) {
return < Container error = { statusError } / > ;
}
if ( ! statusData ) {
@ -21,9 +21,8 @@ export default function Component({ service }) {
const { data : queueData , error : queueError } = useWidgetAPI ( widget , "queue" ) ;
if ( queueError || queueData ? . error ) {
const finalError = queueError ? ? queueData . error ;
return < Container error = { finalError } / > ;
if ( queueError ) {
return < Container error = { queueError } / > ;
}
if ( ! queueData ) {
@ -9,8 +9,8 @@ export default function Component({ service }) {
const { data : queuedData , error : queuedError } = useWidgetAPI ( widget , "queue" ) ;
const { data : seriesData , error : seriesError } = useWidgetAPI ( widget , "series" ) ;
if ( wantedError || wantedData? . error || queuedError || queuedData? . error || seriesError || seriesData ? . e rror) {
const finalError = wantedError ? ? wantedData? . error ? ? queuedError ? ? queuedData? . error ? ? seriesError ? ? seriesData ? . e rror;
if ( wantedError || queuedError || seriesError) {
const finalError = wantedError ? ? queuedError ? ? seriesError;
return < Container error = { finalError } / > ;
}
@ -11,9 +11,8 @@ export default function Component({ service }) {
const { data : speedtestData , error : speedtestError } = useWidgetAPI ( widget , "speedtest/latest" ) ;
if ( speedtestError || speedtestData ? . error ) {
const finalError = speedtestError ? ? speedtestData . error ;
return < Container error = { finalError } / > ;
if ( speedtestError ) {
return < Container error = { speedtestError } / > ;
}
if ( ! speedtestData ) {
@ -11,9 +11,8 @@ export default function Component({ service }) {
const { data : statsData , error : statsError } = useWidgetAPI ( widget , "status" ) ;
if ( statsError || statsData ? . error ) {
const finalError = statsError ? ? statsData . error ;
return < Container error = { finalError } / > ;
if ( statsError ) {
return < Container error = { statsError } / > ;
}
if ( ! statsData ) {
@ -1,11 +1,10 @@
/* eslint-disable camelcase */
import useSWR from "swr" ;
import { useTranslation } from "next-i18next" ;
import { BsFillPlayFill , BsPauseFill , BsCpu , BsFillCpuFill } from "react-icons/bs" ;
import { MdOutlineSmartDisplay , MdSmartDisplay } from "react-icons/md" ;
import { formatProxyUrl } from "utils/proxy/api-helpers" ;
import Container from "components/services/widget/container" ;
import useWidgetAPI from "utils/proxy/use-widget-api" ;
function millisecondsToTime ( milliseconds ) {
const seconds = Math . floor ( ( milliseconds / 1000 ) % 60 ) ;
@ -119,13 +118,12 @@ export default function Component({ service }) {
const { widget } = service ;
const { data : activityData , error : activityError } = use SWR( formatProxyUrl ( widget , "get_activity" ) , {
const { data : activityData , error : activityError } = use WidgetAPI ( widget , "get_activity" , {
refreshInterval : 5000 ,
} ) ;
if ( activityError || activityData ? . error ) {
const finalError = activityError ? ? activityData . error ;
return < Container error = { finalError } / > ;
if ( activityError ) {
return < Container error = { activityError } / > ;
}
if ( ! activityData ) {
@ -7,9 +7,8 @@ export default function Component({ service }) {
const { data : traefikData , error : traefikError } = useWidgetAPI ( widget , "overview" ) ;
if ( traefikError || traefikData ? . error ) {
const finalError = traefikError ? ? traefikData . error ;
return < Container error = { finalError } / > ;
if ( traefikError ) {
return < Container error = { traefikError } / > ;
}
if ( ! traefikData ) {
@ -11,9 +11,8 @@ export default function Component({ service }) {
const { data : torrentData , error : torrentError } = useWidgetAPI ( widget ) ;
if ( torrentError || torrentData ? . error ) {
const finalError = torrentError ? ? torrentData . error ;
return < Container error = { finalError } / > ;
if ( torrentError ) {
return < Container error = { torrentError } / > ;
}
if ( ! torrentData ) {
@ -41,8 +41,8 @@ export default function Component({ service }) {
const { data : alertData , error : alertError } = useWidgetAPI ( widget , "alerts" ) ;
const { data : statusData , error : statusError } = useWidgetAPI ( widget , "status" ) ;
if ( alertError || alertData? . error || statusError || statusData ? . e rror) {
const finalError = alertError ? ? alertData? . error ? ? statusError ? ? statusData ? . e rror;
if ( alertError || statusError) {
const finalError = alertError ? ? statusError;
return < Container error = { finalError } / > ;
}
@ -14,8 +14,8 @@ export default function Component({ service }) {
const { data : channelsData , error : channelsError } = useWidgetAPI ( widget , "channels" ) ;
const { data : playlistsData , error : playlistsError } = useWidgetAPI ( widget , "playlists" ) ;
if ( downloadsError || downloadsData? . error || videosError || videosData? . error || channelsError || channelsData? . error || playlistsError || playlistsData ? . e rror) {
const finalError = downloadsError ? ? downloadsData? . error ? ? videosError ? ? videosData? . error ? ? channelsError ? ? channelsData? . error ? ? playlistsError ? ? playlistsData ? . e rror;
if ( downloadsError || videosError || channelsError || playlistsError) {
const finalError = downloadsError ? ? videosError ? ? channelsError ? ? playlistsError;
return < Container error = { finalError } / > ;
}
@ -11,9 +11,8 @@ export default function Component({ service }) {
const { data : statsData , error : statsError } = useWidgetAPI ( widget , "stat/sites" ) ;
if ( statsError || statsData ? . error ) {
const finalError = statsError ? ? statsData . error ;
return < Container error = { finalError } / > ;
if ( statsError ) {
return < Container error = { statsError } / > ;
}
const defaultSite = statsData ? . data ? . find ( s => s . name === "default" ) ;
@ -12,9 +12,8 @@ export default function Component({ service }) {
const { data : watchData , error : watchError } = useWidgetAPI ( widget , "watchtower" ) ;
if ( watchError || watchData ? . error ) {
const finalError = watchError ? ? watchData ? . error ;
return < Container error = { finalError } / > ;
if ( watchError ) {
return < Container error = { watchError } / > ;
}
if ( ! watchData ) {