Files
jsmr/JSMR.UI.Blazor/Pages/Home.razor
Brian Bicknell 2418bd0a8f
All checks were successful
ci / build-test (push) Successful in 2m17s
ci / publish-image (push) Has been skipped
Updated search logic. More UI updates.
2025-11-17 21:05:55 -05:00

111 lines
3.7 KiB
Plaintext

@page "/"
@inject VoiceWorksClient Client
@using JSMR.Application.VoiceWorks.Queries.Search
@using JSMR.UI.Blazor.Components
@using JSMR.UI.Blazor.Services
<PageTitle>Home</PageTitle>
<MudTabs Elevation="2" Rounded="true" ApplyEffectsToContainer="true" PanelClass="pa-6">
<MudTabPanel Text="Available" Icon="@Icons.Material.Filled.Home">
<JProductCollection Products="availableVoiceWorks"></JProductCollection>
</MudTabPanel>
<MudTabPanel Text="Upcoming" Icon="@Icons.Material.Filled.ArrowUpward">
<JProductCollection Products="upcomingVoiceWorks"></JProductCollection>
</MudTabPanel>
<MudTabPanel Text="Announcements" Icon="@Icons.Material.Filled.Home">
<JProductCollection Products="announcedVoiceWorks"></JProductCollection>
</MudTabPanel>
</MudTabs>
@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);
}
}