diff --git a/Wave/Components/Pages/Home.razor b/Wave/Components/Pages/Home.razor index d4cbcfe..ca8ac5b 100644 --- a/Wave/Components/Pages/Home.razor +++ b/Wave/Components/Pages/Home.razor @@ -12,40 +12,42 @@

@Localizer["Title"]

-@if (Articles.Count < 1) { + + +@if (Busy) {
-} - -@if (Articles.FirstOrDefault() is {} featured) { -
- -
-
-} - -
- @foreach (var article in Articles.Skip(1)) { - + + } -
+ +
+ @foreach (var article in Articles.Skip(1)) { + + } +
+} @if (HasMore) {
@@ -59,36 +61,45 @@ private List
Articles { get; } = []; private bool HasMore { get; set; } + private bool Busy { get; set; } = true; protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { + try { + await using var context = await ContextFactory.CreateDbContextAsync(); + + var now = DateTimeOffset.UtcNow; + var query = context.Set
() + .Include(a => a.Author) + .Where(a => a.Status >= ArticleStatus.Published && a.PublishDate <= now) + .OrderByDescending(a => a.PublishDate); + var articles = await query.Take(11).ToListAsync(); + HasMore = (await query.CountAsync()) > 11; + Articles.AddRange(articles); + } finally { + Busy = false; + await InvokeAsync(StateHasChanged); + } + } + } + + private async Task More() { + try { + Busy = HasMore = true; await using var context = await ContextFactory.CreateDbContextAsync(); var now = DateTimeOffset.UtcNow; var query = context.Set
() .Include(a => a.Author) .Where(a => a.Status >= ArticleStatus.Published && a.PublishDate <= now) - .OrderByDescending(a => a.PublishDate); - var articles = await query.Take(11).ToListAsync(); - HasMore = (await query.CountAsync()) > 11; + .OrderByDescending(a => a.PublishDate) + .Skip(Articles.Count); + var articles = await query.Take(10).ToListAsync(); Articles.AddRange(articles); - await InvokeAsync(StateHasChanged); + HasMore = (await query.CountAsync()) > 10; + } finally { + Busy = false; } } - private async Task More() { - HasMore = false; - await using var context = await ContextFactory.CreateDbContextAsync(); - - var now = DateTimeOffset.UtcNow; - var query = context.Set
() - .Include(a => a.Author) - .Where(a => a.Status >= ArticleStatus.Published && a.PublishDate <= now) - .OrderByDescending(a => a.PublishDate) - .Skip(Articles.Count); - var articles = await query.Take(10).ToListAsync(); - Articles.AddRange(articles); - HasMore = (await query.CountAsync()) > 10; - } - } \ No newline at end of file