58 lines
1.2 KiB
Plaintext
58 lines
1.2 KiB
Plaintext
@page "/search"
|
|
|
|
@inject ShogiService Service
|
|
@inject NavigationManager Navigation
|
|
|
|
<main class="SearchPage PrimaryTheme">
|
|
<h3>Find Sessions</h3>
|
|
|
|
<div class="search-content">
|
|
<GameBrowser SelectedSession="selectedSession" OnSessionSelected="HandleSessionSelected" />
|
|
|
|
<aside class="preview-panel PrimaryTheme ThemeVariant--Contrast">
|
|
@if (selectedSession is not null)
|
|
{
|
|
@if (previewSession is not null)
|
|
{
|
|
<GameBoardPresentation Session="previewSession"
|
|
Perspective="WhichPlayer.Player1"
|
|
UseSideboard="true" />
|
|
}
|
|
else
|
|
{
|
|
<p>Loading preview...</p>
|
|
}
|
|
|
|
<div class="preview-actions">
|
|
<button @onclick="JoinGame">Join Game</button>
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<p class="no-selection">Select a game to preview</p>
|
|
}
|
|
</aside>
|
|
</div>
|
|
</main>
|
|
|
|
@code {
|
|
private SessionMetadata? selectedSession;
|
|
private Session? previewSession;
|
|
|
|
private async Task HandleSessionSelected(SessionMetadata session)
|
|
{
|
|
selectedSession = session;
|
|
previewSession = null;
|
|
|
|
previewSession = await Service.GetSession(session.SessionId.ToString());
|
|
}
|
|
|
|
private void JoinGame()
|
|
{
|
|
if (selectedSession is not null)
|
|
{
|
|
Navigation.NavigateTo($"/play/{selectedSession.SessionId}");
|
|
}
|
|
}
|
|
}
|