Пример #1
0
        static IEnumerable <RankingItem> GetGenreTagRankingItems(RankingGenre genre, RankingSettings rankingSettings)
        {
            // アプリ上の要請としてジャンルトップの「すべて」or「話題」を除外して表示したい
            // (GroupItemと表示錠の役割が重複してしまうような、ユーザーを混乱させてしまう可能性を除去したい)
            var info = Database.Local.RankingGenreTagsDb.Get(genre);

            if (info == null)
            {
                return(Enumerable.Empty <RankingItem>());
            }

            return(info.Tags
                   .Where(x => !string.IsNullOrEmpty(x.Tag) && x.Tag != "all")
                   .Select(y => new RankingItem()
            {
                Genre = genre,
                IsDisplay = !rankingSettings.IsHiddenTag(genre, y.Tag),
                Label = y.DisplayName,
                Tag = y.Tag
            }
                           ));
        }
Пример #2
0
        public async Task OnNavigatedToAsync(INavigationParameters parameters)
        {
            if (!_appFlagsRepository.IsRankingInitialUpdate)
            {
                try
                {
                    foreach (var genreItem in _RankingGenreItems)
                    {
                        if (genreItem.Genre == null)
                        {
                            continue;
                        }
                        var genre = genreItem.Genre.Value;
                        var tags  = await _rankingProvider.GetRankingGenreTagsAsync(genre, true);

                        using (var refresh = genreItem.Items.DeferRefresh())
                        {
                            var rankingItems = tags
                                               .Where(x => !string.IsNullOrEmpty(x.Tag) && x.Tag != "all")
                                               .Select(y => new RankingItem()
                            {
                                Genre     = genre,
                                IsDisplay = !RankingSettings.IsHiddenTag(genre, y.Tag),
                                Label     = y.DisplayName,
                                Tag       = y.Tag
                            }
                                                       );
                            genreItem.Items.Clear();
                            foreach (var tag in rankingItems)
                            {
                                genreItem.Items.Add(tag);
                            }
                        }

                        await Task.Delay(500);
                    }
                }
                finally
                {
                    _appFlagsRepository.IsRankingInitialUpdate = true;
                }
            }
            else
            {
                if (_prevSelectedGenre != null)
                {
                    var updateTargetGenre = _RankingGenreItems.FirstOrDefault(x => x.Genre == _prevSelectedGenre);
                    if (updateTargetGenre != null)
                    {
                        updateTargetGenre.Items.Clear();
                        var items = GetGenreTagRankingItems(updateTargetGenre.Genre.Value, RankingSettings);
                        using (updateTargetGenre.Items.DeferRefresh())
                        {
                            foreach (var a in items)
                            {
                                updateTargetGenre.Items.Add(a);
                            }
                        }
                    }
                }
            }
        }