@@ -103,7 +103,12 @@ public async Task<ModDownload> GetGitHubReleases(ModInfo mod, string modsFolder,
103103
104104 GitHubRelease latestRelease = null ;
105105 GitHubAsset latestAsset = null ;
106+ DateTime latestAssetUploaded = DateTime . MinValue ;
106107
108+ bool foundAsset = false ;
109+
110+ // The loop finds the latest release (based on date) out of the releases
111+ // that are newer than the version stored in mod.version.
107112 foreach ( GitHubRelease release in releases )
108113 {
109114 GitHubAsset asset = release . Assets
@@ -114,24 +119,28 @@ public async Task<ModDownload> GetGitHubReleases(ModInfo mod, string modsFolder,
114119 continue ;
115120 }
116121
117- latestRelease = release ;
122+ foundAsset = true ;
123+
124+ DateTime uploaded = DateTime . Parse ( asset . Uploaded , CultureInfo . InvariantCulture , DateTimeStyles . AssumeLocal ) ;
118125
119126 if ( ! ForceUpdate && localVersion . HasValue )
120127 {
121- DateTime uploaded = DateTime . Parse ( asset . Uploaded , CultureInfo . InvariantCulture , DateTimeStyles . AssumeLocal ) ;
122-
123128 if ( localVersion >= uploaded )
124129 {
125- // No updates available .
126- break ;
130+ // Skip this release since it's older than our current version .
131+ continue ;
127132 }
128133 }
129134
130- latestAsset = asset ;
131- break ;
135+ if ( uploaded > latestAssetUploaded )
136+ {
137+ latestRelease = release ;
138+ latestAsset = asset ;
139+ latestAssetUploaded = uploaded ;
140+ }
132141 }
133142
134- if ( latestRelease == null )
143+ if ( ! foundAsset )
135144 {
136145 errors . Add ( $ "[{ mod . Name } ] No releases with matching asset \" { mod . GitHubAsset } \" could be found in { releases . Count } release(s).") ;
137146 return null ;
0 commit comments