Add toggle for DHT

This commit is contained in:
John Furrow
2016-06-08 22:32:08 -07:00
parent 988ce37a3f
commit cea1ef73af
5 changed files with 67 additions and 15 deletions
@@ -10,10 +10,11 @@ import SettingsStore from '../../stores/SettingsStore';
import StorageTab from '../settings/StorageTab';
const METHODS_TO_BIND = [
'handleClientSettingsChange',
'handleCustomsSettingChange',
'handleFloodSettingsChange',
'handleSaveSettingsClick',
'handleSaveSettingsError',
'handleClientSettingsChange',
'handleFloodSettingsChange',
'handleSettingsStoreChange'
];
@@ -80,9 +81,14 @@ export default class SettingsModal extends React.Component {
];
}
handleSaveSettingsClick() {
this.setState({isSavingSettings: true});
handleCustomsSettingChange(data) {
this.setState({
changedClientSettings: this.mergeObjects(this.state.changedClientSettings,
{[data.id]: {...data, overrideLocalSetting: true}})
});
}
handleSaveSettingsClick() {
let floodSettings = Object.keys(this.state.changedFloodSettings).map((settingsKey) => {
return {
id: settingsKey,
@@ -91,12 +97,17 @@ export default class SettingsModal extends React.Component {
});
let clientSettings = Object.keys(this.state.changedClientSettings).map((settingsKey) => {
return {
id: settingsKey,
data: this.state.changedClientSettings[settingsKey]
};
let data = this.state.changedClientSettings[settingsKey];
if (data.overrideLocalSetting) {
return data;
}
return {id: settingsKey, data};
});
this.setState({isSavingSettings: true});
SettingsStore.saveFloodSettings(floodSettings, {dismissModal: true, notify: true});
SettingsStore.saveClientSettings(clientSettings, {dismissModal: true, notify: true});
}
@@ -161,6 +172,7 @@ export default class SettingsModal extends React.Component {
connectivity: {
content: ConnectivityTab,
props: {
onCustomSettingsChange: this.handleCustomsSettingChange,
onClientSettingsChange: this.handleClientSettingsChange,
settings: this.state.clientSettings
},
@@ -4,11 +4,38 @@ import React from 'react';
import Checkbox from '../forms/Checkbox';
import SettingsTab from './SettingsTab';
const METHODS_TO_BIND = ['handleDHTToggle'];
export default class ConnectivityTab extends SettingsTab {
constructor() {
super(...arguments);
this.state = {};
METHODS_TO_BIND.forEach((method) => {
this[method] = this[method].bind(this);
});
}
getDHTEnabledValue() {
if (this.state.dhtEnabled != null) {
return this.state.dhtEnabled;
}
return this.props.settings.dhtStats.dht === 'auto';
}
handleDHTToggle() {
let dhtEnabled = !this.getDHTEnabledValue();
let dhtEnabledString = dhtEnabled ? 'auto' : 'disable';
this.setState({dhtEnabled});
this.props.onCustomSettingsChange({
id: 'dht',
data: [dhtEnabledString],
overrideID: 'dhtStats',
overrideData: {dht: dhtEnabledString}
});
}
render() {
@@ -56,6 +83,13 @@ export default class ConnectivityTab extends SettingsTab {
onChange={this.handleClientSettingFieldChange.bind(this, 'dhtPort')}
value={this.getFieldValue('dhtPort')} />
</div>
<div className="form__column form__column--auto form__column--unlabled">
<Checkbox
checked={this.getDHTEnabledValue()}
onChange={this.handleDHTToggle}>
Enabled
</Checkbox>
</div>
</div>
</div>
<div className="form__section">
@@ -155,7 +155,11 @@ class SettingsStoreClass extends BaseStore {
updateLocalSettings(settings, settingsType) {
settings.forEach((setting) => {
this[settingsType][setting.id] = setting.data;
if (setting.overrideLocalSetting) {
this[settingsType][setting.overrideID] = setting.overrideData;
} else {
this[settingsType][setting.id] = setting.data;
}
});
}
}
+6 -4
View File
@@ -126,7 +126,6 @@ class ClientRequest {
}
addURLsMethodCall(options) {
console.log(options);
let path = options.path;
let start = options.start;
let urls = this.getEnsuredArray(options.urls);
@@ -274,12 +273,15 @@ class ClientRequest {
}
setSettingsMethodCall(options) {
console.log(options);
let settings = this.getEnsuredArray(options.settings);
settings.forEach((setting) => {
this.requests.push(this.getMethodCall(`${clientSettingsMap[setting.id]}.set`,
['', setting.data]));
if (setting.overrideLocalSetting) {
this.requests.push(this.getMethodCall(setting.id, setting.data));
} else {
this.requests.push(this.getMethodCall(`${clientSettingsMap[setting.id]}.set`,
['', setting.data]));
}
});
}
+2 -2
View File
@@ -4,7 +4,7 @@ let objectUtil = require('../util/objectUtil');
const clientSettingsMap = objectUtil.reflect({
dhtPort: 'dht.port',
dhtStatus: 'dht.statistics',
dhtStats: 'dht.statistics',
directoryDefault: 'directory.default',
maxFileSize: 'system.file.max_size',
networkBindAddress: 'network.bind_address',
@@ -55,7 +55,7 @@ const clientSettingsMap = objectUtil.reflect({
clientSettingsMap.defaults = [
'dhtPort',
'dhtStatus',
'dhtStats',
'directoryDefault',
'maxFileSize',
'networkBindAddress',