Skip to content

Commit d1af830

Browse files
committed
Prevent null ref when numpad profile is open manually
1 parent e17f3d6 commit d1af830

File tree

3 files changed

+60
-47
lines changed

3 files changed

+60
-47
lines changed

FlightStreamDeck.Logics/Actions/NumberAction.cs

+11-8
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public Number8Action(IImageLogic imageLogic) : base(imageLogic) { }
3030

3131
protected override async Task OnWillAppear(ActionEventArgs<AppearancePayload> args)
3232
{
33-
if (DeckLogic.NumpadParams.Type == "XPDR")
33+
if (DeckLogic.NumpadParams?.Type == "XPDR")
3434
{
3535
await SetImageAsync(null);
3636
}
@@ -47,7 +47,7 @@ public Number9Action(IImageLogic imageLogic) : base(imageLogic) { }
4747

4848
protected override async Task OnWillAppear(ActionEventArgs<AppearancePayload> args)
4949
{
50-
if (DeckLogic.NumpadParams.Type == "XPDR")
50+
if (DeckLogic.NumpadParams?.Type == "XPDR")
5151
{
5252
await SetImageAsync(null);
5353
}
@@ -78,14 +78,17 @@ protected override async Task OnWillAppear(ActionEventArgs<AppearancePayload> ar
7878

7979
protected override Task OnKeyDown(ActionEventArgs<KeyPayload> args)
8080
{
81-
var tokens = args.Action.Split(".");
82-
var number = int.Parse(tokens[^1]);
81+
if (DeckLogic.NumpadParams != null)
82+
{
83+
var tokens = args.Action.Split(".");
84+
var number = int.Parse(tokens[^1]);
8385

84-
if (DeckLogic.NumpadParams.Type == "XPDR" && number > 7) return Task.CompletedTask;
86+
if (DeckLogic.NumpadParams.Type == "XPDR" && number > 7) return Task.CompletedTask;
8587

86-
if (DeckLogic.NumpadParams.Value.Length < DeckLogic.NumpadParams.MinPattern.Length)
87-
{
88-
DeckLogic.NumpadParams.Value += number.ToString();
88+
if (DeckLogic.NumpadParams.Value.Length < DeckLogic.NumpadParams.MinPattern.Length)
89+
{
90+
DeckLogic.NumpadParams.Value += number.ToString();
91+
}
8992
}
9093

9194
return Task.CompletedTask;

FlightStreamDeck.Logics/Actions/NumberDisplayAction.cs

+12-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using SharpDeck;
22
using SharpDeck.Events.Received;
33
using SharpDeck.Manifest;
4+
using System;
45
using System.Threading.Tasks;
56
using System.Timers;
67

@@ -38,11 +39,18 @@ private async void Timer_Elapsed(object sender, ElapsedEventArgs e)
3839
}
3940
}
4041

41-
protected override Task OnWillAppear(ActionEventArgs<AppearancePayload> args)
42+
protected override async Task OnWillAppear(ActionEventArgs<AppearancePayload> args)
4243
{
43-
lastValue = null;
44-
timer.Start();
45-
return Task.CompletedTask;
44+
if (DeckLogic.NumpadParams == null)
45+
{
46+
// User open the profile on their own
47+
await ShowAlertAsync();
48+
}
49+
else
50+
{
51+
lastValue = null;
52+
timer.Start();
53+
}
4654
}
4755

4856
protected override Task OnWillDisappear(ActionEventArgs<AppearancePayload> args)

FlightStreamDeck.Logics/Actions/NumberFunctionAction.cs

+37-35
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class NumberTransferAction : NumberFunctionAction
1919
{
2020
protected override async Task OnWillAppear(ActionEventArgs<AppearancePayload> args)
2121
{
22-
if (DeckLogic.NumpadParams.Type == "XPDR")
22+
if (DeckLogic.NumpadParams?.Type == "XPDR")
2323
{
2424
await SetTitleAsync("VFR");
2525
}
@@ -36,49 +36,51 @@ public class NumberFunctionAction : StreamDeckAction
3636
{
3737
protected override async Task OnKeyDown(ActionEventArgs<KeyPayload> args)
3838
{
39-
var param = new RegistrationParameters(Environment.GetCommandLineArgs()[1..]);
40-
switch (args.Action)
39+
if (DeckLogic.NumpadParams != null)
4140
{
42-
case "tech.flighttracker.streamdeck.number.enter":
43-
if (DeckLogic.NumpadTcs != null)
44-
{
45-
DeckLogic.NumpadTcs.SetResult((DeckLogic.NumpadParams.Value, false));
46-
}
47-
await StreamDeck.SwitchToProfileAsync(param.PluginUUID, args.Device, null);
48-
break;
49-
case "tech.flighttracker.streamdeck.number.cancel":
50-
if (DeckLogic.NumpadTcs != null)
51-
{
52-
DeckLogic.NumpadTcs.SetResult((null, false));
53-
}
54-
await StreamDeck.SwitchToProfileAsync(param.PluginUUID, args.Device, null);
55-
break;
56-
case "tech.flighttracker.streamdeck.number.transfer":
57-
if (DeckLogic.NumpadParams.Type == "XPDR")
58-
{
59-
DeckLogic.NumpadParams.Value = "1200";
41+
var param = new RegistrationParameters(Environment.GetCommandLineArgs()[1..]);
42+
switch (args.Action)
43+
{
44+
case "tech.flighttracker.streamdeck.number.enter":
6045
if (DeckLogic.NumpadTcs != null)
6146
{
6247
DeckLogic.NumpadTcs.SetResult((DeckLogic.NumpadParams.Value, false));
6348
}
64-
}
65-
else
66-
{
49+
await StreamDeck.SwitchToProfileAsync(param.PluginUUID, args.Device, null);
50+
break;
51+
case "tech.flighttracker.streamdeck.number.cancel":
6752
if (DeckLogic.NumpadTcs != null)
6853
{
69-
DeckLogic.NumpadTcs.SetResult((DeckLogic.NumpadParams.Value, true));
54+
DeckLogic.NumpadTcs.SetResult((null, false));
7055
}
71-
}
72-
await StreamDeck.SwitchToProfileAsync(param.PluginUUID, args.Device, null);
73-
break;
74-
case "tech.flighttracker.streamdeck.number.backspace":
75-
if (DeckLogic.NumpadParams.Value.Length > 0)
76-
{
77-
DeckLogic.NumpadParams.Value = DeckLogic.NumpadParams.Value[..^1];
78-
}
79-
break;
56+
await StreamDeck.SwitchToProfileAsync(param.PluginUUID, args.Device, null);
57+
break;
58+
case "tech.flighttracker.streamdeck.number.transfer":
59+
if (DeckLogic.NumpadParams.Type == "XPDR")
60+
{
61+
DeckLogic.NumpadParams.Value = "1200";
62+
if (DeckLogic.NumpadTcs != null)
63+
{
64+
DeckLogic.NumpadTcs.SetResult((DeckLogic.NumpadParams.Value, false));
65+
}
66+
}
67+
else
68+
{
69+
if (DeckLogic.NumpadTcs != null)
70+
{
71+
DeckLogic.NumpadTcs.SetResult((DeckLogic.NumpadParams.Value, true));
72+
}
73+
}
74+
await StreamDeck.SwitchToProfileAsync(param.PluginUUID, args.Device, null);
75+
break;
76+
case "tech.flighttracker.streamdeck.number.backspace":
77+
if (DeckLogic.NumpadParams.Value.Length > 0)
78+
{
79+
DeckLogic.NumpadParams.Value = DeckLogic.NumpadParams.Value[..^1];
80+
}
81+
break;
82+
}
8083
}
81-
8284
}
8385
}
8486
}

0 commit comments

Comments
 (0)