@@ -253,6 +253,23 @@ fn show_error_message(hwnd: HWND, title: &str, message: &str) {
253253 }
254254}
255255
256+ fn show_update_prompt ( hwnd : HWND , strings : Strings , release : & ReleaseDescriptor ) -> bool {
257+ let message = strings
258+ . update_prompt_now
259+ . replace ( "{version}" , & release. latest_version ) ;
260+
261+ unsafe {
262+ let title_wide = native_interop:: wide_str ( strings. update_available ) ;
263+ let message_wide = native_interop:: wide_str ( & message) ;
264+ MessageBoxW (
265+ hwnd,
266+ PCWSTR :: from_raw ( message_wide. as_ptr ( ) ) ,
267+ PCWSTR :: from_raw ( title_wide. as_ptr ( ) ) ,
268+ MB_YESNO | MB_ICONQUESTION ,
269+ ) == IDYES
270+ }
271+ }
272+
256273fn apply_language_to_state ( state : & mut AppState , language_override : Option < LanguageId > ) {
257274 state. language_override = language_override;
258275 state. language = localization:: resolve_language ( language_override) ;
@@ -347,9 +364,12 @@ fn begin_update_check(hwnd: HWND) {
347364 {
348365 let mut state = lock_state ( ) ;
349366 if let Some ( s) = state. as_mut ( ) {
350- s. update_status = UpdateStatus :: Available ( release) ;
367+ s. update_status = UpdateStatus :: Available ( release. clone ( ) ) ;
351368 }
352369 }
370+ if show_update_prompt ( hwnd, strings, & release) {
371+ begin_update_apply ( hwnd, release) ;
372+ }
353373 unsafe {
354374 let _ = PostMessageW ( hwnd, WM_APP_UPDATE_CHECK_COMPLETE , WPARAM ( 0 ) , LPARAM ( 0 ) ) ;
355375 }
0 commit comments