import React from 'react'; 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, "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 }); }