@using BeaconLib @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; } bool BeaconActive = false; bool OfflineModeAvailable = false; string ServerAddress = String.Empty; AuthRequest Model = new(); List DiscoveredServers = new(); Models.Settings Settings = SettingService.GetSettings(); Probe Probe; protected override async Task OnInitializedAsync() { OfflineModeAvailable = await AuthenticationService.OfflineModeAvailableAsync(); ActivateBeacon(); } async Task SelectServer(string serverAddress) { Probe.Stop(); Probe.Dispose(); BeaconActive = false; if (OnSelected.HasDelegate) await OnSelected.InvokeAsync(serverAddress); await InvokeAsync(StateHasChanged); } async Task ActivateBeacon() { Probe = new Probe("LANCommander"); Probe.BeaconsUpdated += (beacons) => { foreach (var beacon in beacons) { if (!String.IsNullOrWhiteSpace(beacon.Data)) { var server = new DiscoveredServer(beacon.Data, beacon.Address); if (!DiscoveredServers.Any(s => s.Address.ToString() == server.Address.ToString())) DiscoveredServers.Add(server); } } }; BeaconActive = true; Probe.Start(); await Task.Delay(10000); Probe.Stop(); Probe.Dispose(); BeaconActive = false; await InvokeAsync(StateHasChanged); } }