@inherits RefreshablePageBase @page "/" @using RBLFeederCommon.Enums @using RBLFeederCommon.Models.RssFeed @using RBLNews.Shared.Services @using RBLNews.Shared.Components.Controls @inject IFeedDataService feedDataService @inject AppLifecycleService appLifecycleService @if (FeedGroups == null) {
} else {
@foreach (IGrouping sGrouping in SourceGroupings) { }
@foreach (FeedGroupVM feedGrp in FeedGroups) {

@feedGrp.PublishDate.ToLocalTime().ToString("dd.MM.yyyy")

@foreach (FeedVM feed in feedGrp.Feeds) {
@feed.Title @feed.Description
@*
    *@ @*
  • *@ @*
    *@ @* *@ @*
    *@ @*
  • *@ @*
*@ @GetRssSourceName((RssFeedSources)@feed.Source) | @feed.PubDate?.ToLocalTime()

} }
} @code { [Inject] private IFeedDataService FeedDataService { get; set; } [Inject] private AppLifecycleService AppLifecycleService { get; set; } private List? FeedGroups { get; set; } private IEnumerable> SourceGroupings { get; set; } = new List>(); private List activeFilters = new List(); protected override void OnInitialized() { AppLifecycleService.OnActivated = LoadFeeds; LoadFeeds(); } private async void LoadFeeds() { // Copy feed list to keep original list await FeedDataService.LoadFeeds(); FeedGroups = [.. FeedDataService.Feeds.FeedGroups]; List listTmp = [.. FeedDataService.Feeds.FeedGroups]; SourceGroupings = listTmp.SelectMany(fg => fg.Feeds.Select(f => f.Source)).GroupBy(sources => sources); StateHasChanged(); } private string GetRssSourceName(RssFeedSources source) { switch (source) { case RssFeedSources.RbLive: case RssFeedSources.NitterRbLive: return "RBLive!"; case RssFeedSources.NitterFabrizioRomano: return "Fabrizio Romano"; case RssFeedSources.Lvz: return "LVZ"; case RssFeedSources.Kicker: return "Kicker"; case RssFeedSources.Bild: return "BILD"; case RssFeedSources.Transfermarkt: return "Transfermarkt"; default: return "?"; } } private void OnClicked(RssFeedSources source, bool value) { if (activeFilters.Contains(source)) { activeFilters.Remove(source); } else { activeFilters.Add(source); } FeedGroups = new List(); foreach (FeedGroupVM fg in FeedDataService.Feeds.FeedGroups) { List feeds = fg.Feeds.Where(f => activeFilters.Contains((RssFeedSources)f.Source)).ToList(); if (feeds.Any()) { FeedGroups.Add( new FeedGroupVM { Feeds = feeds, PublishDate = fg.PublishDate }); } } StateHasChanged(); } }