Possible fix for #326 (#363)

This commit is contained in:
tastybento 2024-10-23 20:46:30 -07:00 committed by GitHub
parent 2843a8e3ed
commit 17dc22ed66
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -113,32 +113,36 @@ public class ChallengesManager
* This comparator orders challenges by their level, order and name. * This comparator orders challenges by their level, order and name.
*/ */
private final Comparator<Challenge> challengeComparator = (o1, o2) -> { private final Comparator<Challenge> challengeComparator = (o1, o2) -> {
// Get the levels
ChallengeLevel o1Level = this.getLevel(o1.getLevel()); ChallengeLevel o1Level = this.getLevel(o1.getLevel());
ChallengeLevel o2Level = this.getLevel(o2.getLevel()); ChallengeLevel o2Level = this.getLevel(o2.getLevel());
if (o1Level == null && o2Level == null) // Handle null levels consistently
{ if (o1Level == null && o2Level == null) {
// Both levels are null, compare by order
return Integer.compare(o1.getOrder(), o2.getOrder()); return Integer.compare(o1.getOrder(), o2.getOrder());
} } else if (o1Level == null) {
else if (o1Level == null) // If o1 level is null, it should be ordered lower
{
return -1; return -1;
} } else if (o2Level == null) {
else if (o2Level == null) // If o2 level is null, it should be ordered lower
{
return 1; return 1;
} }
else if (o1Level.equals(o2Level))
{ // If both levels are non-null, compare their orders
int levelComparison = Integer.compare(o1Level.getOrder(), o2Level.getOrder());
// If levels are the same, compare by challenge order
if (levelComparison == 0) {
return Integer.compare(o1.getOrder(), o2.getOrder()); return Integer.compare(o1.getOrder(), o2.getOrder());
} }
else
{ // Return the level comparison result
return Integer.compare(o1Level.getOrder(), o2Level.getOrder()); return levelComparison;
}
}; };
// --------------------------------------------------------------------- // ---------------------------------------------------------------------
// Section: Constructor // Section: Constructor
// --------------------------------------------------------------------- // ---------------------------------------------------------------------