@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 { } @code { private string? keywords; public string? Keywords { get { return keywords; } set { keywords = value; _ = UpdateDataAsync(true); } } private int pageNumber = 1; public int PageNumber { get { return pageNumber; } set { pageNumber = value; _ = UpdateDataAsync(false); } } int pageSize = 100; public int PageSize { get { return pageSize; } set { pageSize = value; _ = UpdateDataAsync(true); } } SearchResult? searchResults; protected override Task OnInitializedAsync() { _ = LoadCreatorsAsync(); return Task.CompletedTask; } 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); } }