feat(client): migrate SearchQueue.razor to ISearchApiClient
- Replace ISearchService injection with ISearchApiClient - Add @using for JdeScoping.Core.ApiContracts and JdeScoping.Client.Extensions - Update LoadQueueAsync to use result.Switch() pattern with ApiResult<T> - Add _errorMessage field for error display - Add RadzenAlert for error message display in UI
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
@page "/search/queue"
|
||||
@attribute [Authorize]
|
||||
@inject ISearchService SearchService
|
||||
@using JdeScoping.Core.ApiContracts
|
||||
@using JdeScoping.Client.Extensions
|
||||
@inject ISearchApiClient SearchApi
|
||||
@inject IHubConnectionService HubConnection
|
||||
@implements IDisposable
|
||||
|
||||
@@ -30,6 +32,12 @@
|
||||
{
|
||||
<LoadingIndicator Message="Loading queue..." />
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(_errorMessage))
|
||||
{
|
||||
<RadzenAlert AlertStyle="AlertStyle.Danger" ShowIcon="true" Variant="Variant.Flat" class="rz-mb-4">
|
||||
@_errorMessage
|
||||
</RadzenAlert>
|
||||
}
|
||||
else
|
||||
{
|
||||
<RadzenDataGrid @ref="_grid" Data="@_searches" TItem="ClientSearchViewModel" AllowSorting="true" AllowPaging="true" PageSize="20"
|
||||
@@ -65,6 +73,7 @@ else
|
||||
private List<ClientSearchViewModel> _searches = [];
|
||||
private RadzenDataGrid<ClientSearchViewModel>? _grid;
|
||||
private bool _isLoading = true;
|
||||
private string? _errorMessage;
|
||||
|
||||
private string _statusMessage = "";
|
||||
private string _statusUpdateDt = "";
|
||||
@@ -78,9 +87,18 @@ else
|
||||
private async Task LoadQueueAsync()
|
||||
{
|
||||
_isLoading = true;
|
||||
_errorMessage = null;
|
||||
try
|
||||
{
|
||||
_searches = await SearchService.GetQueueAsync();
|
||||
var result = await SearchApi.GetQueuedSearchesAsync();
|
||||
result.Switch(
|
||||
searches => { _searches = searches.ToClientList(); },
|
||||
notFound => { _errorMessage = "Queue not 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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user