Enhance document loading and update UI in Blazor app

- Added `StateHasChanged()` call after loading documents in `Documents.razor`.
- Introduced `LoadDocumentsAsync` method for document retrieval.
- Updated page title in `Home.razor` and injected `IHttpClientFactory`.
- Implemented loading spinner and markdown fetching in `OnAfterRenderAsync`.
- Configured HTTP client with resilience handler in `Program.cs`.
This commit is contained in:
Marco Minerva
2025-02-17 13:02:32 +01:00
parent be3f0dbf09
commit d1ce7111c3
3 changed files with 37 additions and 10 deletions
@@ -127,6 +127,8 @@ else
await Task.Delay(2000);
await using var scope = ServiceProvider.CreateAsyncScope();
await LoadDocumentsAsync(scope.ServiceProvider);
StateHasChanged();
}
private async Task LoadDocumentsAsync(IServiceProvider services)
@@ -142,8 +144,6 @@ else
LocalCreationDateString = await GetLocalDateTimeStringAsync(dbDocument.CreationDate)
});
}
StateHasChanged();
}
private void HandleFileSelected(InputFileChangeEventArgs e)
@@ -1,12 +1,38 @@
@page "/"
@rendermode @(new InteractiveServerRenderMode(prerender: false))
<PageTitle>Blazor Bootstrap - Web App (.NET 9) - Starter Template</PageTitle>
@inject IHttpClientFactory HttpClientFactory
<h1>Hello, world!</h1>
<PageTitle>SQL Database Vector Search</PageTitle>
Welcome to your new Blazor Bootstrap - Web App (.NET 9).
<br />
<br />
Interactive render mode: Server
<br />
Interactivity location: Global
@if (markdown is null)
{
<div class="d-flex justify-content-center">
<Spinner Type="SpinnerType.Border" Color="SpinnerColor.Primary" />
</div>
}
else
{
<div class="row">
<div class="col">
<Markdown style="overflow-y:auto;">@markdown</Markdown>
</div>
</div>
}
@code
{
private string markdown = default!;
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (!firstRender)
{
return;
}
markdown = await HttpClientFactory.CreateClient().GetStringAsync("https://raw.githubusercontent.com/marcominerva/SqlDatabaseVectorSearch/refs/heads/master/README.md");
StateHasChanged();
}
}
+1
View File
@@ -51,6 +51,7 @@ builder.Services.AddHybridCache(options =>
};
});
builder.Services.AddHttpClient();
builder.Services.ConfigureHttpClientDefaults(builder =>
{
builder.AddStandardResilienceHandler();