SharpRSS/WebSharpRSS/Pages/Index.razor

54 lines
1.5 KiB
Plaintext

@page "/"
@using CodeHollow.FeedReader;
@using SharpRss.Models;
@using WebSharpRSS.Models;
@using SharpRss.Services
@*@inject RssService _rssService;*@
@inject FeedStateContainer _stateContainer;
<MudGrid Spacing="3" Justify="Justify.FlexStart">
@foreach (var feedItem in _items)
{
<MudItem xs="6">
<MudCard>
<MudCardContent>
<MudText>@feedItem.Title</MudText>
<MudText Typo="Typo.body2">@feedItem.Description</MudText>
<MudText Typo="Typo.overline">@feedItem.PublishingDate.ToString()</MudText>
</MudCardContent>
</MudCard>
</MudItem>
}
</MudGrid>
@code {
private HashSet<FeedItem> _items = new HashSet<FeedItem>();
protected override void OnInitialized()
{
UpdateFeeds();
_stateContainer.StateChanged += FeedsChanged;
}
private void FeedsChanged()
{
UpdateFeeds();
InvokeAsync(StateHasChanged);
}
private void UpdateFeeds()
{
if (_stateContainer.TreeItem == null) return;
if (_stateContainer.TreeItem.Feed != null)
_items = _stateContainer.TreeItem.Feed.Items.ToHashSet();
if (_stateContainer.TreeItem.Feeds != null)
{
_items = new HashSet<FeedItem>();
foreach (var itemData in _stateContainer.TreeItem.Feeds)
{
if (itemData.Feed == null) continue;
_items.UnionWith(itemData.Feed.Items);
}
}
}
}