From a4b8e7ca2596028e7c8192c92202c0361610e307 Mon Sep 17 00:00:00 2001 From: Cafe137 <77121044+Cafe137@users.noreply.github.com> Date: Mon, 7 Nov 2022 14:02:22 +0100 Subject: [PATCH] fix: change status page depending on desktop mode (#573) * fix: change status page depending on desktop mode * refactor: check desktop reachability periodically --- src/hooks/apiHooks.tsx | 26 ++++++++++++++- .../SetupSteps/ChequebookDeployFund.tsx | 3 +- .../SetupSteps/DebugConnectionCheck.tsx | 8 ++--- .../SetupSteps/DesktopConnectionCheck.tsx | 32 +++++++++++++++++++ .../status/SetupSteps/NodeConnectionCheck.tsx | 8 ++--- .../status/SetupSteps/PeerConnection.tsx | 3 +- src/pages/status/index.tsx | 11 +++++-- 7 files changed, 77 insertions(+), 14 deletions(-) create mode 100644 src/pages/status/SetupSteps/DesktopConnectionCheck.tsx diff --git a/src/hooks/apiHooks.tsx b/src/hooks/apiHooks.tsx index aa8c54b..65157b7 100644 --- a/src/hooks/apiHooks.tsx +++ b/src/hooks/apiHooks.tsx @@ -11,6 +11,7 @@ export interface LatestBeeReleaseHook { } export interface BeeDesktopHook { + reachable: boolean error: Error | null isLoading: boolean beeDesktopVersion: string @@ -22,11 +23,34 @@ export interface NewDesktopVersionHook { } export const useBeeDesktop = (isBeeDesktop = false, desktopUrl: string): BeeDesktopHook => { + const [reachable, setReachable] = useState(false) const [desktopAutoUpdateEnabled, setDesktopAutoUpdateEnabled] = useState(true) const [beeDesktopVersion, setBeeDesktopVersion] = useState('') const [isLoading, setLoading] = useState(true) const [error, setError] = useState(null) + useEffect(() => { + if (!isBeeDesktop) { + return + } + + function runReachabilityCheck() { + axios + .get(`${desktopUrl}/info`) + .then(() => { + setReachable(true) + }) + .catch(() => { + setReachable(false) + }) + } + + runReachabilityCheck() + const interval = setInterval(runReachabilityCheck, 10_000) + + return () => clearInterval(interval) + }, [desktopUrl, isBeeDesktop]) + useEffect(() => { if (!isBeeDesktop) { setLoading(false) @@ -48,7 +72,7 @@ export const useBeeDesktop = (isBeeDesktop = false, desktopUrl: string): BeeDesk } }, [desktopUrl, isBeeDesktop]) - return { error, isLoading, beeDesktopVersion, desktopAutoUpdateEnabled } + return { error, isLoading, beeDesktopVersion, desktopAutoUpdateEnabled, reachable } } async function checkNewVersion(desktopUrl: string): Promise { diff --git a/src/pages/status/SetupSteps/ChequebookDeployFund.tsx b/src/pages/status/SetupSteps/ChequebookDeployFund.tsx index 927f845..012f3a9 100644 --- a/src/pages/status/SetupSteps/ChequebookDeployFund.tsx +++ b/src/pages/status/SetupSteps/ChequebookDeployFund.tsx @@ -11,8 +11,9 @@ import { CheckState, Context } from '../../../providers/Bee' const ChequebookDeployFund = (): ReactElement | null => { const { status, isLoading, chequebookAddress } = useContext(Context) const { checkState, isEnabled } = status.chequebook + const { checkState: debugApiCheckState } = status.debugApiConnection - if (!isEnabled) return null + if (!isEnabled || debugApiCheckState === CheckState.ERROR) return null let text: ReactNode diff --git a/src/pages/status/SetupSteps/DebugConnectionCheck.tsx b/src/pages/status/SetupSteps/DebugConnectionCheck.tsx index b6d961c..2735127 100644 --- a/src/pages/status/SetupSteps/DebugConnectionCheck.tsx +++ b/src/pages/status/SetupSteps/DebugConnectionCheck.tsx @@ -11,7 +11,7 @@ import { Context as SettingsContext } from '../../../providers/Settings' export default function NodeConnectionCheck(): ReactElement | null { const { status, isLoading } = useContext(Context) - const { setDebugApiUrl, apiDebugUrl } = useContext(SettingsContext) + const { setDebugApiUrl, apiDebugUrl, isDesktop } = useContext(SettingsContext) const { checkState, isEnabled } = status.debugApiConnection if (!isEnabled) return null @@ -26,12 +26,12 @@ export default function NodeConnectionCheck(): ReactElement | null { > {checkState === CheckState.OK - ? 'The connection to the Bee nodes debug API has been successful' - : 'We cannot connect to your nodes debug API. Please check the following to troubleshoot your issue.'} + ? 'The connection to the Bee node debug API has been successful' + : 'Could not connect to your Bee node debug API.'} - {checkState === CheckState.ERROR && ( + {checkState === CheckState.ERROR && !isDesktop && ( + Connection to Swarm + Desktop + + } + > + + {reachable + ? 'The connection to the Swarm Desktop API has been successful' + : 'Could not connect to the Swarm Desktop API'} + + + + ) +} diff --git a/src/pages/status/SetupSteps/NodeConnectionCheck.tsx b/src/pages/status/SetupSteps/NodeConnectionCheck.tsx index 9669c17..6e47037 100644 --- a/src/pages/status/SetupSteps/NodeConnectionCheck.tsx +++ b/src/pages/status/SetupSteps/NodeConnectionCheck.tsx @@ -10,7 +10,7 @@ import StatusIcon from '../../../components/StatusIcon' import { CheckState, Context } from '../../../providers/Bee' export default function NodeConnectionCheck(): ReactElement | null { - const { setApiUrl, apiUrl } = useContext(SettingsContext) + const { setApiUrl, apiUrl, isDesktop } = useContext(SettingsContext) const { status, isLoading } = useContext(Context) const { isEnabled, checkState } = status.apiConnection @@ -26,11 +26,11 @@ export default function NodeConnectionCheck(): ReactElement | null { > {checkState === CheckState.OK - ? 'The connection to the Bee nodes API has been successful' - : 'Could not connect to your Bee nodes API. Please check the troubleshoot below on how you may resolve it.'} + ? 'The connection to the Bee node API has been successful' + : 'Could not connect to your Bee node API.'} - {checkState === CheckState.ERROR && ( + {checkState === CheckState.ERROR && !isDesktop && ( + {isDesktop && } + - + {!isDesktop && } - )