Fix duplicates issue with local version cache

feature/lookup-installed
trivernis 1 year ago
parent 97a6ee5a60
commit 0e47ee75e7
Signed by: Trivernis
GPG Key ID: DFFFCC2C7A02DB45

@ -17,6 +17,7 @@ pub struct InstalledVersions {
impl InstalledVersions { impl InstalledVersions {
pub fn new(mut versions: Vec<(SimpleVersion, VersionMetadata)>) -> Self { pub fn new(mut versions: Vec<(SimpleVersion, VersionMetadata)>) -> Self {
versions.sort_by_key(|e| e.0); versions.sort_by_key(|e| e.0);
versions.dedup_by_key(|e| e.0);
Self { Self {
ordered_versions: versions, ordered_versions: versions,
} }
@ -53,6 +54,7 @@ impl InstalledVersions {
pub fn insert(&mut self, version: (SimpleVersion, VersionMetadata)) { pub fn insert(&mut self, version: (SimpleVersion, VersionMetadata)) {
self.ordered_versions.push(version); self.ordered_versions.push(version);
self.ordered_versions.sort_by_key(|e| e.0); self.ordered_versions.sort_by_key(|e| e.0);
self.ordered_versions.dedup_by_key(|e| e.0);
} }
/// Removes a version. This keeps the order intact /// Removes a version. This keeps the order intact

@ -104,9 +104,14 @@ impl Repository {
let installed_versions = match InstalledVersions::load() { let installed_versions = match InstalledVersions::load() {
Ok(v) => v, Ok(v) => v,
Err(_) => load_installed_versions_info(downloader.versions().await?) Err(_) => {
.await? let installed: InstalledVersions =
.into(), load_installed_versions_info(downloader.versions().await?)
.await?
.into();
installed.save()?;
installed
}
}; };
Ok(Self { Ok(Self {

Loading…
Cancel
Save