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 } )); }
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); } } } } } }