fix(web): add try/finally, concurrency guard, accessible label, registration link to showcase
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user