From 5b453dd033eb878e5e13056e61597adddd7d6b2c Mon Sep 17 00:00:00 2001 From: Marco Minerva Date: Wed, 29 Jul 2026 15:22:01 +0200 Subject: [PATCH] Refactor message scrolling and cleanup Error.razor Moved message scrolling logic to OnAfterRenderAsync to ensure DOM updates before scrolling, using Task.Yield() after StateHasChanged. Removed redundant EnsureMessageIsVisibleAsync calls. Cleaned up Error.razor by removing unused usings and the rendermode directive. --- SqlDatabaseVectorSearch/Components/Pages/Ask.razor | 13 +++++++------ .../Components/Pages/Error.razor | 2 -- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/SqlDatabaseVectorSearch/Components/Pages/Ask.razor b/SqlDatabaseVectorSearch/Components/Pages/Ask.razor index 7becdaa..b0bfa6b 100644 --- a/SqlDatabaseVectorSearch/Components/Pages/Ask.razor +++ b/SqlDatabaseVectorSearch/Components/Pages/Ask.razor @@ -141,6 +141,12 @@ protected override async Task OnAfterRenderAsync(bool firstRender) { + // Scrolling here guarantees the browser DOM already contains the latest messages. + if (messages.Count > 0) + { + await EnsureMessageIsVisibleAsync(); + } + if (!firstRender) { return; @@ -179,9 +185,7 @@ question = null; await InvokeAsync(StateHasChanged); - - await EnsureMessageIsVisibleAsync(); - + await Task.Yield(); try { await using var scope = ServiceScopeFactory.CreateAsyncScope(); @@ -208,7 +212,6 @@ } await InvokeAsync(StateHasChanged); - await EnsureMessageIsVisibleAsync(); } } @@ -221,8 +224,6 @@ { isAsking = false; await InvokeAsync(StateHasChanged); - - await EnsureMessageIsVisibleAsync(); } } diff --git a/SqlDatabaseVectorSearch/Components/Pages/Error.razor b/SqlDatabaseVectorSearch/Components/Pages/Error.razor index b7cfe82..2edfd1e 100644 --- a/SqlDatabaseVectorSearch/Components/Pages/Error.razor +++ b/SqlDatabaseVectorSearch/Components/Pages/Error.razor @@ -1,6 +1,4 @@ @page "/Error" -@using System.Diagnostics -@rendermode @(new InteractiveServerRenderMode(prerender: false))