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