From 71ffcce06bc4c81ad58f86e5c57698fcc77f9d43 Mon Sep 17 00:00:00 2001 From: Toutsu Date: Thu, 28 May 2026 16:07:09 +0300 Subject: [PATCH] fix(web): add try/finally, concurrency guard, accessible label, registration link to showcase --- .../Components/Pages/Showcase.razor | 43 +++++++++++++------ 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/src/GmRelay.Web/Components/Pages/Showcase.razor b/src/GmRelay.Web/Components/Pages/Showcase.razor index 7acdddc..c33b485 100644 --- a/src/GmRelay.Web/Components/Pages/Showcase.razor +++ b/src/GmRelay.Web/Components/Pages/Showcase.razor @@ -36,8 +36,8 @@
- Система - @foreach (var system in Enum.GetValues()) { @@ -134,7 +134,7 @@ else Подробнее @if (session.AllowDirectRegistration) { - + Записаться }
@@ -318,22 +318,37 @@ else private async Task LoadAsync() { loading = true; - page = 1; - sessions.Clear(); - var results = await SessionStore.GetShowcaseSessionsAsync(filter, page, PageSize); - sessions.AddRange(results); - hasMore = results.Count == PageSize; - loading = false; + try + { + page = 1; + sessions.Clear(); + var results = await SessionStore.GetShowcaseSessionsAsync(filter, page, PageSize); + sessions.AddRange(results); + hasMore = results.Count == PageSize; + } + finally + { + loading = false; + } } private async Task LoadMoreAsync() { + if (loading) + return; + loading = true; - page++; - var results = await SessionStore.GetShowcaseSessionsAsync(filter, page, PageSize); - sessions.AddRange(results); - hasMore = results.Count == PageSize; - loading = false; + try + { + page++; + var results = await SessionStore.GetShowcaseSessionsAsync(filter, page, PageSize); + sessions.AddRange(results); + hasMore = results.Count == PageSize; + } + finally + { + loading = false; + } } private async Task OnFilterChanged()