public async Task CheckIfSourceWorking() { IsChecking = true; if (RssUrl != null) { IsWorking = await SourceDataService.IsSourceWorkingAsync(RssUrl.ToString()); } IsChecking = false; }
/// <summary> /// Gets all the sources from the database and checks if they still works or not /// </summary> /// <param name="progress"></param> /// <param name="ct"></param> /// <returns>Task Type</returns> public async Task LoadDataAsync(IProgress <int> progress, CancellationToken token) { IsLoadingData = true; ProgressCurrent = 0; Sources.Clear(); var sourcesDataList = await SourceDataService.GetSourcesDataAsync(); ProgressMax = sourcesDataList.Count(); int progressCount = 0; foreach (var source in sourcesDataList) { if (token.IsCancellationRequested) { IsLoadingData = false; TokenSource = new CancellationTokenSource(); return; } Sources.Add(source); progress.Report(++progressCount); } RefreshSourcesCommand.OnCanExecuteChanged(); foreach (var item in Sources) { if (token.IsCancellationRequested) { IsLoadingData = false; TokenSource = new CancellationTokenSource(); return; } try { item.IsChecking = true; var task = await SourceDataService.IsSourceWorkingAsync(item.RssUrl.AbsoluteUri); item.IsWorking = task.Item1; item.LastBuildDate = task.Item2; item.CurrentRssItemsCount = task.Item3; // Saves latest build date and rss items count to source await SourceDataService.UpdateSourceAsync(item); } catch (HttpRequestException ex) { if (ex.Message.StartsWith("Response status code does not indicate success: 403")) { item.ErrorMessage = "HttpRequestException403MessageDialog".GetLocalized(); } else { item.ErrorMessage = "HttpRequestExceptionMessageDialog".GetLocalized(); } Debug.WriteLine(ex); item.IsError = true; } catch (XmlException ex) { item.ErrorMessage = "XmlExceptionMessageDialog".GetLocalized(); Debug.WriteLine(ex); item.IsError = true; } catch (ArgumentNullException ex) { item.ErrorMessage = "SourcesViewModelSourceUrlNullExceptionMessageDialog".GetLocalized(); Debug.WriteLine(ex); item.IsError = true; } catch (Exception ex) { item.ErrorMessage = "SourcesViewModelExceptionMessageDialog".GetLocalized(); Debug.WriteLine(ex); item.IsError = true; } finally { item.IsChecking = false; } } IsLoadingData = false; }