public async Task LoadStarredNews() { StarredLoading = true; var list = await _starredCacheHelper.ReadStarredCache(); if (list == null || list.Count <= 0) { StarredLoading = false; return; } var mustAdd = new List <NewsModel>(); if (StarredNews != null && StarredNews.Count > 0) { foreach (var item in list) { var exists = StarredNews.FirstOrDefault(n => n.Title == item.Title); if (exists == null) { mustAdd.Add(item); } } if (mustAdd.Count > 0) { list = mustAdd; } else { return; } } foreach (var item in list) { var toAdd = item; var exists = News.FirstOrDefault(n => n.Title == item.Title); if (exists != null) { toAdd = exists; } toAdd.Starred = true; StarredNews.Add(toAdd); } StarredLoading = false; }
private bool UnstarNews(NewsModel unstarred) { if (unstarred == null || !StarredNews.Contains(unstarred)) { return(false); } var result = StarredNews.Remove(unstarred); unstarred.Starred = false; if (result) { SaveStarredCache(); } return(result); }
private async Task <bool> StarNews(NewsModel starred) { if (starred == null || StarredNews.Contains(starred)) { return(false); } if (starred.NewsContent == null || starred.NewsContent.Count <= 0) { await starred.LoadNewsBody(); } starred.Starred = true; StarredNews.Add(starred); SaveStarredCache(); return(true); }
private async void SaveStarredCache() { var currentList = StarredNews.ToList(); await _starredCacheHelper.SaveStarredCache(currentList); }