diff --git a/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndex.java b/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndex.java index ca94f0f68..df16db50d 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndex.java +++ b/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndex.java @@ -30,6 +30,7 @@ package cc.arduino.contributions.libraries; import cc.arduino.contributions.DownloadableContributionBuiltInAtTheBottomComparator; +import cc.arduino.contributions.VersionComparator; import cc.arduino.contributions.libraries.filters.LibraryWithNamePredicate; import java.util.*; @@ -91,13 +92,14 @@ public abstract class LibrariesIndex { } public Optional getInstalled(String name) { - List installedReleases = find(name).stream().filter(l -> l.isLibraryInstalled()).collect(Collectors.toList()); - Collections.sort(installedReleases, new DownloadableContributionBuiltInAtTheBottomComparator()); - - if (installedReleases.isEmpty()) { - return Optional.empty(); - } - - return Optional.of(installedReleases.get(0)); + return find(name).stream() // + .filter(l -> l.isLibraryInstalled()) // + .reduce((x, y) -> { + if (x.isIDEBuiltIn() == y.isIDEBuiltIn()) { + return VersionComparator.max(x, y); + } else { + return x.isIDEBuiltIn() ? y : x; + } + }); } }