@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); } }