@page "/creators" @inject VoiceWorksClient Client @inject IJSRuntime JS @using JSMR.Application.Common.Search @using JSMR.Application.Creators.Queries.Search @using JSMR.Application.Creators.Queries.Search.Contracts @using JSMR.UI.Blazor.Components @using JSMR.UI.Blazor.Services Creators

Creators

@if (searchResults is null) {

Loading…

} else if (searchResults.Items.Length == 0) {

No results.

} else { Name Voice Works Favorite Blacklisted @context.Name @context.VoiceWorkCount } @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); } 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); } private async Task UpdateDataAsync(bool resetPageNumber) { if (resetPageNumber) PageNumber = 1; await LoadCreatorsAsync(); } private async Task LoadCreatorsAsync() { SearchCreatorsRequest request = new( Options: new() { PageNumber = PageNumber, PageSize = PageSize, Criteria = new() { Name = Keywords }, SortOptions = [ new(CreatorSortField.Name, Application.Common.Search.SortDirection.Ascending) ] } ); await JS.InvokeVoidAsync("pageHelpers.scrollToTop"); var result = await Client.SearchAsync(request); searchResults = result?.Results ?? new(); //await InvokeAsync(StateHasChanged); } }