@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

Available Upcoming All
Not Blacklisted Favorite Blacklisted All
Not Blacklisted Favorite (Exclude Blacklisted) Favorite (Include Blacklisted) Blacklisted All
Not Blacklisted Favorite (Exclude Blacklisted) Favorite (Include Blacklisted) Blacklisted All
@if (searchResults is not null) { } @code { public string? Keywords { get; set; } public string? SelectedSaleStatus { get; set; } = string.Empty; public string? SelectedCircleStatus { get; set; } = string.Empty; public string? SelectedTagStatus { get; set; } = string.Empty; public string? SelectedCreatorStatus { get; set; } = string.Empty; 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, SaleStatus = string.IsNullOrWhiteSpace(SelectedSaleStatus) == false ? Enum.Parse(SelectedSaleStatus) : null, CircleStatus = string.IsNullOrWhiteSpace(SelectedCircleStatus) == false ? Enum.Parse(SelectedCircleStatus) : null, TagStatus = string.IsNullOrWhiteSpace(SelectedTagStatus) == false ? Enum.Parse(SelectedTagStatus) : null, CreatorStatus = string.IsNullOrWhiteSpace(SelectedCreatorStatus) == false ? Enum.Parse(SelectedCreatorStatus) : null, //SupportedLanguages = [Domain.Enums.Language.English] }, SortOptions = [ new(GetSortField(), 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 OnSaleStatusChanged(string? saleStatus) { SelectedSaleStatus = saleStatus; await UpdateDataAsync(true); } public async Task OnCircleStatusChanged(string? circleStatus) { SelectedCircleStatus = circleStatus; await UpdateDataAsync(true); } public async Task OnTagStatusChanged(string? tagStatus) { SelectedTagStatus = tagStatus; await UpdateDataAsync(true); } public async Task OnCreatorStatusChanged(string? creatorStatus) { SelectedCreatorStatus = creatorStatus; 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 VoiceWorkSortField GetSortField() { SaleStatus? saleStatus = string.IsNullOrWhiteSpace(SelectedSaleStatus) == false ? Enum.Parse(SelectedSaleStatus) : null; switch (saleStatus) { case SaleStatus.Available: return VoiceWorkSortField.ReleaseDate; case SaleStatus.Upcoming: return VoiceWorkSortField.ExpectedReleaseDate; default: return VoiceWorkSortField.AnyReleaseDate; } } }