private void CheckUpdates(ChocoUpdater updater) { Task.Run(async() => { if (await updater.IsNewVersionAvailable()) { var mySettings = new MetroDialogSettings() { DefaultButtonFocus = MessageDialogResult.Affirmative, AffirmativeButtonText = "Update", NegativeButtonText = "Do not update", FirstAuxiliaryButtonText = "Cancel" }; var result = await _dialogCoordinator.ShowMessageAsync(this, "Newer version was detected!", "Do you want to update dependency-scanner?", MessageDialogStyle.AffirmativeAndNegativeAndSingleAuxiliary, mySettings); if (result == MessageDialogResult.Affirmative) { updater.Update(); await DispatcherHelper.RunAsync(() => { Application.Current.Shutdown(); }).Task; } } }); }
public MainViewModel(IEnumerable <IPlugin> plugins, ObservableProgress progress, EventSink eventSink, MainSettings settings, CommandManagerSettings commandSettings, string logPath, IDialogCoordinator dialogCoordinator, ChocoUpdater chocoUpdater) { _dialogCoordinator = dialogCoordinator; CommandSettings = commandSettings; #if DEBUG CheckUpdates(chocoUpdater); #endif Plugins = plugins.OrderBy(a => a.Order); Settings = settings; // build settings list SettingsList = new List <SettingsViewModel>() { new SettingsViewModel("View settings", new MainSettingsView { DataContext = settings }) } .Concat(ReadSettings(Plugins)); Progress = progress; LogPath = logPath; // subscribe to errors from serilog eventSink.NotifyEvent += (s, e) => { Notification = e; }; foreach (var plugin in Plugins) { plugin.OnStarted(); } Services.CommandManager.Settings = commandSettings; }