import React, { Component } from 'react'; import { withStyles } from 'material-ui/styles'; import Button from 'material-ui/Button'; import { LinearProgress } from 'material-ui/Progress'; import Typography from 'material-ui/Typography'; import {withNotifier} from '../components/SnackbarNotification'; import SectionContent from '../components/SectionContent'; import { WIFI_STATUS_ENDPOINT } from '../constants/Endpoints'; import { isConnected, connectionStatus, connectionStatusHighlight } from '../constants/WiFiConnectionStatus'; import * as Highlight from '../constants/Highlight'; import { simpleGet } from '../helpers/SimpleGet'; import List, { ListItem, ListItemText } from 'material-ui/List'; import Avatar from 'material-ui/Avatar'; import Divider from 'material-ui/Divider'; import WifiIcon from 'material-ui-icons/Wifi'; import DNSIcon from 'material-ui-icons/Dns'; import SettingsInputComponentIcon from 'material-ui-icons/SettingsInputComponent'; import SettingsInputAntennaIcon from 'material-ui-icons/SettingsInputAntenna'; const styles = theme => ({ ["wifiStatus_" + Highlight.IDLE]: { backgroundColor: theme.palette.highlight_idle }, ["wifiStatus_" + Highlight.SUCCESS]: { backgroundColor: theme.palette.highlight_success }, ["wifiStatus_" + Highlight.ERROR]: { backgroundColor: theme.palette.highlight_error }, ["wifiStatus_" + Highlight.WARN]: { backgroundColor: theme.palette.highlight_warn }, fetching: { margin: theme.spacing.unit * 4, textAlign: "center" }, button: { marginRight: theme.spacing.unit * 2, marginTop: theme.spacing.unit * 2, } }); class WiFiStatus extends Component { constructor(props) { super(props); this.state = { status:null, fetched: false, errorMessage:null }; this.setState = this.setState.bind(this); this.loadWiFiStatus = this.loadWiFiStatus.bind(this); } componentDidMount() { this.loadWiFiStatus(); } dnsServers(status) { if (!status.dns_ip_1){ return "none"; } return status.dns_ip_1 + (status.dns_ip_2 ? ','+status.dns_ip_2 : ''); } loadWiFiStatus() { simpleGet( WIFI_STATUS_ENDPOINT, this.setState, this.props.raiseNotification ); } renderWiFiStatus(status, fullDetails, classes) { const listItems = []; listItems.push( ); if (fullDetails && isConnected(status)) { listItems.push(); listItems.push( ); listItems.push(); listItems.push( IP ); listItems.push(); listItems.push( # ); listItems.push(); listItems.push( ); listItems.push(); listItems.push( ); } return (
{listItems}
); } render() { const { status, fetched, errorMessage } = this.state; const { classes, fullDetails } = this.props; return ( { !fetched ?
Loading...
: status ? this.renderWiFiStatus(status, fullDetails, classes) :
{errorMessage}
}
) } } export default withNotifier(withStyles(styles)(WiFiStatus));