From b08f5418ec92e08431dd3e15edeccec42ab4d980 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Tue, 6 Jan 2026 10:18:11 -0500 Subject: [PATCH] feat(client): migrate Searches.razor to ISearchApiClient - Replace ISearchService injection with ISearchApiClient - Add @using for JdeScoping.Core.ApiContracts and JdeScoping.Client.Extensions - Update LoadSearchesAsync to use ApiResult.Switch() pattern - Add _errorMessage field for error state - Display RadzenAlert for error conditions - Use ToClientList() extension method to convert Core->Client view models --- .../JdeScoping.Client/Pages/Searches.razor | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/NEW/src/JdeScoping.Client/Pages/Searches.razor b/NEW/src/JdeScoping.Client/Pages/Searches.razor index 350b5ee..fd352a6 100644 --- a/NEW/src/JdeScoping.Client/Pages/Searches.razor +++ b/NEW/src/JdeScoping.Client/Pages/Searches.razor @@ -1,7 +1,9 @@ @page "/" @page "/searches" @attribute [Authorize] -@inject ISearchService SearchService +@using JdeScoping.Core.ApiContracts +@using JdeScoping.Client.Extensions +@inject ISearchApiClient SearchApi @inject IHubConnectionService HubConnection @inject NavigationManager NavigationManager @implements IDisposable @@ -20,6 +22,12 @@ { } +else if (!string.IsNullOrEmpty(_errorMessage)) +{ + + @_errorMessage + +} else { _searches = []; private RadzenDataGrid? _grid; private bool _isLoading = true; + private string? _errorMessage; protected override async Task OnInitializedAsync() { @@ -59,9 +68,18 @@ else private async Task LoadSearchesAsync() { _isLoading = true; + _errorMessage = null; try { - _searches = await SearchService.GetUserSearchesAsync(); + var result = await SearchApi.GetUserSearchesAsync(); + result.Switch( + searches => { _searches = searches.ToClientList(); }, + notFound => { _errorMessage = "No searches found."; _searches = []; }, + validation => { _errorMessage = string.Join("; ", validation.FieldErrors.SelectMany(e => e.Value)); }, + unauthorized => { _errorMessage = "Session expired. Please login again."; }, + forbidden => { _errorMessage = "Access denied."; }, + error => { _errorMessage = error.Message; } + ); } finally {