SharpRSS/WebSharpRSS/Shared/SideGuide.razor
2023-05-17 16:03:04 +02:00

74 lines
2.8 KiB
Plaintext

@using SharpRss.Models;
@using MudBlazor.Utilities
@using CodeHollow.FeedReader
@using Serilog
@using WebSharpRSS.Models;
@using ToolQit.Extensions;
@inject NavigationManager _navManager;
@inject FeedStateContainer _stateContainer;
@inject RssService _rssService
<MudStack Spacing="2">
<MudTreeView Items="Categories" @bind-SelectedValue="SelectedItem" Hover="true">
<ItemTemplate>
<MudTreeViewItem @bind-Expanded="@context.IsExpanded" Items="@context.Feeds" Value="@context">
<Content>
<div style="display: grid; grid-template-columns: 1fr auto; align-items: center; width: 100%">
<div style="justify-self: start;" class="d-flex align-center">
<MudTreeViewItemToggleButton @bind-Expanded="@context.IsExpanded" Visible="@context.HasChild" />
@if (context.FaviconUrl.IsNullEmptyWhiteSpace() && context.Icon != null)
{
<MudIcon Icon="@context.Icon"/>
}
else
{
<MudImage Src="@context.FaviconUrl" ObjectFit="ObjectFit.ScaleDown"/>
}
<MudText Class="ml-2">@context.Title</MudText>
</div>
<div style="justify-self: end;">
<MudText Color="Color.Dark" Style="justify-self: end;" Typo="Typo.caption">@context.FeeditemCount</MudText>
</div>
</div>
</Content>
</MudTreeViewItem>
</ItemTemplate>
</MudTreeView>
</MudStack>
@code {
public HashSet<TreeItemData> Categories = new HashSet<TreeItemData>();
private TreeItemData? _selecteditem;
private TreeItemData? SelectedItem
{
get => _selecteditem;
set
{
_selecteditem = value;
ItemClicked();
}
}
private void ItemClicked()
{
if (SelectedItem == null) return;
if (SelectedItem.FeedModel != null)
_stateContainer.SetValue(new HashSet<FeedModel>() { SelectedItem.FeedModel });
if (SelectedItem.Feeds != null)
{
}
//_navManager.NavigateTo("/");
}
protected override async void OnInitialized()
{
Log.Verbose("Loading guide data...");
HashSet<CategoryModel> cats = await _rssService.GetCategories();
await Task.Run(() => Categories.UnionWith(cats.Select(x => new TreeItemData(x)).ToHashSet()));
StateHasChanged();
Log.Verbose(" Guide initialized!");
//await Task.Run(() => Categories = cats.Select(x => new TreeItemData(x)).ToHashSet());
}
}