protected override async Task OkAsync() { if (InstalledPackages.Count > 0) { await InstalledPackages.Select(p => NugetHelper.EnsurePackageInstalled(p.Name, NuGetVersion.Parse(p.Version))) .WhenAll() .ConfigureAwait(false) ; } await base.OkAsync(); }
public void CheckUpdates() { Task.Run(async() => { Dictionary <int, int> pkgsToUpdate = new Dictionary <int, int>(); List <int> packagesId = InstalledPackages.Select(x => x.PackageId).ToList(); Dictionary <int, int> serverVersions = await WebWrapper.GetVersions(packagesId); if (serverVersions.Count == 0) { return; } foreach (Package package in InstalledPackages) { if (serverVersions.ContainsKey(package.PackageId) && package.Version < serverVersions[package.PackageId]) { Task <ContentDialogResult> t = null; MainWindow.Dispatcher.Invoke(() => { MainWindow.ContentDialog.Title = "Newer package found!"; MainWindow.ContentDialog.Content = string.Format("Newer version of following package was found on server:\n{0}\nDo you want to update it?", package.DisplayName); MainWindow.ContentDialog.PrimaryButtonText = "Yes, update"; MainWindow.ContentDialog.SecondaryButtonText = "No, keep local"; MainWindow.ContentDialog.Owner = MainWindow; t = MainWindow.ContentDialog.ShowAsync(); }); ContentDialogResult result = await t; if (result == ContentDialogResult.Primary) { pkgsToUpdate[package.PackageId] = serverVersions[package.PackageId]; } } } if (await CheckLogin(1) < 0 || pkgsToUpdate.Count == 0 || App.IsDownloading) { return; } App.IsDownloading = true; MainWindow.Dispatcher.Invoke(() => { MainWindow.DownloadDialog.ShowAsync(); }); // TODO: Check if works MainWindow.DownloadDialog.UpdatePackages(pkgsToUpdate, InstalledPackages, WebWrapper, SqLiteAdapter).Wait(); App.IsDownloading = false; MainWindow.RW_CrawlingComplete(); }); }