diff --git a/src/pages/info/index.tsx b/src/pages/info/index.tsx index eb06c05..fd01a27 100644 --- a/src/pages/info/index.tsx +++ b/src/pages/info/index.tsx @@ -17,6 +17,7 @@ export default function Status(): ReactElement { topology, nodeAddresses, chequebookAddress, + nodeInfo, } = useContext(BeeContext) if (!status.all) return @@ -24,6 +25,7 @@ export default function Status(): ReactElement { return (
+ { const { status, isLoading, chequebookAddress } = useContext(Context) - const isOk = status.chequebook + const { isOk, isEnabled } = status.chequebook + + if (!isEnabled) return null return ( Promise } -const startedInDevMode = window.location.search.includes('devMode=1') - const initialValues: ContextInterface = { status: { all: false, - version: false, - blockchainConnection: false, - debugApiConnection: false, - apiConnection: false, - topology: false, - chequebook: false, + version: { isEnabled: false, isOk: false }, + blockchainConnection: { isEnabled: false, isOk: false }, + debugApiConnection: { isEnabled: false, isOk: false }, + apiConnection: { isEnabled: false, isOk: false }, + topology: { isEnabled: false, isOk: false }, + chequebook: { isEnabled: false, isOk: false }, }, latestPublishedVersion: undefined, latestUserVersion: undefined, @@ -104,34 +108,52 @@ interface Props { function getStatus( debugApiHealth: Health | null, nodeAddresses: NodeAddresses | null, - nodeInfo: NodesInfo | null, + nodeInfo: NodeInfo | null, apiHealth: boolean, topology: Topology | null, chequebookAddress: ChequebookAddressResponse | null, chequebookBalance: ChequebookBalance | null, error: Error | null, ): Status { - // FIXME: `devMode` is a temporary workaround to be able to develop with only one node - const devMode = startedInDevMode || Boolean(process.env.REACT_APP_DEV_MODE) || nodeInfo?.beeMode === 'dev' const status = { - version: Boolean( - debugApiHealth && - semver.satisfies(debugApiHealth.version, engines.bee, { - includePrerelease: true, - }), - ), - blockchainConnection: Boolean(nodeAddresses?.ethereum), - debugApiConnection: Boolean(debugApiHealth?.status === 'ok'), - apiConnection: apiHealth, - topology: Boolean(topology?.connected && topology?.connected > 0) || devMode, - chequebook: - (Boolean(chequebookAddress?.chequebookAddress) && + version: { + isEnabled: true, + isOk: Boolean( + debugApiHealth && + semver.satisfies(debugApiHealth.version, engines.bee, { + includePrerelease: true, + }), + ), + }, + blockchainConnection: { + isEnabled: true, + isOk: Boolean(nodeAddresses?.ethereum), + }, + debugApiConnection: { + isEnabled: true, + isOk: Boolean(debugApiHealth?.status === 'ok'), + }, + apiConnection: { + isEnabled: true, + isOk: apiHealth, + }, + topology: { + isEnabled: Boolean(nodeInfo && [BeeModes.FULL, BeeModes.LIGHT, BeeModes.ULTRA_LIGHT].includes(nodeInfo.beeMode)), + isOk: Boolean(topology?.connected && topology?.connected > 0), + }, + chequebook: { + isEnabled: Boolean(nodeInfo && [BeeModes.FULL, BeeModes.LIGHT].includes(nodeInfo.beeMode)), + isOk: + Boolean(chequebookAddress?.chequebookAddress) && chequebookBalance !== null && - chequebookBalance?.totalBalance.toBigNumber.isGreaterThan(0)) || - devMode, + chequebookBalance?.totalBalance.toBigNumber.isGreaterThan(0), + }, } - return { ...status, all: !error && Object.values(status).every(v => v) } + return { + ...status, + all: !error && Object.values(status).every(({ isEnabled, isOk }) => !isEnabled || (isEnabled && isOk)), + } } export function Provider({ children }: Props): ReactElement { @@ -139,7 +161,7 @@ export function Provider({ children }: Props): ReactElement { const [apiHealth, setApiHealth] = useState(false) const [debugApiHealth, setDebugApiHealth] = useState(null) const [nodeAddresses, setNodeAddresses] = useState(null) - const [nodeInfo, setNodeInfo] = useState(null) + const [nodeInfo, setNodeInfo] = useState(null) const [topology, setNodeTopology] = useState(null) const [chequebookAddress, setChequebookAddress] = useState(null) const [peers, setPeers] = useState(null)