public async Task LoadTopStoriesArticlesAsync() { if (TopStoriesArticles == null) { TopStoriesArticles = new List <Article>(); } try { var articles = await DatabaseOperations.GetInstance().GetCategoryArticlesAsync(TopStories); if (articles != null && articles.Count > 0) { articles = articles.OrderByDescending(o => o.PublishDate).ToList(); foreach (var article in articles) { if (TopStoriesArticles.Find(o => o.ArticleId == article.ArticleId) == null) { TopStoriesArticles.Add(article); } } } } catch (Exception exception) { if (Debugger.IsAttached) { Debug.WriteLine("DataService:" + exception); } } IsRefreshingTopNewsArticles = false; NotifyDataRefreshed(DataType.TopStoriesArticles, true); IsTopStoriesLoaded = true; }
public async Task <Article> GetArticlesFromId(string id, string category) { try { switch (category) { case TopStories: if (TopStoriesArticles == null) { return(null); } if (TopStoriesArticles.Count == 0) { await LoadTopStoriesArticlesAsync(); } return(TopStoriesArticles != null?TopStoriesArticles.Find(o => o.ArticleId == id) : null); case BreakingNews: return(BreakingNewsArticles != null?BreakingNewsArticles.Find(o => o.ArticleId == id) : null); default: return(Articles != null?Articles.Find(o => o.ArticleId == id) : null); } } catch (Exception exception) { if (Debugger.IsAttached) { Debug.WriteLine("DataService:" + exception); } return(null); } }
private async Task UpdateStories(Article article) { try { if (article != null && HeadLineArticle != null && article.ArticleId == HeadLineArticle.ArticleId) { HeadLineArticle = article; SaveHeadLine(); } var temp = TopStoriesArticles.Find(o => article != null && o.ArticleId == article.ArticleId); if (temp != null) { temp = article; await SaveTopStoriesArticle(temp); } temp = null; temp = BreakingNewsArticles.Find(o => article != null && o.ArticleId == article.ArticleId); if (temp != null) { temp = article; await SaveBreakingNewsArticleAsync(temp); } } catch (Exception exception) { if (Debugger.IsAttached) { Debug.WriteLine("DataService:" + exception); } } }
public async Task RefreshTopArticlesAsync(bool isForce, int page = 0) { try { var presentTime = DateTime.UtcNow; var refresh = false; refresh = await CanRefreshCategoryAsync(TopStories); if (refresh || isForce || page != 0) { if (!IsRefreshingTopNewsArticles || isForce || page != 0) { IsRefreshingTopNewsArticles = true; var topNews = await _theHinduClient.GetTopArticlesAsync(page); if (topNews != null && topNews.Count > 0) { HeadLineArticle = topNews[0]; if (HeadLineArticle != null && !string.IsNullOrEmpty(HeadLineArticle.Thumbnail)) { HeadLineArticle.HdThumbnail = HeadLineArticle.Thumbnail.Replace("i.jpg", "e.jpg"); } topNews = topNews.OrderByDescending(o => o.PublishDate).ToList(); foreach (var newArticle in topNews) { newArticle.Category = TopStories; if (TopStoriesArticles.Find(o => o.ArticleId == newArticle.ArticleId) == null) { TopStoriesArticles.Add(newArticle); } else { var oldArticle = TopStoriesArticles.Find(o => o.ArticleId == newArticle.ArticleId); if (oldArticle != null && oldArticle.FullDescription != newArticle.FullDescription) { oldArticle.FullDescription = newArticle.FullDescription; } } } IsTopStoriesLoaded = true; await DatabaseOperations.GetInstance().UpdateCategoryLastAccessedValueAsync(TopStories, DateTime.UtcNow); SaveHeadLine(); await SaveTopStoriesArticlesAsync(); } } } } catch (Exception exception) { if (Debugger.IsAttached) { Debug.WriteLine("DataService:" + exception); } } TopStoriesArticles = TopStoriesArticles.OrderByDescending(o => o.PublishDate).ToList(); IsRefreshingTopNewsArticles = false; NotifyDataRefreshed(DataType.TopStoriesArticles, true); }