@using System.Threading;
| Name |
City |
Status |
People online |
|
|
@code {
private List? servers;
private Timer? Timer;
[Parameter]
public string? CityName { get; set; }
[Parameter]
public string SearchFilter { get; set; } = "";
public override Task SetParametersAsync(ParameterView parameters)
{
// Only trigger OnParametersSet if the parameter matches and has actually changed.
// This saves expensive calls to the data repository.
if (parameters.TryGetValue("CityName", out var cityName))
{
if (cityName != CityName)
{
base.SetParametersAsync(parameters);
}
}
if (parameters.TryGetValue("SearchFilter", out var searchFilter))
{
if (searchFilter != SearchFilter)
{
base.SetParametersAsync(parameters);
}
}
return Task.CompletedTask;
}
protected override void OnParametersSet()
{
if (string.IsNullOrWhiteSpace(this.SearchFilter))
{
servers = ServersRepository.GetServersByCity(CityName ?? "Eindhoven");
}
else
{
servers = ServersRepository.SearchServers(SearchFilter);
}
}
protected override void OnAfterRender(bool firstRender)
{
base.OnAfterRender(firstRender);
if (firstRender)
{
if (string.IsNullOrWhiteSpace(this.SearchFilter))
{
servers = ServersRepository.GetServersByCity(CityName ?? "Eindhoven");
}
else
{
servers = ServersRepository.SearchServers(SearchFilter);
}
// Render the component again by letting it know the state changed.
StateHasChanged();
Timer = new Timer(_ => {
base.InvokeAsync(StateHasChanged);
}, null, 4000, 4000);
}
}
}