public async Task LoadAsync(bool foreceRefresh = false, int maxItemCount = 9, bool forcePull = false) { if (IsLoading) { return; } IsLoading = true; try { await AppGlobal.PullBookmarkFromUserFavoriteAsync(foreceRefresh, forcePull); } catch (Exception exception) { Debug.WriteLine(exception.Message); IsLoading = false; IsLoaded = false; return; } for (int i = 0; i < this.Count; ++i) { var hvm = this[i]; var bookmark = AppGlobal.BookmarkList.FirstOrDefault(bk => bk.SeriesTitle == hvm.SeriesTitle); if (bookmark == null) //Thus we should remove this item from our collection { this.RemoveAt(i); --i; } } foreach (var bk in AppGlobal.BookmarkList) { var hvm = this.FirstOrDefault(vm => vm.Position.SeriesId == bk.Position.SeriesId); if (hvm == null) { hvm = new HistoryItemViewModel(bk); if (!String.IsNullOrEmpty(bk.DescriptionThumbnailUri)) { hvm.CoverImageUri = bk.DescriptionThumbnailUri; } this.Add(hvm); NotifyPropertyChanged("IsEmpty"); if (String.IsNullOrEmpty(bk.Position.SeriesId)) { try { var volume = await CachedClient.GetSeriesAsync(bk.Position.SeriesId); hvm.CoverImageUri = volume.CoverImageUri; hvm.Description = volume.Description; bk.Position.SeriesId = volume.Id; bk.ContentDescription = volume.Description; bk.DescriptionThumbnailUri = volume.CoverImageUri; } catch (Exception exception) { Debug.WriteLine(exception.Message); } } } else { hvm.Position = bk.Position; hvm.ProgressPercentage = bk.Progress; if (!String.IsNullOrEmpty(bk.DescriptionThumbnailUri)) { hvm.CoverImageUri = bk.DescriptionThumbnailUri; } else if (bk.DescriptionImageUri != null) { hvm.CoverImageUri = bk.DescriptionImageUri; } hvm.Description = bk.ContentDescription; hvm.ChapterTitle = bk.ChapterTitle; hvm.VolumeTitle = bk.VolumeTitle; hvm.SeriesTitle = bk.SeriesTitle; hvm.UpdateTime = bk.ViewDate; } } NotifyPropertyChanged("IsEmpty"); IsLoaded = true; IsLoading = false; //await App.User.SyncFavoriteListAsync(foreceRefresh); //App.User.FavoriteList.CollectionChanged += FavoriteList_CollectionChanged; //var favList = from fav in App.User.FavoriteList orderby fav.VolumeNo group fav by fav.SeriesTitle ; //foreach (var series in favList) //{ // var vol = series.LastOrDefault(); // var item = new HistoryItemViewModel() { SeriesTitle = vol.SeriesTitle, VolumeTitle = vol.VolumeTitle, UpdateTime = vol.FavTime}; // var volume = await CachedClient.GetVolumeAsync(vol.VolumeId); // item.CoverImageUri = volume.CoverImageUri; // item.Description = volume.Description; // item.Position = new NovelPositionIdentifier { SeriesId = volume.ParentSeriesId, VolumeId = volume.Id, VolumeNo = -1 }; // this.Add(item); // NotifyPropertyChanged("IsEmpty"); //} //IsLoading = false; //IsLoaded = true; //return App.User.FavoriteList; }