Files
jsmr/JSMR.UI.Blazor/Pages/Home.razor
Brian Bicknell 840bec72d2
All checks were successful
ci / build-test (push) Successful in 1m35s
ci / publish-image (push) Has been skipped
Added Blazor projects. Minor API/core updates.
2025-11-07 22:18:04 -05:00

157 lines
4.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@page "/"
@inject VoiceWorksClient Client
@using JSMR.Application.VoiceWorks.Queries.Search
<PageTitle>Home</PageTitle>
<MudTabs Elevation="2" Rounded="true" ApplyEffectsToContainer="true" PanelClass="pa-6">
<MudTabPanel Text="Available" Icon="@Icons.Material.Filled.Home">
@if (availableVoiceWorks is null)
{
<p>Loading…</p>
}
else if (availableVoiceWorks.Length == 0)
{
<p>No results.</p>
}
else
{
<ul>
@foreach (var v in availableVoiceWorks)
{
<li>@v.ProductId @v.ProductName</li>
}
</ul>
}
</MudTabPanel>
<MudTabPanel Text="Upcoming" Icon="@Icons.Material.Filled.ArrowUpward">
@if (upcomingVoiceWorks is null)
{
<p>Loading…</p>
}
else if (upcomingVoiceWorks.Length == 0)
{
<p>No results.</p>
}
else
{
<ul>
@foreach (var v in upcomingVoiceWorks)
{
<li>@v.ProductId @v.ProductName</li>
}
</ul>
}
</MudTabPanel>
<MudTabPanel Text="Announcements" Icon="@Icons.Material.Filled.Home">
@if (announcedVoiceWorks is null)
{
<p>Loading…</p>
}
else if (announcedVoiceWorks.Length == 0)
{
<p>No results.</p>
}
else
{
<ul>
@foreach (var v in announcedVoiceWorks)
{
<li>@v.ProductId @v.ProductName</li>
}
</ul>
}
</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.Fa, 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);
}
}