fix(web): add try/finally, concurrency guard, accessible label, registration link to showcase

This commit is contained in:
2026-05-28 16:07:09 +03:00
parent 72f43dbef2
commit 71ffcce06b
+29 -14
View File
@@ -36,8 +36,8 @@
</div> </div>
<div class="showcase-filter-group"> <div class="showcase-filter-group">
<span class="showcase-filter-label">Система</span> <label class="showcase-filter-label" for="system-filter">Система</label>
<select class="gm-form-control showcase-filter-select" @onchange="OnSystemChanged"> <select id="system-filter" class="gm-form-control showcase-filter-select" aria-label="Система" @onchange="OnSystemChanged">
<option value="" selected="@(filter.System is null)">Любая</option> <option value="" selected="@(filter.System is null)">Любая</option>
@foreach (var system in Enum.GetValues<GameSystem>()) @foreach (var system in Enum.GetValues<GameSystem>())
{ {
@@ -134,7 +134,7 @@ else
<a class="btn-gm btn-gm-outline" href="@($"/s/{session.Id}")">Подробнее</a> <a class="btn-gm btn-gm-outline" href="@($"/s/{session.Id}")">Подробнее</a>
@if (session.AllowDirectRegistration) @if (session.AllowDirectRegistration)
{ {
<button class="btn-gm btn-gm-primary">Записаться</button> <a class="btn-gm btn-gm-primary" href="@($"/s/{session.Id}?register=1")">Записаться</a>
} }
</div> </div>
</div> </div>
@@ -318,22 +318,37 @@ else
private async Task LoadAsync() private async Task LoadAsync()
{ {
loading = true; loading = true;
page = 1; try
sessions.Clear(); {
var results = await SessionStore.GetShowcaseSessionsAsync(filter, page, PageSize); page = 1;
sessions.AddRange(results); sessions.Clear();
hasMore = results.Count == PageSize; var results = await SessionStore.GetShowcaseSessionsAsync(filter, page, PageSize);
loading = false; sessions.AddRange(results);
hasMore = results.Count == PageSize;
}
finally
{
loading = false;
}
} }
private async Task LoadMoreAsync() private async Task LoadMoreAsync()
{ {
if (loading)
return;
loading = true; loading = true;
page++; try
var results = await SessionStore.GetShowcaseSessionsAsync(filter, page, PageSize); {
sessions.AddRange(results); page++;
hasMore = results.Count == PageSize; var results = await SessionStore.GetShowcaseSessionsAsync(filter, page, PageSize);
loading = false; sessions.AddRange(results);
hasMore = results.Count == PageSize;
}
finally
{
loading = false;
}
} }
private async Task OnFilterChanged() private async Task OnFilterChanged()