|
Packit Service |
0246ed |
/* eslint-disable jsx-a11y/label-has-associated-control */
|
|
Packit Service |
0246ed |
/* eslint-disable react/no-did-update-set-state */
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
import React from "react";
|
|
Packit Service |
0246ed |
import PropTypes from "prop-types";
|
|
Packit Service |
0246ed |
import { connect } from "react-redux";
|
|
Packit Service |
0246ed |
import { FormattedMessage, defineMessages, injectIntl, intlShape } from "react-intl";
|
|
Packit Service |
0246ed |
import { Modal, Alert, Spinner } from "patternfly-react";
|
|
Packit Service |
0246ed |
import SourcesListItem from "../ListView/SourcesListItem";
|
|
Packit Service |
0246ed |
import EmptyState from "../EmptyState/EmptyState";
|
|
Packit Service |
0246ed |
import {
|
|
Packit Service |
0246ed |
addModalManageSourcesEntry,
|
|
Packit Service |
0246ed |
removeModalManageSourcesEntry,
|
|
Packit Service |
0246ed |
modalManageSourcesFailure,
|
|
Packit Service |
0246ed |
} from "../../core/actions/modals";
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
const messages = defineMessages({
|
|
Packit Service |
0246ed |
infotip: {
|
|
Packit Service |
0246ed |
defaultMessage:
|
|
Packit Service |
0246ed |
"Sources are used for resolving blueprint dependencies and for composing images. " +
|
|
Packit Service |
0246ed |
"When adding custom sources you must make sure that the packages in the source do not conflict with any other package sources, " +
|
|
Packit Service |
0246ed |
"otherwise resolving dependencies and composing images will fail.",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
errorStateTitle: {
|
|
Packit Service |
0246ed |
defaultMessage: "An Error Occurred",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
errorStateMessage: {
|
|
Packit Service |
0246ed |
defaultMessage: "An error occurred while trying to get sources.",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
closeButtonLabel: {
|
|
Packit Service |
0246ed |
defaultMessage: "Close",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
sourcePath: {
|
|
Packit Service |
0246ed |
defaultMessage: "Source path",
|
|
Packit Service |
0246ed |
description: "The path or url to the source repository",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
name: {
|
|
Packit Service |
0246ed |
defaultMessage: "Name",
|
|
Packit Service |
0246ed |
description: "Name of source",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
type: {
|
|
Packit Service |
0246ed |
defaultMessage: "Type",
|
|
Packit Service |
0246ed |
description: "Type of source",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
security: {
|
|
Packit Service |
0246ed |
defaultMessage: "Security",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
check_ssl: {
|
|
Packit Service |
0246ed |
defaultMessage: "Check SSL certificate",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
check_gpg: {
|
|
Packit Service |
0246ed |
defaultMessage: "Check GPG key",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
selectOne: {
|
|
Packit Service |
0246ed |
defaultMessage: "Select one",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
typeRepo: {
|
|
Packit Service |
0246ed |
defaultMessage: "yum repository",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
typeMirrorlist: {
|
|
Packit Service |
0246ed |
defaultMessage: "mirrorlist",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
typeMetalink: {
|
|
Packit Service |
0246ed |
defaultMessage: "metalink",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
add: {
|
|
Packit Service |
0246ed |
defaultMessage: "Add Source",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
save: {
|
|
Packit Service |
0246ed |
defaultMessage: "Add Source",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
update: {
|
|
Packit Service |
0246ed |
defaultMessage: "Update Source",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
cancel: {
|
|
Packit Service |
0246ed |
defaultMessage: "Cancel",
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
});
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
class ManageSources extends React.Component {
|
|
Packit Service |
0246ed |
constructor(props) {
|
|
Packit Service |
0246ed |
super(props);
|
|
Packit Service |
0246ed |
this.state = {
|
|
Packit Service |
0246ed |
showModal: false,
|
|
Packit Service |
0246ed |
};
|
|
Packit Service |
0246ed |
this.open = this.open.bind(this);
|
|
Packit Service |
0246ed |
this.close = this.close.bind(this);
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
open() {
|
|
Packit Service |
0246ed |
this.setState({ showModal: true });
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
close() {
|
|
Packit Service |
0246ed |
this.setState({ showModal: false });
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
render() {
|
|
Packit Service |
0246ed |
return (
|
|
Packit Service |
0246ed |
<>
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
defaultMessage="Manage Sources"
|
|
Packit Service |
0246ed |
description="User action for displaying the list of source repositories"
|
|
Packit Service |
0246ed |
/>
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
{this.state.showModal && (
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
manageSources={this.props.manageSources}
|
|
Packit Service |
0246ed |
addSource={this.props.addModalManageSourcesEntry}
|
|
Packit Service |
0246ed |
removeSource={this.props.removeModalManageSourcesEntry}
|
|
Packit Service |
0246ed |
clearError={this.props.modalManageSourcesFailure}
|
|
Packit Service |
0246ed |
close={this.close}
|
|
Packit Service |
0246ed |
intl={this.props.intl}
|
|
Packit Service |
0246ed |
/>
|
|
Packit Service |
0246ed |
)}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
);
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
class ManageSourcesModal extends React.Component {
|
|
Packit Service |
0246ed |
constructor(props) {
|
|
Packit Service |
0246ed |
super(props);
|
|
Packit Service |
0246ed |
this.state = {
|
|
Packit Service |
0246ed |
addEntry: false,
|
|
Packit Service |
0246ed |
url: "",
|
|
Packit Service |
0246ed |
name: "",
|
|
Packit Service |
0246ed |
type: "",
|
|
Packit Service |
0246ed |
check_ssl: false,
|
|
Packit Service |
0246ed |
check_gpg: false,
|
|
Packit Service |
0246ed |
warningDuplicateName: false,
|
|
Packit Service |
0246ed |
warningDuplicateUrl: false,
|
|
Packit Service |
0246ed |
editName: "",
|
|
Packit Service |
0246ed |
};
|
|
Packit Service |
0246ed |
this.handleShowForm = this.handleShowForm.bind(this);
|
|
Packit Service |
0246ed |
this.handleChange = this.handleChange.bind(this);
|
|
Packit Service |
0246ed |
this.handleValidateName = this.handleValidateName.bind(this);
|
|
Packit Service |
0246ed |
this.handleValidateUrl = this.handleValidateUrl.bind(this);
|
|
Packit Service |
0246ed |
this.handleEditSource = this.handleEditSource.bind(this);
|
|
Packit Service |
0246ed |
this.handleSubmitSource = this.handleSubmitSource.bind(this);
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
componentDidUpdate(prevProps) {
|
|
Packit Service |
0246ed |
// if no errors are returned on add/edit, then reset form state after fetching sources completes
|
|
Packit Service |
0246ed |
if (
|
|
Packit Service |
0246ed |
Object.keys(this.props.manageSources.error).length === 0 &&
|
|
Packit Service |
0246ed |
!this.props.manageSources.fetchingSources &&
|
|
Packit Service |
0246ed |
prevProps.manageSources.fetchingSources
|
|
Packit Service |
0246ed |
) {
|
|
Packit Service |
0246ed |
this.setState({
|
|
Packit Service |
0246ed |
addEntry: false,
|
|
Packit Service |
0246ed |
url: "",
|
|
Packit Service |
0246ed |
name: "",
|
|
Packit Service |
0246ed |
type: "",
|
|
Packit Service |
0246ed |
check_ssl: false,
|
|
Packit Service |
0246ed |
check_gpg: false,
|
|
Packit Service |
0246ed |
});
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
handleShowForm(e, showForm) {
|
|
Packit Service |
0246ed |
this.setState({ addEntry: showForm });
|
|
Packit Service |
0246ed |
if (showForm) {
|
|
Packit Service |
0246ed |
this.setState({
|
|
Packit Service |
0246ed |
editName: "",
|
|
Packit Service |
0246ed |
});
|
|
Packit Service |
0246ed |
} else {
|
|
Packit Service |
0246ed |
this.props.clearError({});
|
|
Packit Service |
0246ed |
this.setState({
|
|
Packit Service |
0246ed |
url: "",
|
|
Packit Service |
0246ed |
name: "",
|
|
Packit Service |
0246ed |
type: "",
|
|
Packit Service |
0246ed |
check_ssl: false,
|
|
Packit Service |
0246ed |
check_gpg: false,
|
|
Packit Service |
0246ed |
warningDuplicateName: false,
|
|
Packit Service |
0246ed |
warningDuplicateUrl: false,
|
|
Packit Service |
0246ed |
});
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
handleChange(e, input) {
|
|
Packit Service |
0246ed |
let value;
|
|
Packit Service |
0246ed |
if (input === "check_ssl" || input === "check_gpg") {
|
|
Packit Service |
0246ed |
value = e.target.checked;
|
|
Packit Service |
0246ed |
} else {
|
|
Packit Service |
0246ed |
value = e.target.value.trim();
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
if (input === "name") {
|
|
Packit Service |
0246ed |
this.handleValidateName(value);
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
if (input === "url") {
|
|
Packit Service |
0246ed |
this.handleValidateUrl(value);
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
this.setState({ [input]: value });
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
handleValidateName(name) {
|
|
Packit Service |
0246ed |
const duplicateName = this.props.manageSources.hasOwnProperty(name);
|
|
Packit Service |
0246ed |
this.setState({ warningDuplicateName: duplicateName });
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
handleValidateUrl(url) {
|
|
Packit Service |
0246ed |
const sourceUrls = Object.values(this.props.manageSources.sources).map((source) => source.url);
|
|
Packit Service |
0246ed |
this.setState({ warningDuplicateUrl: !sourceUrls.every((sourceUrl) => sourceUrl !== url) });
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
handleEditSource(name) {
|
|
Packit Service |
0246ed |
this.setState({
|
|
Packit Service |
0246ed |
addEntry: true,
|
|
Packit Service |
0246ed |
editName: name,
|
|
Packit Service |
0246ed |
name,
|
|
Packit Service |
0246ed |
type: this.props.manageSources.sources[name].type,
|
|
Packit Service |
0246ed |
url: this.props.manageSources.sources[name].url,
|
|
Packit Service |
0246ed |
check_ssl: this.props.manageSources.sources[name].check_ssl,
|
|
Packit Service |
0246ed |
check_gpg: this.props.manageSources.sources[name].check_gpg,
|
|
Packit Service |
0246ed |
});
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
handleSubmitSource() {
|
|
Packit Service |
0246ed |
this.props.clearError({});
|
|
Packit Service |
0246ed |
const source = {
|
|
Packit Service |
0246ed |
name: this.state.name,
|
|
Packit Service |
0246ed |
url: this.state.url,
|
|
Packit Service |
0246ed |
type: this.state.type,
|
|
Packit Service |
0246ed |
check_ssl: this.state.check_ssl,
|
|
Packit Service |
0246ed |
check_gpg: this.state.check_gpg,
|
|
Packit Service |
0246ed |
};
|
|
Packit Service |
0246ed |
this.props.addSource(source);
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
render() {
|
|
Packit Service |
0246ed |
const { formatMessage } = this.props.intl;
|
|
Packit Service |
0246ed |
const { manageSources } = this.props;
|
|
Packit Service |
0246ed |
const systemSources = Object.values(manageSources.sources).filter((source) => source.system === true);
|
|
Packit Service |
0246ed |
const customSources = Object.values(manageSources.sources).filter((source) => source.system !== true);
|
|
Packit Service |
0246ed |
const disabledSubmit =
|
|
Packit Service |
0246ed |
this.state.name === "" ||
|
|
Packit Service |
0246ed |
this.state.url === "" ||
|
|
Packit Service |
0246ed |
this.state.type === "" ||
|
|
Packit Service |
0246ed |
this.state.warningDuplicateName ||
|
|
Packit Service |
0246ed |
this.state.warningDuplicateUrl ||
|
|
Packit Service |
0246ed |
manageSources.fetchingSources;
|
|
Packit Service |
0246ed |
const manageSourcesForm = (
|
|
Packit Service |
0246ed |
<>
|
|
Packit Service |
0246ed |
{Object.keys(manageSources.error).length !== 0 && (
|
|
Packit Service |
0246ed |
<Alert>
|
|
Packit Service |
0246ed |
<FormattedMessage defaultMessage="An error occurred when saving the source. Check that the path is valid and try again." />
|
|
Packit Service |
0246ed |
</Alert>
|
|
Packit Service |
0246ed |
)}
|
|
Packit Service |
0246ed |
<form id="cmpsr-form-add-source" className="form-horizontal form-horizontal-pf-align-left">
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
defaultMessage="The fields marked with {val} are required."
|
|
Packit Service |
0246ed |
values={{
|
|
Packit Service |
0246ed |
val: *,
|
|
Packit Service |
0246ed |
}}
|
|
Packit Service |
0246ed |
/>
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
<label className="col-sm-2 control-label required-pf" htmlFor="textInput1-modal-source">
|
|
Packit Service |
0246ed |
{formatMessage(messages.name)}
|
|
Packit Service |
0246ed |
</label>
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
autoFocus
|
|
Packit Service |
0246ed |
type="text"
|
|
Packit Service |
0246ed |
id="textInput1-modal-source"
|
|
Packit Service |
0246ed |
className="form-control"
|
|
Packit Service |
0246ed |
aria-describedby="textInput1-modal-source-help"
|
|
Packit Service |
0246ed |
aria-required="true"
|
|
Packit Service |
0246ed |
aria-invalid={this.state.warningDuplicateName}
|
|
Packit Service |
0246ed |
readOnly={this.state.editName !== ""}
|
|
Packit Service |
0246ed |
value={this.state.name}
|
|
Packit Service |
0246ed |
onChange={(e) => this.handleChange(e, "name")}
|
|
Packit Service |
0246ed |
/>
|
|
Packit Service |
0246ed |
{this.state.warningDuplicateName && (
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
<FormattedMessage defaultMessage="This source name already exists." />
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
)}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
<label className="col-sm-2 control-label required-pf" htmlFor="textInput2-modal-source">
|
|
Packit Service |
0246ed |
{formatMessage(messages.sourcePath)}
|
|
Packit Service |
0246ed |
</label>
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
type="text"
|
|
Packit Service |
0246ed |
id="textInput2-modal-source"
|
|
Packit Service |
0246ed |
className="form-control"
|
|
Packit Service |
0246ed |
aria-describedby="textInput2-modal-source-help"
|
|
Packit Service |
0246ed |
aria-required="true"
|
|
Packit Service |
0246ed |
aria-invalid={this.state.warningDuplicateUrl}
|
|
Packit Service |
0246ed |
value={this.state.url}
|
|
Packit Service |
0246ed |
onChange={(e) => this.handleChange(e, "url")}
|
|
Packit Service |
0246ed |
/>
|
|
Packit Service |
0246ed |
{this.state.warningDuplicateUrl && (
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
<FormattedMessage defaultMessage="This source path already exists." />
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
)}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
<label className="col-sm-2 control-label required-pf" htmlFor="textInput3-modal-source">
|
|
Packit Service |
0246ed |
{formatMessage(messages.type)}
|
|
Packit Service |
0246ed |
</label>
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
id="textInput3-modal-source"
|
|
Packit Service |
0246ed |
className="form-control"
|
|
Packit Service |
0246ed |
value={this.state.type}
|
|
Packit Service |
0246ed |
aria-required="true"
|
|
Packit Service |
0246ed |
onChange={(e) => this.handleChange(e, "type")}
|
|
Packit Service |
0246ed |
>
|
|
Packit Service |
0246ed |
<option value="" disabled hidden>
|
|
Packit Service |
0246ed |
{formatMessage(messages.selectOne)}
|
|
Packit Service |
0246ed |
</option>
|
|
Packit Service |
0246ed |
<option value="yum-baseurl">{formatMessage(messages.typeRepo)}</option>
|
|
Packit Service |
0246ed |
<option value="yum-mirrorlist">{formatMessage(messages.typeMirrorlist)}</option>
|
|
Packit Service |
0246ed |
<option value="yum-metalink">{formatMessage(messages.typeMetalink)}</option>
|
|
Packit Service |
0246ed |
</select>
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
<label className="col-sm-2 control-label" id="checkboxGroup-modal-source">
|
|
Packit Service |
0246ed |
{formatMessage(messages.security)}
|
|
Packit Service |
0246ed |
</label>
|
|
Packit Service |
0246ed |
<fieldset className="col-sm-10 checkbox" aria-labelledby="checkboxGroup-modal-source">
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
<label htmlFor="checkboxInput4-modal-source">
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
type="checkbox"
|
|
Packit Service |
0246ed |
id="checkboxInput4-modal-source"
|
|
Packit Service |
0246ed |
checked={this.state.check_ssl}
|
|
Packit Service |
0246ed |
onChange={(e) => this.handleChange(e, "check_ssl")}
|
|
Packit Service |
0246ed |
/>
|
|
Packit Service |
0246ed |
{formatMessage(messages.check_ssl)}
|
|
Packit Service |
0246ed |
</label>
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
<label htmlFor="checkboxInput5-modal-source">
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
type="checkbox"
|
|
Packit Service |
0246ed |
id="checkboxInput5-modal-source"
|
|
Packit Service |
0246ed |
checked={this.state.check_gpg}
|
|
Packit Service |
0246ed |
onChange={(e) => this.handleChange(e, "check_gpg")}
|
|
Packit Service |
0246ed |
/>
|
|
Packit Service |
0246ed |
{formatMessage(messages.check_gpg)}
|
|
Packit Service |
0246ed |
</label>
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
</fieldset>
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
</form>
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
);
|
|
Packit Service |
0246ed |
return (
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
show
|
|
Packit Service |
0246ed |
id="cmpsr-modal-manage-sources"
|
|
Packit Service |
0246ed |
onHide={this.props.close}
|
|
Packit Service |
0246ed |
bsSize="large"
|
|
Packit Service |
0246ed |
aria-labelledby="title-manage-sources"
|
|
Packit Service |
0246ed |
>
|
|
Packit Service |
0246ed |
<Modal.Header>
|
|
Packit Service |
0246ed |
<Modal.CloseButton onClick={this.props.close} />
|
|
Packit Service |
0246ed |
<Modal.Title id="title-manage-sources">
|
|
Packit Service |
0246ed |
{(!this.state.addEntry && (
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
defaultMessage="Sources"
|
|
Packit Service |
0246ed |
description="Sources provide the contents from which components are selected"
|
|
Packit Service |
0246ed |
/>
|
|
Packit Service |
0246ed |
)) ||
|
|
Packit Service |
0246ed |
(this.state.editName === "" && <FormattedMessage defaultMessage="Add Source" />) || (
|
|
Packit Service |
0246ed |
<FormattedMessage defaultMessage="Edit Source" />
|
|
Packit Service |
0246ed |
)}
|
|
Packit Service |
0246ed |
</Modal.Title>
|
|
Packit Service |
0246ed |
</Modal.Header>
|
|
Packit Service |
0246ed |
<Modal.Body>
|
|
Packit Service |
0246ed |
{(Object.keys(manageSources.sources).length === 0 && (
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
title={formatMessage(messages.errorStateTitle)}
|
|
Packit Service |
0246ed |
message={formatMessage(messages.errorStateMessage)}
|
|
Packit Service |
0246ed |
/>
|
|
Packit Service |
0246ed |
)) || (
|
|
Packit Service |
0246ed |
<>
|
|
Packit Service |
0246ed |
{(!this.state.addEntry && (
|
|
Packit Service |
0246ed |
<>
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
type="button"
|
|
Packit Service |
0246ed |
autoFocus={this.state.editName === ""}
|
|
Packit Service |
0246ed |
className="btn btn-primary pull-right"
|
|
Packit Service |
0246ed |
onClick={(e) => this.handleShowForm(e, true)}
|
|
Packit Service |
0246ed |
value={formatMessage(messages.add)}
|
|
Packit Service |
0246ed |
/>
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
{systemSources.map((source) => (
|
|
Packit Service |
0246ed |
<SourcesListItem source={source} key={source.name} />
|
|
Packit Service |
0246ed |
))}
|
|
Packit Service |
0246ed |
{customSources.length > 0 &&
|
|
Packit Service |
0246ed |
customSources.map((source) => (
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
source={source}
|
|
Packit Service |
0246ed |
key={source.name}
|
|
Packit Service |
0246ed |
edited={this.state.editName}
|
|
Packit Service |
0246ed |
fetching={manageSources.fetchingSources}
|
|
Packit Service |
0246ed |
edit={this.handleEditSource}
|
|
Packit Service |
0246ed |
remove={this.props.removeSource}
|
|
Packit Service |
0246ed |
/>
|
|
Packit Service |
0246ed |
))}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
)) ||
|
|
Packit Service |
0246ed |
manageSourcesForm}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
)}
|
|
Packit Service |
0246ed |
</Modal.Body>
|
|
Packit Service |
0246ed |
<Modal.Footer>
|
|
Packit Service |
0246ed |
{(!this.state.addEntry && (
|
|
Packit Service |
0246ed |
<button type="button" className="btn btn-default" onClick={this.props.close}>
|
|
Packit Service |
0246ed |
<FormattedMessage defaultMessage="Close" />
|
|
Packit Service |
0246ed |
</button>
|
|
Packit Service |
0246ed |
)) || (
|
|
Packit Service |
0246ed |
<>
|
|
Packit Service |
0246ed |
{manageSources.fetchingSources && (
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
<Spinner loading size="xs" inline />
|
|
Packit Service |
0246ed |
<FormattedMessage defaultMessage="Saving source" />
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
)}
|
|
Packit Service |
0246ed |
<button type="button" className="btn btn-default" onClick={(e) => this.handleShowForm(e, false)}>
|
|
Packit Service |
0246ed |
{formatMessage(messages.cancel)}
|
|
Packit Service |
0246ed |
</button>
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
type="submit"
|
|
Packit Service |
0246ed |
className="btn btn-primary"
|
|
Packit Service |
0246ed |
form="cmpsr-form-add-source"
|
|
Packit Service |
0246ed |
disabled={disabledSubmit}
|
|
Packit Service |
0246ed |
onClick={() => this.handleSubmitSource()}
|
|
Packit Service |
0246ed |
>
|
|
Packit Service |
0246ed |
{(this.state.editName === "" && formatMessage(messages.save)) || formatMessage(messages.update)}
|
|
Packit Service |
0246ed |
</button>
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
)}
|
|
Packit Service |
0246ed |
</Modal.Footer>
|
|
Packit Service |
0246ed |
</Modal>
|
|
Packit Service |
0246ed |
);
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
}
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
ManageSources.propTypes = {
|
|
Packit Service |
0246ed |
manageSources: PropTypes.shape({
|
|
Packit Service |
0246ed |
fetchingSources: PropTypes.bool,
|
|
Packit Service |
0246ed |
sources: PropTypes.objectOf(PropTypes.object),
|
|
Packit Service |
0246ed |
error: PropTypes.object,
|
|
Packit Service |
0246ed |
}),
|
|
Packit Service |
0246ed |
disabled: PropTypes.bool,
|
|
Packit Service |
0246ed |
removeModalManageSourcesEntry: PropTypes.func,
|
|
Packit Service |
0246ed |
addModalManageSourcesEntry: PropTypes.func,
|
|
Packit Service |
0246ed |
modalManageSourcesFailure: PropTypes.func,
|
|
Packit Service |
0246ed |
intl: intlShape.isRequired,
|
|
Packit Service |
0246ed |
};
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
ManageSources.defaultProps = {
|
|
Packit Service |
0246ed |
manageSources: {},
|
|
Packit Service |
0246ed |
disabled: false,
|
|
Packit Service |
0246ed |
removeModalManageSourcesEntry() {},
|
|
Packit Service |
0246ed |
addModalManageSourcesEntry() {},
|
|
Packit Service |
0246ed |
modalManageSourcesFailure() {},
|
|
Packit Service |
0246ed |
};
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
ManageSourcesModal.propTypes = {
|
|
Packit Service |
0246ed |
manageSources: PropTypes.shape({
|
|
Packit Service |
0246ed |
fetchingSources: PropTypes.bool,
|
|
Packit Service |
0246ed |
sources: PropTypes.objectOf(PropTypes.object),
|
|
Packit Service |
0246ed |
error: PropTypes.object,
|
|
Packit Service |
0246ed |
}),
|
|
Packit Service |
0246ed |
removeSource: PropTypes.func,
|
|
Packit Service |
0246ed |
addSource: PropTypes.func,
|
|
Packit Service |
0246ed |
clearError: PropTypes.func,
|
|
Packit Service |
0246ed |
close: PropTypes.func,
|
|
Packit Service |
0246ed |
intl: intlShape.isRequired,
|
|
Packit Service |
0246ed |
};
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
ManageSourcesModal.defaultProps = {
|
|
Packit Service |
0246ed |
manageSources: {},
|
|
Packit Service |
0246ed |
removeSource() {},
|
|
Packit Service |
0246ed |
addSource() {},
|
|
Packit Service |
0246ed |
clearError() {},
|
|
Packit Service |
0246ed |
close() {},
|
|
Packit Service |
0246ed |
};
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
const mapDispatchToProps = (dispatch) => ({
|
|
Packit Service |
0246ed |
addModalManageSourcesEntry: (source) => {
|
|
Packit Service |
0246ed |
dispatch(addModalManageSourcesEntry(source));
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
removeModalManageSourcesEntry: (sourceName) => {
|
|
Packit Service |
0246ed |
dispatch(removeModalManageSourcesEntry(sourceName));
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
modalManageSourcesFailure: (error) => {
|
|
Packit Service |
0246ed |
dispatch(modalManageSourcesFailure(error));
|
|
Packit Service |
0246ed |
},
|
|
Packit Service |
0246ed |
});
|
|
Packit Service |
0246ed |
|
|
Packit Service |
0246ed |
export default connect(null, mapDispatchToProps)(injectIntl(ManageSources));
|