mirror of
https://github.com/zoriya/flood.git
synced 2026-05-31 18:25:25 +00:00
Add toggle for DHT
This commit is contained in:
@@ -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;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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]));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user