Skip to content

Commit b867fa7

Browse files
Merge pull request #2 from nekotoka/refactor/device-selection
Changed user device detection and selection logic
2 parents 03a3c8e + da9d269 commit b867fa7

1 file changed

Lines changed: 29 additions & 11 deletions

File tree

Program.cs

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,6 @@ async Task ScanForDevices() {
5757
await client.StopScanningAsync();
5858
}
5959

60-
// Scan for devices before we get to the main menu.
61-
await ScanForDevices();
62-
6360
// Now we define the device control menus. After we've scanned for
6461
// devices, the user can use this menu to select a device, then
6562
// select an action for that device to take.
@@ -73,24 +70,45 @@ async Task ControlDevice() {
7370
// (which is why we can't just use an array index).
7471

7572
// Of course, if we don't have any devices yet, that's not gonna work.
76-
if (!client.Devices.Any()) {
77-
Console.WriteLine("No devices available. Please scan for a device.");
78-
return;
73+
while (true)
74+
{
75+
if (!client.Devices.Any())
76+
{
77+
// Scan for devices before we get to the main menu.
78+
await ScanForDevices();
79+
Console.WriteLine("No devices available. Please scan for a device.");
80+
}
81+
else
82+
{
83+
break;
84+
}
7985
}
8086

8187
var options = new List<uint>();
82-
8388
foreach (var dev in client.Devices) {
8489
Console.WriteLine($"{dev.Index}. {dev.Name}");
8590
options.Add(dev.Index);
8691
}
92+
8793
Console.WriteLine("Choose a device: ");
88-
if (!uint.TryParse(Console.ReadLine(), out var deviceChoice) ||
89-
!options.Contains(deviceChoice)) {
90-
Console.WriteLine("Invalid choice");
91-
return;
94+
uint deviceChoice;
95+
while (true)
96+
{
97+
var userinput = Console.ReadLine();
98+
var validchoice = uint.TryParse(userinput, out deviceChoice);
99+
if (!validchoice || !options.Contains(deviceChoice))
100+
{
101+
Console.WriteLine("Invalid choice, Try again:");
102+
}
103+
else
104+
{
105+
var selectedDevice = client.Devices.First(d => d.Index == deviceChoice);
106+
Console.WriteLine($"Device {selectedDevice.Name} selected");
107+
break;
108+
}
92109
}
93110

111+
94112
var device = client.Devices.First(dev => dev.Index == deviceChoice);
95113

96114

0 commit comments

Comments
 (0)