feat(web): add public master profiles
PR Checks / test-and-build (pull_request) Successful in 12m32s

Add sanitized public GM profiles with publication controls, public /gm/{slug} pages, and links from public game surfaces.

Bump version -> 3.5.0
This commit is contained in:
2026-05-29 00:08:14 +03:00
parent d81564c308
commit 0c1d3abd7e
21 changed files with 980 additions and 39 deletions
@@ -42,6 +42,13 @@ else if (session is not null)
<span class="status-badge @GetStatusClass(session.Status)">@TranslateStatus(session.Status)</span>
<h1>@session.Title</h1>
<p>@session.GroupName</p>
@if (!string.IsNullOrWhiteSpace(session.MasterProfileSlug))
{
<div class="public-master-link">
<span>Мастер</span>
<a href="@MasterProfilePath(session.MasterProfileSlug)">@(session.MasterDisplayName ?? "Профиль мастера")</a>
</div>
}
<div class="session-badges">
@if (!string.IsNullOrWhiteSpace(session.System))
{
@@ -101,6 +108,10 @@ else if (session is not null)
{
<a class="btn-gm btn-gm-primary" href="@($"/club/{session.GroupSlug}")">Расписание клуба</a>
}
@if (!string.IsNullOrWhiteSpace(session.MasterProfileSlug))
{
<a class="btn-gm btn-gm-outline" href="@MasterProfilePath(session.MasterProfileSlug)">Мастер</a>
}
<a class="btn-gm btn-gm-outline" href="@PublicSessionUrl" target="_blank" rel="noopener noreferrer">Ссылка на сессию</a>
@if (session.AllowDirectRegistration)
{
@@ -129,6 +140,8 @@ else if (session is not null)
private string PublicSessionUrl => Navigation.ToAbsoluteUri($"/s/{SessionId}").ToString();
private static string MasterProfilePath(string slug) => $"/gm/{slug}";
protected override async Task OnParametersSetAsync()
{
loaded = false;