@@ -192,6 +192,11 @@ public static async void CheckUpdateAsync(bool forceUpdate = false)
192192 HttpResponseMessage response = await client . SendAsync ( request ) ;
193193 string res = await response . Content . ReadAsStringAsync ( ) ;
194194
195+ List < string > changelog = new ( ) ;
196+ List < string > warnings = new ( ) ;
197+ bool collectChangelog = false ;
198+ bool showDialog = false ;
199+
195200 JArray ja = JArray . Parse ( res ) ;
196201 foreach ( JObject release in ja )
197202 {
@@ -209,10 +214,9 @@ public static async void CheckUpdateAsync(bool forceUpdate = false)
209214 string rawDesc = ( string ) release [ "body" ] ;
210215 List < string > desc = rawDesc . Split ( "##" ) . ToList ( ) ;
211216
212- List < string > changelog = new ( ) ;
213- List < string > warnings = new ( ) ;
217+ List < string > requiredVersion = new ( ) ;
214218
215- foreach ( string d in desc )
219+ foreach ( string d in desc )
216220 {
217221 List < string > splitDesc = d . Split ( "\r \n " ) . ToList ( ) ;
218222 splitDesc . RemoveAll ( x => string . IsNullOrWhiteSpace ( x ) ) ;
@@ -225,20 +229,24 @@ public static async void CheckUpdateAsync(bool forceUpdate = false)
225229
226230 if ( splitDesc . Count < 2 ) continue ;
227231
228- if ( splitDesc [ 0 ] . Contains ( "Changelog" ) ) changelog = splitDesc . GetRange ( 1 , splitDesc . Count - 1 ) . ToList ( ) ;
229- if ( splitDesc [ 0 ] . Contains ( "Warning" ) ) warnings = splitDesc . GetRange ( 1 , splitDesc . Count - 1 ) . ToList ( ) ;
232+ if ( splitDesc [ 0 ] . Contains ( "Changelog" ) ) changelog . AddRange ( splitDesc . GetRange ( 1 , splitDesc . Count - 1 ) . ToList ( ) ) ;
233+ if ( splitDesc [ 0 ] . Contains ( "Warning" ) ) warnings . AddRange ( splitDesc . GetRange ( 1 , splitDesc . Count - 1 ) . ToList ( ) ) ;
234+ if ( splitDesc [ 0 ] . Contains ( "Required Version" ) ) requiredVersion = splitDesc . GetRange ( 1 , splitDesc . Count - 1 ) . ToList ( ) ;
230235 }
231236
232- if ( ( bool ) release [ "prerelease" ] ) warnings . Add ( "This release is a pre-release" ) ;
237+ if ( ! requiredVersion . Contains ( Constants . Version ) && ! collectChangelog ) continue ;
233238
234- UpdateAvailablePopupViewModel UpdateAvailablePopup = ( UpdateAvailablePopupViewModel ) ViewModelManager . ViewModels [ "UpdateAvailablePopup" ] ;
235- MainViewModel MainVM = ( MainViewModel ) ViewModelManager . ViewModels [ "Main" ] ;
239+ if ( ( bool ) release [ "prerelease" ] && ! collectChangelog ) warnings . Add ( "This release is a pre-release" ) ;
240+ collectChangelog = true ;
241+ showDialog = true ;
242+ }
236243
237- UpdateAvailablePopup . SetData ( changelog , warnings ) ;
238- MainVM . QueuePopup ( UpdateAvailablePopup ) ;
244+ if ( ! showDialog ) return ;
245+ UpdateAvailablePopupViewModel UpdateAvailablePopup = ( UpdateAvailablePopupViewModel ) ViewModelManager . ViewModels [ "UpdateAvailablePopup" ] ;
246+ MainViewModel MainVM = ( MainViewModel ) ViewModelManager . ViewModels [ "Main" ] ;
239247
240- break ;
241- }
248+ UpdateAvailablePopup . SetData ( changelog , warnings , latestVersionTag ) ;
249+ MainVM . QueuePopup ( UpdateAvailablePopup ) ;
242250 }
243251
244252 public static async void GetUpdate ( )
0 commit comments