@page "/voiceworks" @using JSMR.Application.Common.Search @using JSMR.Application.VoiceWorks.Queries.Search @using JSMR.UI.Blazor.Components @using JSMR.UI.Blazor.Services @inject VoiceWorksClient Client @inject IJSRuntime JS Voice Works

Voice Works

@if (searchResults is not null) { } @code { public string? Keywords { get; set; } public int PageNumber { get; set; } = 1; public int PageSize { get; set; } = 100; SearchResult? searchResults; protected override async Task OnInitializedAsync() { await UpdateDataAsync(true); } private async Task UpdateDataAsync(bool resetPageNumber) { await JS.InvokeVoidAsync("pageHelpers.scrollToTop"); if (resetPageNumber) PageNumber = 1; SearchVoiceWorksRequest request = new( Options: new() { Criteria = new() { Keywords = Keywords, SupportedLanguages = [Domain.Enums.Language.English] }, SortOptions = [ new(VoiceWorkSortField.ReleaseDate, Application.Common.Search.SortDirection.Descending) ], PageNumber = PageNumber, PageSize = PageSize } ); SearchVoiceWorksResponse? response = await Client.SearchAsync(request); searchResults = response?.Results; } public async Task OnKeywordsChanged(string? newKeywords) { Keywords = newKeywords; await UpdateDataAsync(true); } public async Task OnPageNumberChanged(int newPageNumber) { PageNumber = newPageNumber; await UpdateDataAsync(false); } public async Task OnPageSizeChanged(int newPageSize) { PageSize = newPageSize; await UpdateDataAsync(true); } }