diff options
author | Martino Facchin <m.facchin@arduino.cc> | 2020-12-22 13:56:52 +0300 |
---|---|---|
committer | Cristian Maglie <c.maglie@arduino.cc> | 2021-05-11 15:31:21 +0300 |
commit | cec4f41dd7c588c5dd6279e82d58d5625a88b380 (patch) | |
tree | da06dd2fc05f9269bdfd14cfd783d240e8aa431f | |
parent | 96bd671c6e740d38488349ed0cbb512bb50b22dd (diff) |
Board Manager: searching returns also near matches
The original filter would only populate the contribution list with perfect matches.
Previously, if a core was installed but didn't match the search it wouldn't appear in the results (due to a board being added or the description changed);
the user could then install (not upgrade) the core, triggering a confusing situation.
When moving to arduino-cli backend we should take care of this issue, at least visually (the cli logic would correctly update/downgrade the core)
-rw-r--r-- | app/src/cc/arduino/contributions/packages/ui/ContributedPlatformReleases.java | 6 | ||||
-rw-r--r-- | app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java | 18 |
2 files changed, 22 insertions, 2 deletions
diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformReleases.java b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformReleases.java index fc516512d..2cdeb5c27 100644 --- a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformReleases.java +++ b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformReleases.java @@ -61,6 +61,12 @@ public class ContributedPlatformReleases { return platform.getArchitecture().equals(arch); } + public boolean contains(ContributedPlatform platform) { + return (platform.getParentPackage().equals(packager) + && platform.getArchitecture().equals(arch) + && versions.contains(platform.getParsedVersion())); + } + public void add(ContributedPlatform platform) { releases.add(platform); String version = platform.getParsedVersion(); diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java b/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java index f7dbd95d7..4a9b89bb3 100644 --- a/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java +++ b/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java @@ -66,11 +66,21 @@ public class ContributionIndexTableModel + platform.getBoards().stream() .map(ContributedBoard::getName) .collect(Collectors.joining(" ")); + + // Add all the versions of the same core, even if there's no match + for (ContributedPlatformReleases contribution : contributions) { + if (contribution.shouldContain(platform)) { + addContribution(platform); + continue; + } + } + if (!filter.test(platform)) { continue; } if (!stringContainsAll(compoundTargetSearchText, filters)) continue; + addContribution(platform); } } @@ -110,12 +120,16 @@ public class ContributionIndexTableModel private void addContribution(ContributedPlatform platform) { for (ContributedPlatformReleases contribution : contributions) { - if (!contribution.shouldContain(platform)) + if (!contribution.shouldContain(platform)) { continue; + } + if (contribution.contains(platform)) { + // no duplicates + return; + } contribution.add(platform); return; } - contributions.add(new ContributedPlatformReleases(platform)); } |