@page "/"
@inject VoiceWorksClient Client
@using JSMR.Application.VoiceWorks.Queries.Search
@using JSMR.UI.Blazor.Components
@using JSMR.UI.Blazor.Services
Home
@code {
VoiceWorkSearchResult[]? availableVoiceWorks;
VoiceWorkSearchResult[]? upcomingVoiceWorks;
VoiceWorkSearchResult[]? announcedVoiceWorks;
protected override Task OnInitializedAsync()
{
_ = LoadAvailableVoiceWorksAsync();
_ = LoadUpcomingVoiceWorksAsync();
_ = LoadAnnouncedVoiceWorksAsync();
// availableVoiceWorks = await GetAvailableVoiceWorksAsync();
// upcomingVoiceWorks = await GetUpcomingVoiceWorksAsync();
return Task.CompletedTask;
}
private async Task LoadAvailableVoiceWorksAsync()
{
SearchVoiceWorksRequest request = new(
Options: new()
{
Criteria = new()
{
CircleStatus = CircleStatus.Favorited,
ReleaseDateStart = DateOnly.FromDateTime(DateTime.Today.AddDays(-6))
},
SortOptions =
[
new(VoiceWorkSortField.ReleaseDate, Application.Common.Search.SortDirection.Descending),
new(VoiceWorkSortField.Downloads, Application.Common.Search.SortDirection.Descending)
]
}
);
var result = await Client.SearchAsync(request);
availableVoiceWorks = result.Results.Items;
await InvokeAsync(StateHasChanged);
}
private async Task LoadUpcomingVoiceWorksAsync()
{
SearchVoiceWorksRequest request = new(
Options: new()
{
Criteria = new()
{
CircleStatus = CircleStatus.Favorited,
ScheduledReleaseDateEnd = DateOnly.FromDateTime(DateTime.Today.AddDays(8))
},
SortOptions =
[
new(VoiceWorkSortField.ScheduledReleaseDate, Application.Common.Search.SortDirection.Ascending),
new(VoiceWorkSortField.WishlistCount, Application.Common.Search.SortDirection.Descending)
]
}
);
var result = await Client.SearchAsync(request);
upcomingVoiceWorks = result.Results.Items;
await InvokeAsync(StateHasChanged);
}
private async Task LoadAnnouncedVoiceWorksAsync()
{
SearchVoiceWorksRequest request = new(
Options: new()
{
Criteria = new()
{
Status = Domain.Enums.VoiceWorkStatus.NewAndUpcoming
},
SortOptions =
[
new(VoiceWorkSortField.FavoriteCircle, Application.Common.Search.SortDirection.Ascending),
new(VoiceWorkSortField.WishlistCount, Application.Common.Search.SortDirection.Descending)
]
}
);
var result = await Client.SearchAsync(request);
announcedVoiceWorks = result.Results.Items;
await InvokeAsync(StateHasChanged);
}
}