1
0

Replace SessionStorage with ContainerStorage.

This is retained on the SignalR connection and is unique to the user.
This commit is contained in:
Kevin Matsubara 2025-03-30 22:32:22 +02:00
parent a25e767b29
commit 734a59f38b
5 changed files with 31 additions and 13 deletions

View File

@ -3,7 +3,7 @@
@using ServerManagement.StateStore @using ServerManagement.StateStore
@inject NavigationManager NavigationManager @inject NavigationManager NavigationManager
@inject SessionStorage sessionStorage @inject ContainerStorage containerStorage
<h3>City Name</h3> <h3>City Name</h3>
<br/> <br/>
@ -38,16 +38,16 @@
base.OnInitialized(); base.OnInitialized();
} }
protected override async Task OnAfterRenderAsync(bool firstRender) protected override void OnAfterRender(bool firstRender)
{ {
if (firstRender) if (firstRender)
{ {
this.server = await sessionStorage.GetServerAsync(); this.server = containerStorage.GetServer();
StateHasChanged(); StateHasChanged();
} }
} }
private async Task GoNext() private void GoNext()
{ {
if (server != null) if (server != null)
{ {
@ -57,7 +57,7 @@
} }
else else
{ {
await this.sessionStorage.SetServerAsync(server); containerStorage.SetServer(server);
NavigationManager.NavigateTo($"/serverstatus"); NavigationManager.NavigateTo($"/serverstatus");
} }
} }

View File

@ -3,7 +3,7 @@
@using ServerManagement.StateStore @using ServerManagement.StateStore
@inject NavigationManager NavigationManager @inject NavigationManager NavigationManager
@inject SessionStorage sessionStorage @inject ContainerStorage containerStorage
<h3>Server Name</h3> <h3>Server Name</h3>
<br/> <br/>
@ -44,7 +44,7 @@
} }
} }
private async Task GoNext() private void GoNext()
{ {
if (string.IsNullOrWhiteSpace(server?.Name)) if (string.IsNullOrWhiteSpace(server?.Name))
{ {
@ -52,7 +52,7 @@
} }
else else
{ {
await sessionStorage.SetServerAsync(server); containerStorage.SetServer(server);
NavigationManager.NavigateTo($"/cityname"); NavigationManager.NavigateTo($"/cityname");
} }
} }

View File

@ -3,7 +3,7 @@
@using ServerManagement.StateStore @using ServerManagement.StateStore
@inject NavigationManager NavigationManager @inject NavigationManager NavigationManager
@inject SessionStorage sessionStorage @inject ContainerStorage containerStorage
<h3>Server Status</h3> <h3>Server Status</h3>
<br/> <br/>
@ -34,20 +34,20 @@
base.OnInitialized(); base.OnInitialized();
} }
protected override async Task OnAfterRenderAsync(bool firstRender) protected override void OnAfterRender(bool firstRender)
{ {
if (firstRender) if (firstRender)
{ {
this.server = await sessionStorage.GetServerAsync(); this.server = containerStorage.GetServer();
StateHasChanged(); StateHasChanged();
} }
} }
private async Task Save() private void Save()
{ {
if (server != null) if (server != null)
{ {
await sessionStorage.SetServerAsync(null); containerStorage.SetServer(null);
ServersRepository.AddServer(server); ServersRepository.AddServer(server);
NavigationManager.NavigateTo($"/servers/back_from/{server?.City}"); NavigationManager.NavigateTo($"/servers/back_from/{server?.City}");
} }

View File

@ -0,0 +1,12 @@
using ServerManagement.Models;
namespace ServerManagement.StateStore
{
public class ContainerStorage
{
private Server _server = new Server();
public Server GetServer() { return _server; }
public void SetServer(Server? server) { _server = server; }
}
}

View File

@ -9,6 +9,12 @@ builder.Services.AddRazorComponents()
builder.Services.AddTransient<SessionStorage>(); builder.Services.AddTransient<SessionStorage>();
// Scoped lifespan is the same as the SignalR lifespan.
// Everything stored in the SignalR channel will be lost if that connection is broken.
// This means that the data in there, can only be used for the current user.
// For a WebAssembly, you want to use AddSingleton, so that everything is locally downloaded in the browser.
builder.Services.AddScoped<ContainerStorage>();
var app = builder.Build(); var app = builder.Build();
// Configure the HTTP request pipeline. // Configure the HTTP request pipeline.