private async void SaveSelectedProducts() { IsExporting = true; _ctsSaveProducts = new CancellationTokenSource(); var products = SelectedProducts.ToList(); try { var task = Export.SaveCollection(products, _ctsSaveProducts.Token); CriticalTasks.Add(task); await task.ConfigureAwait(false); } catch (TaskCanceledException) { } catch (System.Exception e) { _logger.Error(e); await MessageBox.ShowAsync("Произошла ошибка во время экспорта.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error).ConfigureAwait(false); } CriticalTasks.Cleanup(); IsExporting = false; }
private async Task RefreshProductsAsync(IEnumerable <ProductVM> coll, CancellationTokenSource cts) { var skApi = new SkladchikApiClient(cts.Token); bool isNeedGetCookie = await Cookies.IsNeedGetCookie().ConfigureAwait(false); if (isNeedGetCookie) { var cookieContainer = Cookies.GetSkladchikCookie(); skApi.CookieContainer = cookieContainer; if (cookieContainer.Count == 0) { await MessageBox.ShowAsync("Обновление складчин невозможно. Загрузите сайт в браузере и начните обновление заново.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error).ConfigureAwait(false); cts.Cancel(); return; } } foreach (var productVm in coll) { cts.Token.ThrowIfCancellationRequested(); var updatedProduct = await skApi.Products.GetByIdAsync(productVm.Model.Id) .ConfigureAwait(false); bool productWasDeleted = updatedProduct == null; if (productWasDeleted) { await Db.Products.RemoveAsync(productVm.Model).ConfigureAwait(false); } else { var oldProduct = productVm.Model; updatedProduct.Color = oldProduct.Color; updatedProduct.Note = oldProduct.Note; updatedProduct.ViewCount = oldProduct.ViewCount; productVm.Model = updatedProduct; } } await Db.Products.AddOrUpdateAsync(coll.Select(p => p.Model).ToList()).ConfigureAwait(false); }
private async Task <bool> IsCookiesExistsAsync() { bool isNeedGetCookie = await Cookies.IsNeedGetCookie().ConfigureAwait(false); if (isNeedGetCookie) { var cookieContainer = Cookies.GetSkladchikCookie(); _skApi.CookieContainer = cookieContainer; if (cookieContainer.Count == 0) { await MessageBox.ShowAsync("Поиск невозможен. Загрузите сайт в браузере и начните поиск заново.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error).ConfigureAwait(false); return(false); } } return(true); }
private async void OpenProduct() { var products = SelectedProducts.ToList(); if (products.Count > 10) { var result = await MessageBox.ShowAsync( $"Вы собираетесь открыть {products.Count} складчин в браузере. Это может сильно замедлить его работу. \r\n Хотите продолжить?", "", MessageBoxButton.YesNo, MessageBoxImage.Warning).ConfigureAwait(false); if (result != MessageBoxResult.Yes) { return; } } foreach (ProductVM p in products) { string link = Products.GetProductLink(p.Model); Process.Start(link); } }
private async Task <bool?> IsNeedClearLastResultAsync() { if (Products.Count > 0) { var mbResult = await MessageBox.ShowAsync("Очистить предыдущие результаты?", "Внимание", MessageBoxButton.YesNoCancel, MessageBoxImage.Information).ConfigureAwait(false); switch (mbResult) { case MessageBoxResult.Yes: return(true); case MessageBoxResult.Cancel: case MessageBoxResult.None: return(null); default: return(false); } } return(false); }