fix(ui): avoid int CommandParameter cast crash in usage monitor presets
RelayCommand<int> casts its object parameter directly rather than
converting it, so a string CommandParameter ("7"/"30") would throw
InvalidCastException at runtime. Split into two parameterless commands.
This commit is contained in:
@@ -89,6 +89,11 @@ public sealed partial class UsageMonitorModalViewModel : ViewModelBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
[RelayCommand]
|
[RelayCommand]
|
||||||
|
private Task SetPreset7Days() => SetPreset(7);
|
||||||
|
|
||||||
|
[RelayCommand]
|
||||||
|
private Task SetPreset30Days() => SetPreset(30);
|
||||||
|
|
||||||
private Task SetPreset(int days)
|
private Task SetPreset(int days)
|
||||||
{
|
{
|
||||||
ApplyPresetRange(days);
|
ApplyPresetRange(days);
|
||||||
|
|||||||
@@ -92,9 +92,9 @@
|
|||||||
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Spacing="8" Margin="20,12,20,0">
|
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Spacing="8" Margin="20,12,20,0">
|
||||||
<TextBlock Classes="meta" Text="{loc:Tr modals.usageMonitor.period}" VerticalAlignment="Center"/>
|
<TextBlock Classes="meta" Text="{loc:Tr modals.usageMonitor.period}" VerticalAlignment="Center"/>
|
||||||
<Button Classes="btn" Content="{loc:Tr modals.usageMonitor.last7Days}"
|
<Button Classes="btn" Content="{loc:Tr modals.usageMonitor.last7Days}"
|
||||||
Command="{Binding SetPresetCommand}" CommandParameter="7"/>
|
Command="{Binding SetPreset7DaysCommand}"/>
|
||||||
<Button Classes="btn" Content="{loc:Tr modals.usageMonitor.last30Days}"
|
<Button Classes="btn" Content="{loc:Tr modals.usageMonitor.last30Days}"
|
||||||
Command="{Binding SetPresetCommand}" CommandParameter="30"/>
|
Command="{Binding SetPreset30DaysCommand}"/>
|
||||||
<TextBlock Classes="meta" Text="{loc:Tr modals.usageMonitor.fromDate}" VerticalAlignment="Center"/>
|
<TextBlock Classes="meta" Text="{loc:Tr modals.usageMonitor.fromDate}" VerticalAlignment="Center"/>
|
||||||
<ctl:ThemedDatePicker SelectedDate="{Binding StartDate}"/>
|
<ctl:ThemedDatePicker SelectedDate="{Binding StartDate}"/>
|
||||||
<TextBlock Classes="meta" Text="{loc:Tr modals.usageMonitor.toDate}" VerticalAlignment="Center"/>
|
<TextBlock Classes="meta" Text="{loc:Tr modals.usageMonitor.toDate}" VerticalAlignment="Center"/>
|
||||||
|
|||||||
@@ -258,7 +258,7 @@ public class UsageMonitorModalViewModelTests
|
|||||||
await vm.LoadAsync();
|
await vm.LoadAsync();
|
||||||
var callsAfterInitialLoad = worker.ModelUsageCalls;
|
var callsAfterInitialLoad = worker.ModelUsageCalls;
|
||||||
|
|
||||||
await vm.SetPresetCommand.ExecuteAsync(30);
|
await vm.SetPreset30DaysCommand.ExecuteAsync(null);
|
||||||
|
|
||||||
Assert.Equal(callsAfterInitialLoad + 1, worker.ModelUsageCalls);
|
Assert.Equal(callsAfterInitialLoad + 1, worker.ModelUsageCalls);
|
||||||
Assert.Equal(callsAfterInitialLoad + 1, worker.TaskUsageCalls);
|
Assert.Equal(callsAfterInitialLoad + 1, worker.TaskUsageCalls);
|
||||||
|
|||||||
Reference in New Issue
Block a user