Retain configured hostname (#173)
Retain configured hostname when selecting new network from network scanner
This commit is contained in:
parent
c16f7693fd
commit
25f04c3d7f
@ -1,8 +1,7 @@
|
|||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
|
|
||||||
import {restController, RestControllerProps, RestFormLoader, SectionContent } from '../components';
|
import { restController, RestControllerProps, RestFormLoader, SectionContent } from '../components';
|
||||||
import WiFiSettingsForm from './WiFiSettingsForm';
|
import WiFiSettingsForm from './WiFiSettingsForm';
|
||||||
import { WiFiConnectionContext } from './WiFiConnectionContext';
|
|
||||||
import { WIFI_SETTINGS_ENDPOINT } from '../api';
|
import { WIFI_SETTINGS_ENDPOINT } from '../api';
|
||||||
import { WiFiSettings } from './types';
|
import { WiFiSettings } from './types';
|
||||||
|
|
||||||
@ -10,39 +9,15 @@ type WiFiSettingsControllerProps = RestControllerProps<WiFiSettings>;
|
|||||||
|
|
||||||
class WiFiSettingsController extends Component<WiFiSettingsControllerProps> {
|
class WiFiSettingsController extends Component<WiFiSettingsControllerProps> {
|
||||||
|
|
||||||
static contextType = WiFiConnectionContext;
|
|
||||||
context!: React.ContextType<typeof WiFiConnectionContext>;
|
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
const { selectedNetwork } = this.context;
|
|
||||||
if (selectedNetwork) {
|
|
||||||
const wifiSettings: WiFiSettings = {
|
|
||||||
ssid: selectedNetwork.ssid,
|
|
||||||
password: "",
|
|
||||||
hostname: "esp8266-react",
|
|
||||||
static_ip_config: false,
|
|
||||||
}
|
|
||||||
this.props.setData(wifiSettings);
|
|
||||||
} else {
|
|
||||||
this.props.loadData();
|
this.props.loadData();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
deselectNetworkAndLoadData = () => {
|
|
||||||
this.context.deselectNetwork();
|
|
||||||
this.props.loadData();
|
|
||||||
}
|
|
||||||
|
|
||||||
componentWillUnmount() {
|
|
||||||
this.context.deselectNetwork();
|
|
||||||
}
|
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<SectionContent title="WiFi Settings">
|
<SectionContent title="WiFi Settings">
|
||||||
<RestFormLoader
|
<RestFormLoader
|
||||||
{...this.props}
|
{...this.props}
|
||||||
loadData={this.deselectNetworkAndLoadData}
|
|
||||||
render={formProps => <WiFiSettingsForm {...formProps} />}
|
render={formProps => <WiFiSettingsForm {...formProps} />}
|
||||||
/>
|
/>
|
||||||
</SectionContent>
|
</SectionContent>
|
||||||
|
@ -24,15 +24,39 @@ class WiFiSettingsForm extends React.Component<WiFiStatusFormProps> {
|
|||||||
static contextType = WiFiConnectionContext;
|
static contextType = WiFiConnectionContext;
|
||||||
context!: React.ContextType<typeof WiFiConnectionContext>;
|
context!: React.ContextType<typeof WiFiConnectionContext>;
|
||||||
|
|
||||||
|
constructor(props: WiFiStatusFormProps, context: WiFiConnectionContext) {
|
||||||
|
super(props);
|
||||||
|
|
||||||
|
const { selectedNetwork } = context;
|
||||||
|
if (selectedNetwork) {
|
||||||
|
const wifiSettings: WiFiSettings = {
|
||||||
|
ssid: selectedNetwork.ssid,
|
||||||
|
password: "",
|
||||||
|
hostname: props.data.hostname,
|
||||||
|
static_ip_config: false,
|
||||||
|
}
|
||||||
|
props.setData(wifiSettings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
componentWillMount() {
|
componentWillMount() {
|
||||||
ValidatorForm.addValidationRule('isIP', isIP);
|
ValidatorForm.addValidationRule('isIP', isIP);
|
||||||
ValidatorForm.addValidationRule('isHostname', isHostname);
|
ValidatorForm.addValidationRule('isHostname', isHostname);
|
||||||
ValidatorForm.addValidationRule('isOptionalIP', optional(isIP));
|
ValidatorForm.addValidationRule('isOptionalIP', optional(isIP));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
deselectNetworkAndLoadData = () => {
|
||||||
|
this.context.deselectNetwork();
|
||||||
|
this.props.loadData();
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillUnmount() {
|
||||||
|
this.context.deselectNetwork();
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { selectedNetwork, deselectNetwork } = this.context;
|
const { selectedNetwork, deselectNetwork } = this.context;
|
||||||
const { data, handleValueChange, saveData, loadData } = this.props;
|
const { data, handleValueChange, saveData } = this.props;
|
||||||
return (
|
return (
|
||||||
<ValidatorForm onSubmit={saveData} ref="WiFiSettingsForm">
|
<ValidatorForm onSubmit={saveData} ref="WiFiSettingsForm">
|
||||||
{
|
{
|
||||||
@ -167,7 +191,7 @@ class WiFiSettingsForm extends React.Component<WiFiStatusFormProps> {
|
|||||||
<FormButton startIcon={<SaveIcon />} variant="contained" color="primary" type="submit">
|
<FormButton startIcon={<SaveIcon />} variant="contained" color="primary" type="submit">
|
||||||
Save
|
Save
|
||||||
</FormButton>
|
</FormButton>
|
||||||
<FormButton variant="contained" color="secondary" onClick={loadData}>
|
<FormButton variant="contained" color="secondary" onClick={this.deselectNetworkAndLoadData}>
|
||||||
Reset
|
Reset
|
||||||
</FormButton>
|
</FormButton>
|
||||||
</FormActions>
|
</FormActions>
|
||||||
|
Loading…
Reference in New Issue
Block a user