From 56ccab63773b6769ad20a856f9651bad5cb62676 Mon Sep 17 00:00:00 2001 From: TekH Date: Wed, 1 Jul 2026 19:15:40 +0200 Subject: [PATCH] Refactor email suggestion handling logic Refactored the handling of email suggestions to separate selection and commitment logic. Updated ``'s `ValueChanged` handler to use `OnReceiverEmailSuggestionCommittedAsync` for finalizing selections. Introduced `SelectReceiverEmailSuggestion` as a synchronous helper method for managing selection updates. Centralized clearing of suggestions in the new `OnReceiverEmailSuggestionCommittedAsync` method. Simplified keyboard navigation logic by replacing asynchronous calls with synchronous selection handling. These changes improve code clarity and reduce unnecessary asynchronous operations. --- .../Pages/EnvelopeSenderEditorPage.razor | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderEditorPage.razor b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderEditorPage.razor index 8e8d4fc4..5c3d4e99 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderEditorPage.razor +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderEditorPage.razor @@ -312,7 +312,7 @@ TValue="string" Data="@_receiverEmailSuggestions" Value="@_selectedReceiverEmailSuggestion" - ValueChanged="OnReceiverEmailSuggestionSelectedAsync" + ValueChanged="OnReceiverEmailSuggestionCommittedAsync" SelectionMode="ListBoxSelectionMode.Single" CssClass="w-100" /> @@ -535,12 +535,12 @@ if (e.Key == "ArrowDown") { var nextIndex = currentIndex < _receiverEmailSuggestions.Count - 1 ? currentIndex + 1 : 0; - await OnReceiverEmailSuggestionSelectedAsync(_receiverEmailSuggestions[nextIndex]); + SelectReceiverEmailSuggestion(_receiverEmailSuggestions[nextIndex]); } else if (e.Key == "ArrowUp") { var nextIndex = currentIndex > 0 ? currentIndex - 1 : _receiverEmailSuggestions.Count - 1; - await OnReceiverEmailSuggestionSelectedAsync(_receiverEmailSuggestions[nextIndex]); + SelectReceiverEmailSuggestion(_receiverEmailSuggestions[nextIndex]); } else if (e.Key == "Enter") { @@ -549,10 +549,7 @@ : _receiverEmailSuggestions.FirstOrDefault(); if (!string.IsNullOrWhiteSpace(selectedValue)) - { - await OnReceiverEmailSuggestionSelectedAsync(selectedValue); - _receiverEmailSuggestions.Clear(); - } + await OnReceiverEmailSuggestionCommittedAsync(selectedValue); } else if (e.Key == "Escape") { @@ -561,14 +558,26 @@ } } - Task OnReceiverEmailSuggestionSelectedAsync(string? value) + void SelectReceiverEmailSuggestion(string? value) { if (string.IsNullOrWhiteSpace(value)) - return Task.CompletedTask; + return; _selectedReceiverEmailSuggestion = value.Trim(); _receiverDraftEmail = _selectedReceiverEmailSuggestion; _receiverPopupValidationMessage = null; + } + + Task OnReceiverEmailSuggestionSelectedAsync(string? value) + { + SelectReceiverEmailSuggestion(value); + return Task.CompletedTask; + } + + Task OnReceiverEmailSuggestionCommittedAsync(string? value) + { + SelectReceiverEmailSuggestion(value); + _receiverEmailSuggestions.Clear(); return Task.CompletedTask; }