summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/release-notes.md1
-rw-r--r--src/SMAPI.Web/Framework/ModRepositories/GitHubRepository.cs16
2 files changed, 11 insertions, 6 deletions
diff --git a/docs/release-notes.md b/docs/release-notes.md
index b380f11d..118cc441 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -13,6 +13,7 @@
* Fixed install error on Linux/Mac in some cases.
* Fixed `smapi.io/install` not linking to a useful page.
* Fixed `world_setseason` command not running season-change logic.
+ * Fixed mod update checks failing if a mod only has prerelease versions on GitHub.
* Renamed `install.exe` to `install on Windows.exe` to avoid confusion.
* For modders:
diff --git a/src/SMAPI.Web/Framework/ModRepositories/GitHubRepository.cs b/src/SMAPI.Web/Framework/ModRepositories/GitHubRepository.cs
index b12b24e2..f4abd379 100644
--- a/src/SMAPI.Web/Framework/ModRepositories/GitHubRepository.cs
+++ b/src/SMAPI.Web/Framework/ModRepositories/GitHubRepository.cs
@@ -38,21 +38,25 @@ namespace StardewModdingAPI.Web.Framework.ModRepositories
// fetch info
try
{
- // get latest release
+ // get latest release (whether preview or stable)
GitRelease latest = await this.Client.GetLatestReleaseAsync(id, includePrerelease: true);
- GitRelease preview = null;
if (latest == null)
return new ModInfoModel("Found no mod with this ID.");
- // get latest stable release (if not latest)
+ // split stable/prerelease if applicable
+ GitRelease preview = null;
if (latest.IsPrerelease)
{
- preview = latest;
- latest = await this.Client.GetLatestReleaseAsync(id, includePrerelease: false);
+ GitRelease result = await this.Client.GetLatestReleaseAsync(id, includePrerelease: false);
+ if (result != null)
+ {
+ preview = latest;
+ latest = result;
+ }
}
// return data
- return new ModInfoModel(name: id, version: this.NormaliseVersion(latest?.Tag), previewVersion: this.NormaliseVersion(preview?.Tag), url: $"https://github.com/{id}/releases");
+ return new ModInfoModel(name: id, version: this.NormaliseVersion(latest.Tag), previewVersion: this.NormaliseVersion(preview?.Tag), url: $"https://github.com/{id}/releases");
}
catch (Exception ex)
{