51 lines
1.2 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|