Use ProtectedSessionStorage to for add server wizard.
And replace the URL query string with it.
This commit is contained in:
parent
28c3449e24
commit
a25e767b29
@ -1,6 +1,9 @@
|
||||
@page "/cityname"
|
||||
|
||||
@using ServerManagement.StateStore
|
||||
|
||||
@inject NavigationManager NavigationManager
|
||||
@inject SessionStorage sessionStorage
|
||||
|
||||
<h3>City Name</h3>
|
||||
<br/>
|
||||
@ -12,17 +15,20 @@
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (server != null)
|
||||
{
|
||||
<FieldComponent Label="City name">
|
||||
<Control>
|
||||
<input type="text" @bind-value="cityName" class="form-control"></input>
|
||||
<input type="text" @bind-value="server.City" class="form-control"></input>
|
||||
</Control>
|
||||
</FieldComponent>
|
||||
<br/>
|
||||
<button type="button" class="btn btn-primary" @onclick="GoNext">Next</button>
|
||||
}
|
||||
|
||||
@code {
|
||||
private Server? server;
|
||||
private string? errorMessage;
|
||||
private string? cityName;
|
||||
|
||||
[SupplyParameterFromQuery]
|
||||
private string? ServerName { get; set; }
|
||||
@ -32,31 +38,28 @@
|
||||
base.OnInitialized();
|
||||
}
|
||||
|
||||
protected override void OnAfterRender(bool firstRender)
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
if (firstRender)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(ServerName))
|
||||
{
|
||||
this.errorMessage = "Server name was not provided.";
|
||||
this.server = await sessionStorage.GetServerAsync();
|
||||
StateHasChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void GoNext()
|
||||
private async Task GoNext()
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(ServerName))
|
||||
if (server != null)
|
||||
{
|
||||
this.errorMessage = "Server name is required.";
|
||||
return;
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(cityName))
|
||||
if (string.IsNullOrWhiteSpace(server.City))
|
||||
{
|
||||
this.errorMessage = "City name is required.";
|
||||
return;
|
||||
}
|
||||
|
||||
NavigationManager.NavigateTo($"/serverstatus?servername={ServerName}&cityname={cityName}");
|
||||
else
|
||||
{
|
||||
await this.sessionStorage.SetServerAsync(server);
|
||||
NavigationManager.NavigateTo($"/serverstatus");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,9 @@
|
||||
@page "/servername"
|
||||
|
||||
@using ServerManagement.StateStore
|
||||
|
||||
@inject NavigationManager NavigationManager
|
||||
@inject SessionStorage sessionStorage
|
||||
|
||||
<h3>Server Name</h3>
|
||||
<br/>
|
||||
@ -12,31 +15,45 @@
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (server != null)
|
||||
{
|
||||
<FieldComponent Label="Server name">
|
||||
<Control>
|
||||
<input type="text" @bind-value="serverName" class="form-control"></input>
|
||||
<input type="text" @bind-value="server.Name" class="form-control"></input>
|
||||
</Control>
|
||||
</FieldComponent>
|
||||
<br/>
|
||||
<button type="button" class="btn btn-primary" @onclick="GoNext">Next</button>
|
||||
}
|
||||
|
||||
@code {
|
||||
private Server? server;
|
||||
private string? errorMessage;
|
||||
private string? serverName;
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
base.OnInitialized();
|
||||
}
|
||||
|
||||
private void GoNext()
|
||||
protected override void OnAfterRender(bool firstRender)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(serverName))
|
||||
if (firstRender)
|
||||
{
|
||||
this.errorMessage = "Server name is required.";
|
||||
return;
|
||||
server = new Server();
|
||||
StateHasChanged();
|
||||
}
|
||||
}
|
||||
|
||||
NavigationManager.NavigateTo($"/cityname?servername={serverName}");
|
||||
private async Task GoNext()
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(server?.Name))
|
||||
{
|
||||
this.errorMessage = "Server name is required.";
|
||||
}
|
||||
else
|
||||
{
|
||||
await sessionStorage.SetServerAsync(server);
|
||||
NavigationManager.NavigateTo($"/cityname");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,76 +1,55 @@
|
||||
@page "/serverstatus"
|
||||
|
||||
@using ServerManagement.StateStore
|
||||
|
||||
@inject NavigationManager NavigationManager
|
||||
@inject SessionStorage sessionStorage
|
||||
|
||||
<h3>Server Status</h3>
|
||||
<br/>
|
||||
|
||||
@if (!string.IsNullOrWhiteSpace(errorMessage))
|
||||
@if (server != null)
|
||||
{
|
||||
<div class="alert alert-danger">
|
||||
@errorMessage
|
||||
</div>
|
||||
}
|
||||
|
||||
<FieldComponent Label="Server status online">
|
||||
<Control>
|
||||
<input type="checkbox" @bind-value="isOnline" class="form-check-input"></input>
|
||||
@if (server.IsOnline)
|
||||
{
|
||||
<input type="checkbox" @bind-value="server.IsOnline" class="form-check-input"></input>
|
||||
}
|
||||
else
|
||||
{
|
||||
<input type="checkbox" @bind-value="server.IsOnline" class="form-check-input" checked></input>
|
||||
}
|
||||
</Control>
|
||||
</FieldComponent>
|
||||
<br/>
|
||||
<button type="button" class="btn btn-primary" @onclick="Save">Save</button>
|
||||
}
|
||||
|
||||
@code {
|
||||
private string? errorMessage;
|
||||
private bool isOnline;
|
||||
[SupplyParameterFromQuery]
|
||||
private string? CityName { get; set; }
|
||||
|
||||
[SupplyParameterFromQuery]
|
||||
private string? ServerName { get; set; }
|
||||
private Server? server;
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
base.OnInitialized();
|
||||
}
|
||||
|
||||
protected override void OnAfterRender(bool firstRender)
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
if (firstRender)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(ServerName))
|
||||
{
|
||||
this.errorMessage = "Server name was not provided.";
|
||||
StateHasChanged();
|
||||
}
|
||||
else if (string.IsNullOrWhiteSpace(CityName))
|
||||
{
|
||||
this.errorMessage = "City name was not provided.";
|
||||
this.server = await sessionStorage.GetServerAsync();
|
||||
StateHasChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Save()
|
||||
private async Task Save()
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(ServerName))
|
||||
if (server != null)
|
||||
{
|
||||
this.errorMessage = "Server name is required.";
|
||||
return;
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(CityName))
|
||||
{
|
||||
this.errorMessage = "City name is required.";
|
||||
return;
|
||||
}
|
||||
|
||||
var server = new Server
|
||||
{
|
||||
Name = this.ServerName,
|
||||
City = this.CityName,
|
||||
IsOnline = this.isOnline
|
||||
};
|
||||
await sessionStorage.SetServerAsync(null);
|
||||
ServersRepository.AddServer(server);
|
||||
NavigationManager.NavigateTo($"/servers/back_from/{CityName}");
|
||||
NavigationManager.NavigateTo($"/servers/back_from/{server?.City}");
|
||||
}
|
||||
}
|
||||
}
|
||||
33
ServerManagement/Components/StateStore/SessionStorage.cs
Normal file
33
ServerManagement/Components/StateStore/SessionStorage.cs
Normal file
@ -0,0 +1,33 @@
|
||||
using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage;
|
||||
using ServerManagement.Models;
|
||||
|
||||
namespace ServerManagement.StateStore
|
||||
{
|
||||
public class SessionStorage
|
||||
{
|
||||
private readonly ProtectedSessionStorage protectedSessionStorage;
|
||||
|
||||
public SessionStorage(ProtectedSessionStorage protectedSessionStorage)
|
||||
{
|
||||
this.protectedSessionStorage = protectedSessionStorage;
|
||||
}
|
||||
|
||||
public async Task<Server?> GetServerAsync()
|
||||
{
|
||||
var result = await this.protectedSessionStorage.GetAsync<Server>("server");
|
||||
if (result.Success)
|
||||
{
|
||||
return result.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task SetServerAsync(Server? server)
|
||||
{
|
||||
await this.protectedSessionStorage.SetAsync("server", server);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -11,3 +11,4 @@
|
||||
@using ServerManagement.Components.Controls
|
||||
@using ServerManagement.Components.Controls.Generic
|
||||
@using ServerManagement.Models
|
||||
@using ServerManagement.StateStore
|
||||
@ -1,4 +1,5 @@
|
||||
using ServerManagement.Components;
|
||||
using ServerManagement.StateStore;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
@ -6,6 +7,8 @@ var builder = WebApplication.CreateBuilder(args);
|
||||
builder.Services.AddRazorComponents()
|
||||
.AddInteractiveServerComponents(); // Provides server interactivity.
|
||||
|
||||
builder.Services.AddTransient<SessionStorage>();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
// Configure the HTTP request pipeline.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user