diff --git a/ServerManagement/Components/Pages/Wizards/SetCityName.razor b/ServerManagement/Components/Pages/Wizards/SetCityName.razor
index 6e88347..1db2cf9 100644
--- a/ServerManagement/Components/Pages/Wizards/SetCityName.razor
+++ b/ServerManagement/Components/Pages/Wizards/SetCityName.razor
@@ -1,6 +1,9 @@
@page "/cityname"
+@using ServerManagement.StateStore
+
@inject NavigationManager NavigationManager
+@inject SessionStorage sessionStorage
City Name
@@ -12,17 +15,20 @@
}
-
-
-
-
-
-
-
+@if (server != null)
+{
+
+
+
+
+
+
+
+}
@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.";
- StateHasChanged();
- }
+ 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(server.City))
+ {
+ this.errorMessage = "City name is required.";
+ }
+ else
+ {
+ await this.sessionStorage.SetServerAsync(server);
+ NavigationManager.NavigateTo($"/serverstatus");
+ }
}
- if (string.IsNullOrWhiteSpace(cityName))
- {
- this.errorMessage = "City name is required.";
- return;
- }
-
- NavigationManager.NavigateTo($"/serverstatus?servername={ServerName}&cityname={cityName}");
}
}
\ No newline at end of file
diff --git a/ServerManagement/Components/Pages/Wizards/SetServerName.razor b/ServerManagement/Components/Pages/Wizards/SetServerName.razor
index 872243e..0ea9158 100644
--- a/ServerManagement/Components/Pages/Wizards/SetServerName.razor
+++ b/ServerManagement/Components/Pages/Wizards/SetServerName.razor
@@ -1,6 +1,9 @@
@page "/servername"
+@using ServerManagement.StateStore
+
@inject NavigationManager NavigationManager
+@inject SessionStorage sessionStorage
Server Name
@@ -12,31 +15,45 @@
}
-
-
-
-
-
-
-
+@if (server != null)
+{
+
+
+
+
+
+
+
+}
@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)
+ {
+ server = new Server();
+ StateHasChanged();
+ }
+ }
+
+ private async Task GoNext()
+ {
+ if (string.IsNullOrWhiteSpace(server?.Name))
{
this.errorMessage = "Server name is required.";
- return;
}
-
- NavigationManager.NavigateTo($"/cityname?servername={serverName}");
+ else
+ {
+ await sessionStorage.SetServerAsync(server);
+ NavigationManager.NavigateTo($"/cityname");
+ }
}
}
\ No newline at end of file
diff --git a/ServerManagement/Components/Pages/Wizards/SetStatus.razor b/ServerManagement/Components/Pages/Wizards/SetStatus.razor
index 3c4ebd2..f6995d2 100644
--- a/ServerManagement/Components/Pages/Wizards/SetStatus.razor
+++ b/ServerManagement/Components/Pages/Wizards/SetStatus.razor
@@ -1,76 +1,55 @@
@page "/serverstatus"
+@using ServerManagement.StateStore
+
@inject NavigationManager NavigationManager
+@inject SessionStorage sessionStorage
Server Status
-@if (!string.IsNullOrWhiteSpace(errorMessage))
+@if (server != null)
{
-
- @errorMessage
-
+
+
+ @if (server.IsOnline)
+ {
+
+ }
+ else
+ {
+
+ }
+
+
+
+
}
-
-
-
-
-
-
-
-
@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.";
- StateHasChanged();
- }
+ 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;
+ await sessionStorage.SetServerAsync(null);
+ ServersRepository.AddServer(server);
+ NavigationManager.NavigateTo($"/servers/back_from/{server?.City}");
}
- if (string.IsNullOrWhiteSpace(CityName))
- {
- this.errorMessage = "City name is required.";
- return;
- }
-
- var server = new Server
- {
- Name = this.ServerName,
- City = this.CityName,
- IsOnline = this.isOnline
- };
- ServersRepository.AddServer(server);
- NavigationManager.NavigateTo($"/servers/back_from/{CityName}");
}
}
\ No newline at end of file
diff --git a/ServerManagement/Components/StateStore/SessionStorage.cs b/ServerManagement/Components/StateStore/SessionStorage.cs
new file mode 100644
index 0000000..41e570a
--- /dev/null
+++ b/ServerManagement/Components/StateStore/SessionStorage.cs
@@ -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 GetServerAsync()
+ {
+ var result = await this.protectedSessionStorage.GetAsync("server");
+ if (result.Success)
+ {
+ return result.Value;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public async Task SetServerAsync(Server? server)
+ {
+ await this.protectedSessionStorage.SetAsync("server", server);
+ }
+ }
+}
diff --git a/ServerManagement/Components/_Imports.razor b/ServerManagement/Components/_Imports.razor
index 457bc73..c5ebe79 100644
--- a/ServerManagement/Components/_Imports.razor
+++ b/ServerManagement/Components/_Imports.razor
@@ -10,4 +10,5 @@
@using ServerManagement.Components
@using ServerManagement.Components.Controls
@using ServerManagement.Components.Controls.Generic
-@using ServerManagement.Models
\ No newline at end of file
+@using ServerManagement.Models
+@using ServerManagement.StateStore
\ No newline at end of file
diff --git a/ServerManagement/Program.cs b/ServerManagement/Program.cs
index a9fbd5e..7fb926a 100644
--- a/ServerManagement/Program.cs
+++ b/ServerManagement/Program.cs
@@ -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();
+
var app = builder.Build();
// Configure the HTTP request pipeline.