import React, { Component, Fragment } from 'react'; import { Avatar, Button, Divider, Dialog, DialogTitle, DialogContent, DialogActions } from '@material-ui/core'; import { List, ListItem, ListItemAvatar, ListItemText } from '@material-ui/core'; import DevicesIcon from '@material-ui/icons/Devices'; import MemoryIcon from '@material-ui/icons/Memory'; import ShowChartIcon from '@material-ui/icons/ShowChart'; import SdStorageIcon from '@material-ui/icons/SdStorage'; import DataUsageIcon from '@material-ui/icons/DataUsage'; import AutorenewIcon from '@material-ui/icons/Autorenew'; import RefreshIcon from '@material-ui/icons/Refresh'; import { redirectingAuthorizedFetch } from '../authentication'; import { RestFormProps, FormButton, FormActions } from '../components'; import { RESTART_ENDPOINT } from '../api'; import { SystemStatus } from './types'; interface SystemStatusFormState { confirmRestart: boolean; processing: boolean; } type SystemStatusFormProps = RestFormProps; class SystemStatusForm extends Component { state: SystemStatusFormState = { confirmRestart: false, processing: false } createListItems() { const { data } = this.props return ( ); } renderRestartDialog() { return ( Confirm Restart Are you sure you want to restart the device? ) } onRestart = () => { this.setState({ confirmRestart: true }); } onRestartRejected = () => { this.setState({ confirmRestart: false }); } onRestartConfirmed = () => { this.setState({ processing: true }); redirectingAuthorizedFetch(RESTART_ENDPOINT, { method: 'POST' }) .then(response => { if (response.status === 200) { this.props.enqueueSnackbar("Device is restarting", { variant: 'info' }); this.setState({ processing: false, confirmRestart: false }); } else { throw Error("Invalid status code: " + response.status); } }) .catch(error => { this.props.enqueueSnackbar(error.message || "Problem restarting device", { variant: 'error' }); this.setState({ processing: false, confirmRestart: false }); }); } render() { return ( {this.createListItems()} } variant="contained" color="secondary" onClick={this.props.loadData}> Refresh } variant="contained" color="primary" onClick={this.onRestart}> Restart {this.renderRestartDialog()} ); } } export default SystemStatusForm;