From d1ce7111c3285eb1566cdaed527ad4c7ee0ad305 Mon Sep 17 00:00:00 2001 From: Marco Minerva Date: Mon, 17 Feb 2025 13:02:32 +0100 Subject: [PATCH] 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`. --- .../Components/Pages/Documents.razor | 4 +- .../Components/Pages/Home.razor | 42 +++++++++++++++---- SqlDatabaseVectorSearch/Program.cs | 1 + 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/SqlDatabaseVectorSearch/Components/Pages/Documents.razor b/SqlDatabaseVectorSearch/Components/Pages/Documents.razor index a9ba723..7f8aa6d 100644 --- a/SqlDatabaseVectorSearch/Components/Pages/Documents.razor +++ b/SqlDatabaseVectorSearch/Components/Pages/Documents.razor @@ -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) diff --git a/SqlDatabaseVectorSearch/Components/Pages/Home.razor b/SqlDatabaseVectorSearch/Components/Pages/Home.razor index 9773793..8730203 100644 --- a/SqlDatabaseVectorSearch/Components/Pages/Home.razor +++ b/SqlDatabaseVectorSearch/Components/Pages/Home.razor @@ -1,12 +1,38 @@ @page "/" +@rendermode @(new InteractiveServerRenderMode(prerender: false)) -Blazor Bootstrap - Web App (.NET 9) - Starter Template +@inject IHttpClientFactory HttpClientFactory -

Hello, world!

+SQL Database Vector Search -Welcome to your new Blazor Bootstrap - Web App (.NET 9). -
-
-Interactive render mode: Server -
-Interactivity location: Global \ No newline at end of file +@if (markdown is null) +{ +
+ +
+} +else +{ +
+
+ @markdown +
+
+} + +@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(); + } +} \ No newline at end of file diff --git a/SqlDatabaseVectorSearch/Program.cs b/SqlDatabaseVectorSearch/Program.cs index 7f2c198..fb5b967 100644 --- a/SqlDatabaseVectorSearch/Program.cs +++ b/SqlDatabaseVectorSearch/Program.cs @@ -51,6 +51,7 @@ builder.Services.AddHybridCache(options => }; }); +builder.Services.AddHttpClient(); builder.Services.ConfigureHttpClientDefaults(builder => { builder.AddStandardResilienceHandler();