Allow UI to delete sessions
This commit is contained in:
75
Shogi.UI/Pages/Play/GameBrowserEntry.razor
Normal file
75
Shogi.UI/Pages/Play/GameBrowserEntry.razor
Normal file
@@ -0,0 +1,75 @@
|
||||
@using Shogi.Contracts.Types
|
||||
|
||||
@inject ShogiApi Api
|
||||
|
||||
<gameBrowserEntry>
|
||||
<AuthorizeView>
|
||||
@if (showDeletePrompt)
|
||||
{
|
||||
<modal class="PrimaryTheme ThemeVariant--Contrast">
|
||||
<div style="display: flex; gap: 1rem; justify-content: flex-end;">
|
||||
@if (showDeleteError)
|
||||
{
|
||||
<p style="color: darkred;">An error occurred.</p>
|
||||
<div style="flex: 1;" />
|
||||
<button @onclick="HideModal">Cancel</button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<p>Do you wish to delete this session?</p>
|
||||
<div style="flex: 1;" />
|
||||
<button @onclick="HideModal">No</button>
|
||||
<button @onclick="DeleteSession">Yes</button>
|
||||
}
|
||||
</div>
|
||||
</modal>
|
||||
}
|
||||
|
||||
<div>
|
||||
<a href="play/@Session.SessionId">@Session.Player1</a>
|
||||
</div>
|
||||
@if (string.IsNullOrEmpty(Session.Player2))
|
||||
{
|
||||
<span>1 / 2</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span>Full</span>
|
||||
}
|
||||
@if (context.User.Identity?.Name == Session.Player1)
|
||||
{
|
||||
<IconButton OnClick="() => showDeletePrompt = true">
|
||||
<TrashCanIcon />
|
||||
</IconButton>
|
||||
}
|
||||
</AuthorizeView>
|
||||
</gameBrowserEntry>
|
||||
|
||||
@code {
|
||||
[Parameter][EditorRequired] public SessionMetadata Session { get; set; } = default!;
|
||||
[Parameter][EditorRequired] public EventCallback OnSessionDeleted { get; set; }
|
||||
private bool showDeletePrompt = false;
|
||||
private bool showDeleteError = false;
|
||||
|
||||
|
||||
void HideModal()
|
||||
{
|
||||
showDeletePrompt = showDeleteError = false;
|
||||
}
|
||||
|
||||
async Task DeleteSession()
|
||||
{
|
||||
var response = await Api.DeleteSession(Session.SessionId);
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
showDeletePrompt = false;
|
||||
showDeleteError = false;
|
||||
await OnSessionDeleted.InvokeAsync();
|
||||
}
|
||||
else
|
||||
{
|
||||
showDeletePrompt = true;
|
||||
showDeleteError = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user