@page "/voiceworks" @using JSMR.Application.Common.Search @using JSMR.Application.VoiceWorks.Queries.Search @using JSMR.UI.Blazor.Components @using JSMR.UI.Blazor.Enums @using JSMR.UI.Blazor.Filters @using JSMR.UI.Blazor.Services @using JSMR.UI.Blazor.Shared @using Microsoft.AspNetCore.WebUtilities @inject VoiceWorksClient Client @inherits SearchPageBase Voice Works

Voice Works

@if (Result is not null) { } @code { [Inject] ILookupDataService Lookups { get; set; } = default!; List> sortOptions = []; protected override async Task OnInitializedAsync() { sortOptions = Lookups.GetSortOptions(); await base.OnInitializedAsync(); } protected override VoiceWorkFilterState ParseStateFromUri(string absoluteUri) => VoiceWorkFilterState.FromQuery(new Uri(absoluteUri).Query); protected override string BuildUri(VoiceWorkFilterState state) { var basePath = new Uri(Nav.Uri).GetLeftPart(UriPartial.Path); return Microsoft.AspNetCore.WebUtilities.QueryHelpers.AddQueryString(basePath, state.ToQuery()); } protected override bool IsThisPage(string absoluteUri) => Nav.ToBaseRelativePath(absoluteUri).StartsWith("voiceworks", StringComparison.OrdinalIgnoreCase); protected override Task> ExecuteSearchAsync(VoiceWorkFilterState state, CancellationToken ct) => Client.SearchAsync(state.ToSearchRequest(), ct).ContinueWith(t => t.Result?.Results ?? new SearchResult(), ct); }