import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { ListView } from 'patternfly-react';
import { sprintf, translate as __ } from 'foremanReact/common/I18n';
import RepositoryTypeIcon from '../RepositoryTypeIcon';
import EnabledRepositoryContent from './EnabledRepositoryContent';
class EnabledRepository extends Component {
constructor(props) {
super(props);
this.disableTooltipId = `disable-${props.id}`;
}
setDisabled = () => {
this.props.setRepositoryDisabled(this.repoForAction());
};
repoForAction = () => {
const {
id, productId, contentId, arch, releasever, name, type,
} = this.props;
return {
id,
contentId,
productId,
name,
type,
arch,
releasever,
};
};
reload = () => (
this.props.loadEnabledRepos({
...this.props.pagination,
search: this.props.search,
}, true)
);
notifyDisabled = () => {
window.tfm.toastNotifications.notify({
message: sprintf(__("Repository '%(repoName)s' has been disabled."), { repoName: this.props.name }),
type: 'success',
});
};
reloadAndNotify = async (result) => {
if (result && result.success) {
await this.reload();
await this.setDisabled();
await this.notifyDisabled();
}
};
disableRepository = async () => {
const result = await this.props.disableRepository(this.repoForAction());
this.reloadAndNotify(result);
};
render() {
const {
name, id, type, orphaned, label, canDisable,
} = this.props;
return (
}
leftContent={}
heading={`${name} ${orphaned ? __('(Orphaned)') : ''}`}
description={label}
stacked
/>
);
}
}
EnabledRepository.propTypes = {
id: PropTypes.number.isRequired,
contentId: PropTypes.number.isRequired,
productId: PropTypes.number.isRequired,
label: PropTypes.string.isRequired,
name: PropTypes.string.isRequired,
type: PropTypes.string.isRequired,
arch: PropTypes.string.isRequired,
search: PropTypes.shape({
query: PropTypes.string,
searchList: PropTypes.string,
// Disabling rule as existing code failed due to an eslint-plugin-react update
// eslint-disable-next-line react/forbid-prop-types
filters: PropTypes.array,
}),
pagination: PropTypes.shape({
page: PropTypes.number,
perPage: PropTypes.number,
}).isRequired,
loading: PropTypes.bool,
releasever: PropTypes.string,
orphaned: PropTypes.bool,
canDisable: PropTypes.bool,
setRepositoryDisabled: PropTypes.func.isRequired,
loadEnabledRepos: PropTypes.func.isRequired,
disableRepository: PropTypes.func.isRequired,
};
EnabledRepository.defaultProps = {
releasever: '',
orphaned: false,
search: {},
loading: false,
canDisable: true,
};
export default EnabledRepository;