import { makeStyles, Theme, createStyles } from '@material-ui/core/styles'; import { LinearProgress, Typography } from '@material-ui/core'; import { WebSocketControllerProps } from '.'; const useStyles = makeStyles((theme: Theme) => createStyles({ loadingSettings: { margin: theme.spacing(0.5) }, loadingSettingsDetails: { margin: theme.spacing(4), textAlign: 'center' } }) ); export type WebSocketFormProps = Omit< WebSocketControllerProps, 'connected' > & { data: D }; interface WebSocketFormLoaderProps extends WebSocketControllerProps { render: (props: WebSocketFormProps) => JSX.Element; } export default function WebSocketFormLoader( props: WebSocketFormLoaderProps ) { const { connected, render, data, ...rest } = props; const classes = useStyles(); if (!connected || !data) { return (
Connecting to WebSocket...
); } return render({ ...rest, data }); }