Files
vega-frontend-monorepo/libs/environment/src/components/node-guard/node-guard.tsx
T

32 lines
896 B
TypeScript

import type { ReactNode } from 'react';
import { useNodeGuardQuery } from './__generated__/NodeGuard';
export const NodeGuard = ({
children,
failure,
skeleton,
}: {
children: ReactNode;
failure: ReactNode;
skeleton: ReactNode;
}) => {
const { data, error, loading } = useNodeGuardQuery();
const wrapperClasses =
'h-full min-h-screen flex items-center justify-center text-black dark:text-white';
if (loading) {
return <div className={wrapperClasses}>{skeleton}</div>;
}
// It is possible for nodes to have a functioning datanode, but not return
// any net params. The app cannot safely function without net params
const netParamEdges = data?.networkParametersConnection.edges;
if (error || !netParamEdges || !netParamEdges.length) {
return <div className={wrapperClasses}>{failure}</div>;
}
// eslint-disable-next-line
return <>{children}</>;
};