@using LANCommander.Launcher.Models
@using LANCommander.SDK.Models
@using ListItem = AntDesign.ListItem
@inject NavigationManager NavigationManager
@inject SDK.Client Client
@inject AuthenticationService AuthenticationService
Connect
@if (BeaconActive)
{
}
else
{
}
@code {
[Parameter] public EventCallback OnSelected { get; set; }
[Parameter] public bool Connecting { get; set; } = false;
bool BeaconActive = false;
bool OfflineModeAvailable = false;
string ServerAddress = String.Empty;
AuthRequest Model = new();
List DiscoveredServers = new();
Models.Settings Settings = SettingService.GetSettings();
protected override async Task OnInitializedAsync()
{
OfflineModeAvailable = await AuthenticationService.OfflineModeAvailableAsync();
Client.Beacon.OnBeaconResponse += OnBeaconResponse;
ActivateBeacon();
}
private void OnBeaconResponse(object sender, BeaconResponseArgs e)
{
var discoveredServer = new DiscoveredServer(e.Message, e.EndPoint);
if (DiscoveredServers.All(s => s.Address != discoveredServer.Address))
DiscoveredServers.Add(discoveredServer);
}
async Task SelectServer(string serverAddress)
{
await Client.Beacon.StopProbeAsync();
BeaconActive = false;
if (OnSelected.HasDelegate)
await OnSelected.InvokeAsync(serverAddress);
}
async Task ActivateBeacon()
{
BeaconActive = true;
await Client.Beacon.StartProbeAsync();
await Task.Delay(10000);
await Client.Beacon.StopProbeAsync();
BeaconActive = false;
await InvokeAsync(StateHasChanged);
}
}