Skip to content

Commit

Permalink
Merge pull request #607 from RichardLake/#602
Browse files Browse the repository at this point in the history
Fixes: Gui shows non-updateable mods as having a update #602
  • Loading branch information
pjf committed Dec 17, 2014
2 parents 7ac407d + bc26535 commit 9884dc1
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 11 deletions.
14 changes: 12 additions & 2 deletions CKAN/CKAN/Registry/Registry.cs
Original file line number Diff line number Diff line change
Expand Up @@ -779,9 +779,19 @@ public bool IsAutodetected(string identifier)
return IsInstalled(identifier) && InstalledVersion(identifier).ToString().Equals("autodetected dll");
}

public bool HasUpdate(string identifier)
public bool HasUpdate(string identifier, KSPVersion version)
{
return IsInstalled(identifier) && LatestAvailable(identifier).version.IsGreaterThan(InstalledVersion(identifier));
CkanModule newestVersion;
try
{
newestVersion = LatestAvailable(identifier, version);
}
catch (ModuleNotFoundKraken)
{
return false;
}
if (newestVersion == null) return false;
return IsInstalled(identifier) && newestVersion.version.IsGreaterThan(InstalledVersion(identifier));
}

/// <summary>
Expand Down
8 changes: 4 additions & 4 deletions CKAN/GUI/GUIMod.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,20 @@ public class GUIMod
public bool IsUpgradeChecked { get; set; }


public GUIMod(CkanModule mod, Registry registry, KSPVersion ksp_version)
public GUIMod(CkanModule mod, Registry registry, KSPVersion current_ksp_version)
{
//Currently anything which could alter these causes a full reload of the modlist
// If this is ever changed these could be moved into the properties
Mod = mod;
IsInstalled = registry.IsInstalled(mod.identifier);
IsInstallChecked = IsInstalled;
HasUpdate = registry.HasUpdate(mod.identifier);
IsIncompatible = !mod.IsCompatibleKSP(ksp_version);
HasUpdate = registry.HasUpdate(mod.identifier, current_ksp_version);
IsIncompatible = !mod.IsCompatibleKSP(current_ksp_version);
IsAutodetected = registry.IsAutodetected(mod.identifier);
Authors = mod.author == null ? "N/A" : String.Join(",", mod.author);

var installedVersion = registry.InstalledVersion(mod.identifier);
var latestVersion = mod.version;
var latestVersion = registry.LatestAvailable(mod.identifier);
var kspVersion = mod.ksp_version;

InstalledVersion = installedVersion != null ? installedVersion.ToString() : "-";
Expand Down
9 changes: 4 additions & 5 deletions CKAN/Tests/GUI/GUIMod.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,14 @@ public void HasUpdateReturnsTrueWhenUpdateAvailible()

CKAN.KSPManager manager = new CKAN.KSPManager(new NullUser()) { _CurrentInstance = tidy.KSP };
var generatror = new RandomModuleGenerator(new Random(0451));
var oldVersion = generatror.GeneratorRandomModule(version: new CKAN.Version("0.24"));
var newVersion = generatror.GeneratorRandomModule(version: new CKAN.Version("0.25"),
var oldVersion = generatror.GeneratorRandomModule(version: new CKAN.Version("0.24"), kspVersion: tidy.KSP.Version());
var newVersion = generatror.GeneratorRandomModule(version: new CKAN.Version("0.25"), kspVersion: tidy.KSP.Version(),
identifier:oldVersion.identifier);
var registry = CKAN.Registry.Empty();
registry.RegisterModule(oldVersion, Enumerable.Empty<string>(), null);
registry.AddAvailable(newVersion);


var mod = new GUIMod(oldVersion, registry, manager.CurrentInstance.Version());

var mod = new GUIMod(oldVersion, registry, tidy.KSP.Version());
Assert.True(mod.HasUpdate);
}
}
Expand Down

0 comments on commit 9884dc1

Please sign in to comment.