/// <summary> /// 追加单个收藏文章 /// </summary> /// <param name="favouriteArticle">收藏文章</param> /// <returns></returns> public async static Task <bool?> AddLocalFavouriteArticleItem(AppArticleModel favouriteArticle) { var dataFolder = await GetLocalDataFolder(); var favouriteArticleFile = await dataFolder.CreateFileAsync("FavouriteArticle.json", CreationCollisionOption.OpenIfExists); string sourceJson = await FileIO.ReadTextAsync(favouriteArticleFile); if (string.IsNullOrEmpty(sourceJson)) { sourceJson = "[]"; } var sourceList = JsonConvert.DeserializeObject <List <AppArticleModel> >(sourceJson); if (sourceList.Any(article => article.Title == favouriteArticle.Title)) { return(null); } sourceList.Add(favouriteArticle); string afterJson = JsonConvert.SerializeObject(sourceList); try { await FileIO.WriteTextAsync(favouriteArticleFile, afterJson); return(true); } catch (Exception) { return(false); } }
public async void AddReadArticle(AppArticleModel article) { if (!ReadArticleCollection.Any(p => p.Date == article.Date || p.Title == article.Title)) { ReadArticleCollection.Add(article); await IOTools.RewriteLocalReadArticleList(ReadArticleCollection.ToList()); } }
private void ReadButton_Click(object sender, RoutedEventArgs e) { var article = new AppArticleModel(WebArticle); MainPage.Current.AddRecentArticle(article); ConnectedAnimationService.GetForCurrentView().PrepareToAnimate("ForwardConnectedAnimation", ArticleContainer); MainPage.Current.MainFrame.Navigate(typeof(ReadPage), WebArticle, new SuppressNavigationTransitionInfo()); }
private async void NextButton_Click(object sender, RoutedEventArgs e) { MainPage.Current.NextPageHandle(); WaittingRing.IsActive = true; var webData = await AppTools.GetAsyncJson <WebArticleModel>(AppTools.RANDOM_URL); WaittingRing.IsActive = false; if (webData != null) { var article = new AppArticleModel(webData.Data); MainPage.Current.AddRecentArticle(article); WebArticleHandle(webData.Data); } }
public async void AddRecentArticle(AppArticleModel article) { if (RecentArticleCollection.Count > 0) { if (RecentArticleCollection.First().Equals(article)) { return; } RecentArticleCollection.Remove(RecentArticleCollection.Where(p => p.Date == article.Date).FirstOrDefault()); if (RecentArticleCollection.Count >= 10) { RecentArticleCollection.Remove(RecentArticleCollection.Last()); } } RecentArticleCollection.Insert(0, article); await IOTools.RewriteLocalRecentArticleList(RecentArticleCollection.ToList()); }
public async Task <bool> AddFavouriteArticle(AppArticleModel article) { if (FavouriteArticleCollection.Any(p => p.Date == article.Date || p.Title == article.Title)) { new PopToast("您已经收藏过该文章").ShowPopup(); } else { FavouriteArticleCollection.Add(article); bool result = await IOTools.RewriteLocalFavouriteArticleList(FavouriteArticleCollection); if (result) { new PopToast("收藏成功!").ShowPopup(); return(true); } else { new PopToast("收藏失败了...").ShowPopup(); } } return(false); }
private void WebArticleHandle(WebArticleData sourceData) { string sourceContent = sourceData.Content; var contentSplit = sourceContent.Split("</p>", StringSplitOptions.RemoveEmptyEntries); ReadTextBlock.Blocks.Clear(); ReadScrollView.ChangeView(0, 0, 1); foreach (var splitItem in contentSplit) { var paragraph = new Paragraph(); var run = new Run(); string content = splitItem.Replace("<p>", ""); if (string.IsNullOrEmpty(content.Trim())) { continue; } run.Text = content; paragraph.Inlines.Add(run); paragraph.TextIndent = ReadFontSize * 2; paragraph.LineHeight = ReadLineHeight; paragraph.Margin = new Thickness(0, 0, 0, ReadParagraphHeight); ReadTextBlock.Blocks.Add(paragraph); } ThisArticleData = new AppArticleModel(sourceData); isFavourite = MainPage.Current.FavouriteArticleCollection.Any(article => article.Date == sourceData.Date.Curr || article.Title == sourceData.Title); LikeButton.Content = isFavourite ? "" : ""; isRead = MainPage.Current.ReadArticleCollection.Any(article => article.Date == sourceData.Date.Curr || article.Title == sourceData.Title); if (!isRead && ThisArticleData.WordCount <= 1000) { isRead = true; MainPage.Current.AddReadArticle(ThisArticleData); } TitleTextBlock.Text = sourceData.Title; AuthorTextBlock.Text = sourceData.Author; WordCountRun.Text = sourceData.Wc.ToString(); }