New: Sort preferred words in profile on save

Closes #3241
This commit is contained in:
Mark McDowall 2019-08-15 23:23:36 -07:00
parent 34e0eea173
commit 07d553fae3
3 changed files with 21 additions and 16 deletions

View File

@ -9,10 +9,6 @@ import ConfirmModal from 'Components/Modal/ConfirmModal';
import EditReleaseProfileModalConnector from './EditReleaseProfileModalConnector';
import styles from './ReleaseProfile.css';
function sortPreferred(preferred) {
return preferred.slice().sort((a, b) => b.value - a.value);
}
class ReleaseProfile extends Component {
//
@ -22,20 +18,11 @@ class ReleaseProfile extends Component {
super(props, context);
this.state = {
sortedPreferred: sortPreferred(props.preferred),
isEditReleaseProfileModalOpen: false,
isDeleteReleaseProfileModalOpen: false
};
}
componentDidUpdate(prevProps) {
const { preferred } = this.props;
if (prevProps.preferred !== preferred) {
this.setState({ sortedPreferred: sortPreferred(preferred) });
}
}
//
// Listeners
@ -70,12 +57,12 @@ class ReleaseProfile extends Component {
id,
required,
ignored,
preferred,
tags,
tagList
} = this.props;
const {
sortedPreferred,
isEditReleaseProfileModalOpen,
isDeleteReleaseProfileModalOpen
} = this.state;
@ -126,7 +113,7 @@ class ReleaseProfile extends Component {
<div>
{
sortedPreferred.map((item) => {
preferred.map((item) => {
const isPreferred = item.value >= 0;
return (

View File

@ -18,4 +18,12 @@ namespace NzbDrone.Core.Profiles.Releases
Tags = new HashSet<int>();
}
}
public class ReleaseProfilePreferredComparer : IComparer<KeyValuePair<string, int>>
{
public int Compare(KeyValuePair<string, int> x, KeyValuePair<string, int> y)
{
return y.Value.CompareTo(x.Value);
}
}
}

View File

@ -18,18 +18,24 @@ namespace NzbDrone.Core.Profiles.Releases
public class ReleaseProfileService : IReleaseProfileService
{
private readonly ReleaseProfilePreferredComparer _preferredComparer;
private readonly IRestrictionRepository _repo;
private readonly Logger _logger;
public ReleaseProfileService(IRestrictionRepository repo, Logger logger)
{
_preferredComparer = new ReleaseProfilePreferredComparer();
_repo = repo;
_logger = logger;
}
public List<ReleaseProfile> All()
{
return _repo.All().ToList();
var all = _repo.All().ToList();
all.ForEach(r => r.Preferred.Sort(_preferredComparer));
return all;
}
public List<ReleaseProfile> AllForTag(int tagId)
@ -54,11 +60,15 @@ namespace NzbDrone.Core.Profiles.Releases
public ReleaseProfile Add(ReleaseProfile restriction)
{
restriction.Preferred.Sort(_preferredComparer);
return _repo.Insert(restriction);
}
public ReleaseProfile Update(ReleaseProfile restriction)
{
restriction.Preferred.Sort(_preferredComparer);
return _repo.Update(restriction);
}
}