Files
SCM-Manager/scm-ui/src/config/components/form/ProxySettings.js

122 lines
3.5 KiB
JavaScript
Raw Normal View History

2018-08-13 16:33:56 +02:00
// @flow
import React from "react";
import { translate } from "react-i18next";
import {
Checkbox,
InputField,
Subtitle,
AddEntryToTableField
} from "@scm-manager/ui-components";
2018-08-16 11:18:28 +02:00
import ProxyExcludesTable from "../table/ProxyExcludesTable";
2018-08-13 16:33:56 +02:00
type Props = {
proxyPassword: string,
proxyPort: number,
proxyServer: string,
proxyUser: string,
enableProxy: boolean,
2018-08-30 10:10:59 +02:00
proxyExcludes: string[],
2018-08-13 16:33:56 +02:00
t: string => string,
onChange: (boolean, any, string) => void,
hasUpdatePermission: boolean
2018-08-13 16:33:56 +02:00
};
class ProxySettings extends React.Component<Props> {
render() {
const {
t,
proxyPassword,
proxyPort,
proxyServer,
proxyUser,
2018-08-16 11:18:28 +02:00
enableProxy,
proxyExcludes,
hasUpdatePermission
2018-08-13 16:33:56 +02:00
} = this.props;
return (
<div>
<Subtitle subtitle={t("proxy-settings.name")} />
<Checkbox
checked={enableProxy}
label={t("proxy-settings.enable-proxy")}
onChange={this.handleEnableProxyChange}
disabled={!hasUpdatePermission}
2018-08-13 16:33:56 +02:00
/>
<InputField
label={t("proxy-settings.proxy-password")}
onChange={this.handleProxyPasswordChange}
value={proxyPassword}
2018-08-16 14:04:27 +02:00
type="password"
disabled={!enableProxy || !hasUpdatePermission}
2018-08-13 16:33:56 +02:00
/>
<InputField
label={t("proxy-settings.proxy-port")}
value={proxyPort}
onChange={this.handleProxyPortChange}
disabled={!enableProxy || !hasUpdatePermission}
2018-08-13 16:33:56 +02:00
/>
<InputField
label={t("proxy-settings.proxy-server")}
value={proxyServer}
onChange={this.handleProxyServerChange}
disabled={!enableProxy || !hasUpdatePermission}
2018-08-13 16:33:56 +02:00
/>
<InputField
label={t("proxy-settings.proxy-user")}
value={proxyUser}
onChange={this.handleProxyUserChange}
disabled={!enableProxy || !hasUpdatePermission}
2018-08-13 16:33:56 +02:00
/>
2018-08-16 11:18:28 +02:00
<ProxyExcludesTable
proxyExcludes={proxyExcludes}
onChange={(isValid, changedValue, name) =>
this.props.onChange(isValid, changedValue, name)
}
disabled={!enableProxy || !hasUpdatePermission}
/>
<AddEntryToTableField
addEntry={this.addProxyExclude}
disabled={!enableProxy || !hasUpdatePermission}
buttonLabel={t("proxy-settings.add-proxy-exclude-button")}
fieldLabel={t("proxy-settings.add-proxy-exclude-textfield")}
errorMessage={t("proxy-settings.add-proxy-exclude-error")}
2018-08-16 11:18:28 +02:00
/>
2018-08-13 16:33:56 +02:00
</div>
);
}
handleProxyPasswordChange = (value: string) => {
this.props.onChange(true, value, "proxyPassword");
};
handleProxyPortChange = (value: string) => {
this.props.onChange(true, value, "proxyPort");
};
handleProxyServerChange = (value: string) => {
this.props.onChange(true, value, "proxyServer");
};
handleProxyUserChange = (value: string) => {
this.props.onChange(true, value, "proxyUser");
};
handleEnableProxyChange = (value: string) => {
this.props.onChange(true, value, "enableProxy");
};
2018-08-16 11:18:28 +02:00
addProxyExclude = (proxyExcludeName: string) => {
if (this.isProxyExcludeMember(proxyExcludeName)) {
return;
}
this.props.onChange(
true,
[...this.props.proxyExcludes, proxyExcludeName],
"proxyExcludes"
);
};
isProxyExcludeMember = (proxyExcludeName: string) => {
return this.props.proxyExcludes.includes(proxyExcludeName);
};
2018-08-13 16:33:56 +02:00
}
export default translate("config")(ProxySettings);