blog3000/Blog3000/Client/Shared/StickyNavLinks.razor.cs

51 lines
1.2 KiB
C#

using Microsoft.AspNetCore.Components;
using Blog3000.Shared;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Blog3000.Client.Shared
{
public partial class StickyNavLinks: IDisposable
{
[Inject]
private BlogDb BlogDb { get; set; }
private List<BlogPostHeader> selectedPosts = new List<BlogPostHeader>();
public void Dispose()
{
BlogDb.BlogPostsChanged -= BlogDb_BlogPostsChanged;
}
private async void BlogDb_BlogPostsChanged(object sender, EventArgs e)
{
selectedPosts = await SelectPosts();
StateHasChanged();
}
protected override async Task OnInitializedAsync()
{
BlogDb.BlogPostsChanged += BlogDb_BlogPostsChanged;
selectedPosts = await SelectPosts();
}
private async Task<List<BlogPostHeader>> SelectPosts()
{
var r = await BlogDb.GetHeadersAsync()
.Where(c => (c.StickyMenuPos ?? -1) >= 0)
.OrderBy(c => c.StickyMenuPos)
.ToListAsync();
return r;
}
}
}