SharpRSS/WebSharpRSS/Pages/Read.razor
2023-05-24 19:27:22 +02:00

68 lines
2.2 KiB
Plaintext

@page "/read/{Id}"
@using WebSharpRSS.Models;
@using ToolQit.Extensions
@using Serilog
@using SharpRss.Models
@using SharpRss.Services
@inject RssService _rssService;
<MudStack Spacing="2" Class="ml-2 mr-2">
@if (isLoading)
{
<div class="justify-self: center">
<MudProgressCircular Color="Color.Primary" Indeterminate="true" />
<MudText>Loading...</MudText>
</div>
}
else if (failed)
{
<MudAlert Severity="Severity.Error" Variant="Variant.Filled">Loading failed!</MudAlert>
}
else
{
foreach (var feedItemData in items)
{
<MudItem>
<MudCard>
<MudCardContent>
<div style="justify-self: start;" class="d-flex align-center">
@*@if (feedItemData.Icon != null)
{
<MudIcon Icon="@feedItemData.Icon" Style="@($"color:{feedItemData.CategoryColorHex}")" />
}
@if (feedItemData.FaviconUrl != null)
{
<MudImage Src="@feedItemData" ObjectFit="ObjectFit.Contain" />
}*@
<MudText Class="d-inline pa-2 align-center">@feedItemData.Title</MudText>
</div>
<MudText Typo="Typo.body2">@feedItemData.Description</MudText>
<MudText Typo="Typo.overline">@feedItemData.PublishingDate.ToString()</MudText>
</MudCardContent>
</MudCard>
</MudItem>
}
}
</MudStack>
@code {
[Parameter]
public string Id { get; set; }
HashSet<FeedItemData> items = new HashSet<FeedItemData>();
bool isLoading = true;
bool failed = false;
protected override async void OnInitialized()
{
if (Id.IsNullEmptyWhiteSpace())
{
Log.Warning("Invalid id!");
failed = true;
}
var fItems = await _rssService.GetFeedItems(new FeedModel("") { Id = Id });
items = fItems.Select(x => FeedItemData.FromModel(x)).ToHashSet();
isLoading = false;
StateHasChanged();
}
}