62 lines
2.2 KiB
Plaintext
62 lines
2.2 KiB
Plaintext
@implements IDisposable
|
|
@inject SocialRealtimeService Realtime
|
|
@inject NavigationManager Navigation
|
|
|
|
@if (Realtime.IncomingPlayInvite is not null)
|
|
{
|
|
<div class="play-overlay">
|
|
<div class="modal-backdrop"></div>
|
|
<section class="modal-card play-overlay-card" role="dialog" aria-modal="true" aria-labelledby="playInviteTitle">
|
|
<div class="modal-head">
|
|
<div>
|
|
<p class="eyebrow">Invitation de partie</p>
|
|
<h2 id="playInviteTitle">@Realtime.IncomingPlayInvite.SenderDisplayName veut jouer</h2>
|
|
</div>
|
|
</div>
|
|
|
|
<p class="play-overlay-copy">
|
|
@Realtime.IncomingPlayInvite.SenderDisplayName te propose une partie ChessCubing et te place cote @RecipientColorLabel.
|
|
</p>
|
|
|
|
<div class="play-overlay-actions">
|
|
<button class="button secondary small" type="button" @onclick="AcceptAsync">Accepter</button>
|
|
<button class="button ghost small" type="button" @onclick="DeclineAsync">Refuser</button>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
}
|
|
|
|
@code {
|
|
private string RecipientColorLabel
|
|
=> string.Equals(Realtime.IncomingPlayInvite?.RecipientColor, "white", StringComparison.Ordinal)
|
|
? "blanc"
|
|
: "noir";
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
Realtime.Changed += HandleRealtimeChanged;
|
|
await Realtime.EnsureStartedAsync();
|
|
}
|
|
|
|
private void HandleRealtimeChanged()
|
|
=> _ = InvokeAsync(StateHasChanged);
|
|
|
|
private async Task AcceptAsync()
|
|
{
|
|
await Realtime.RespondToIncomingPlayInviteAsync(accept: true);
|
|
|
|
var currentPath = new Uri(Navigation.Uri).AbsolutePath.Trim('/');
|
|
if (!string.Equals(currentPath, "application", StringComparison.OrdinalIgnoreCase) &&
|
|
!string.Equals(currentPath, "application.html", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
Navigation.NavigateTo("/application.html");
|
|
}
|
|
}
|
|
|
|
private Task DeclineAsync()
|
|
=> Realtime.RespondToIncomingPlayInviteAsync(accept: false);
|
|
|
|
public void Dispose()
|
|
=> Realtime.Changed -= HandleRealtimeChanged;
|
|
}
|