Exemple #1
0
        public async Task <IDictionary <string, IList <BookItem> > > LoadAsync(bool forceRefresh = false, int maxVolumeCount = 9)
        {
            if (!IsLoading && (!IsLoaded || forceRefresh))
            {
                IsLoading = true;
                try
                {
                    var recommandBookGroups = await CachedClient.GetRecommandedBookLists(forceRefresh);

                    this.Clear();
                    foreach (var bookGroup in recommandBookGroups)
                    {
                        var group = new KeyGroup <string, BookCoverViewModel>
                        {
                            Key = bookGroup.Key
                        };
                        if (bookGroup.Value.Count <= maxVolumeCount)
                        {
                            group.AddRange(bookGroup.Value.Select(x => new BookCoverViewModel(x)));
                        }
                        else
                        {
                            group.AddRange(bookGroup.Value.Take(maxVolumeCount).Select(x => new BookCoverViewModel(x)));
                        }
                        this.Add(group);
                    }
                    IsLoading = false;
                    IsLoaded  = true;
                    NotifyPropertyChanged("IsEmpty");
                    return(recommandBookGroups);
                }
                catch (Exception exception)
                {
                    IsLoading = false;
                    IsLoaded  = false;
                    Debug.WriteLine(exception.Message);
                    return(null);
                }
            }
            return(null);
        }
Exemple #2
0
        public async Task LoadRecommandDataAsync()
        {
            if (IsLoading || IsRecommandLoaded)
            {
                return;
            }
            LoadingText = "Loading recommand books";
            IsLoading   = true;
            try
            {
                var recommandBookGroups = await CachedClient.GetRecommandedBookLists();

                RecommandBookItems = new List <KeyGroup <string, BookCoverViewModel> >();
                foreach (var bookGroup in recommandBookGroups)
                {
                    var group = new KeyGroup <string, BookCoverViewModel>
                    {
                        Key = bookGroup.Key
                    };
                    if (bookGroup.Value.Count <= 12)
                    {
                        group.AddRange(bookGroup.Value.Select(x => new BookCoverViewModel(x)));
                    }
                    else
                    {
                        group.AddRange(bookGroup.Value.Take(12).Select(x => new BookCoverViewModel(x)));
                    }
                    RecommandBookItems.Add(group);
                }
                IsLoading         = false;
                IsRecommandLoaded = true;
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message, "Exception when retriving recommanded books", MessageBoxButton.OK);
                IsLoading = false;
            }
        }