From f4f8a1bd6980d5d915bef90485dd30d0a045bda3 Mon Sep 17 00:00:00 2001 From: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com> Date: Fri, 18 Mar 2022 10:26:29 +0100 Subject: [PATCH] Fix Checking for Updates - running indefinitely (#17084) --- .../ViewModels/GeneralViewModel.cs | 72 ++++++++++--------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/src/settings-ui/Settings.UI.Library/ViewModels/GeneralViewModel.cs b/src/settings-ui/Settings.UI.Library/ViewModels/GeneralViewModel.cs index 1d95c375d7..f5e9e704ac 100644 --- a/src/settings-ui/Settings.UI.Library/ViewModels/GeneralViewModel.cs +++ b/src/settings-ui/Settings.UI.Library/ViewModels/GeneralViewModel.cs @@ -465,42 +465,46 @@ namespace Microsoft.PowerToys.Settings.UI.Library.ViewModels public void RefreshUpdatingState() { - var config = UpdatingSettings.LoadSettings(); - - // Retry loading if failed - for (int i = 0; i < 3 && config == null; i++) + object oLock = new object(); + lock (oLock) { - System.Threading.Thread.Sleep(100); - config = UpdatingSettings.LoadSettings(); + var config = UpdatingSettings.LoadSettings(); + + // Retry loading if failed + for (int i = 0; i < 3 && config == null; i++) + { + System.Threading.Thread.Sleep(100); + config = UpdatingSettings.LoadSettings(); + } + + if (config == null) + { + return; + } + + UpdatingSettingsConfig = config; + + if (PowerToysUpdatingState != config.State) + { + IsNewVersionDownloading = false; + } + else + { + bool dateChanged = UpdateCheckedDate == UpdatingSettingsConfig.LastCheckedDateLocalized; + bool fileDownloaded = string.IsNullOrEmpty(UpdatingSettingsConfig.DownloadedInstallerFilename); + IsNewVersionDownloading = !(dateChanged || fileDownloaded); + } + + PowerToysUpdatingState = UpdatingSettingsConfig.State; + PowerToysNewAvailableVersion = UpdatingSettingsConfig.NewVersion; + PowerToysNewAvailableVersionLink = UpdatingSettingsConfig.ReleasePageLink; + UpdateCheckedDate = UpdatingSettingsConfig.LastCheckedDateLocalized; + + _isNewVersionChecked = PowerToysUpdatingState == UpdatingSettings.UpdatingState.UpToDate && !IsNewVersionDownloading; + NotifyPropertyChanged(nameof(IsNewVersionCheckedAndUpToDate)); + + NotifyPropertyChanged(nameof(IsDownloadAllowed)); } - - if (config == null || config.ToJsonString() == UpdatingSettingsConfig.ToJsonString()) - { - return; - } - - UpdatingSettingsConfig = config; - - if (PowerToysUpdatingState != config.State) - { - IsNewVersionDownloading = false; - } - else - { - bool dateChanged = UpdateCheckedDate == UpdatingSettingsConfig.LastCheckedDateLocalized; - bool fileDownloaded = string.IsNullOrEmpty(UpdatingSettingsConfig.DownloadedInstallerFilename); - IsNewVersionDownloading = !(dateChanged || fileDownloaded); - } - - PowerToysUpdatingState = UpdatingSettingsConfig.State; - PowerToysNewAvailableVersion = UpdatingSettingsConfig.NewVersion; - PowerToysNewAvailableVersionLink = UpdatingSettingsConfig.ReleasePageLink; - UpdateCheckedDate = UpdatingSettingsConfig.LastCheckedDateLocalized; - - _isNewVersionChecked = PowerToysUpdatingState == UpdatingSettings.UpdatingState.UpToDate && !IsNewVersionDownloading; - NotifyPropertyChanged(nameof(IsNewVersionCheckedAndUpToDate)); - - NotifyPropertyChanged(nameof(IsDownloadAllowed)); } } }