Skip to content

Commit a354a0b

Browse files
committed
Clean up types, add null checks, try unsafe casts.
1 parent d0474b3 commit a354a0b

File tree

2 files changed

+38
-12
lines changed

2 files changed

+38
-12
lines changed

Rubberduck.Core/UI/CodeExplorer/Commands/AddTemplateCommand.cs

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using System.Collections.Generic;
23
using Rubberduck.Navigation.CodeExplorer;
34
using Rubberduck.Templates;
@@ -28,24 +29,49 @@ public bool CanExecuteForNode(ICodeExplorerNode model)
2829

2930
protected override bool EvaluateCanExecute(object parameter)
3031
{
31-
// TODO this cast needs to be safer.
32-
var data = ((string templateName, ICodeExplorerNode model)) parameter;
32+
if (parameter is null)
33+
{
34+
return false;
35+
}
36+
37+
try
38+
{
39+
// TODO this cast needs to be safer.
40+
var data = ((string templateName, ICodeExplorerNode model))parameter;
3341

34-
return base.EvaluateCanExecute(data.model);
42+
return base.EvaluateCanExecute(data.model);
43+
}
44+
catch (Exception ex)
45+
{
46+
Logger.Trace(ex);
47+
return false;
48+
}
3549
}
3650

3751
protected override void OnExecute(object parameter)
3852
{
39-
// TODO this cast needs to be safer.
40-
var data = ((string templateName, ICodeExplorerNode node)) parameter;
41-
42-
if (string.IsNullOrWhiteSpace(data.templateName) || !(data.node is CodeExplorerItemViewModel model))
53+
if (parameter is null)
4354
{
4455
return;
4556
}
4657

47-
var moduleText = GetTemplate(data.templateName);
48-
AddComponent(model, moduleText);
58+
try
59+
{
60+
// TODO this cast needs to be safer.
61+
var data = ((string templateName, ICodeExplorerNode node))parameter;
62+
63+
if (string.IsNullOrWhiteSpace(data.templateName) || !(data.node is CodeExplorerItemViewModel model))
64+
{
65+
return;
66+
}
67+
68+
var moduleText = GetTemplate(data.templateName);
69+
AddComponent(model, moduleText);
70+
}
71+
catch (Exception ex)
72+
{
73+
Logger.Trace(ex);
74+
}
4975
}
5076

5177
private string GetTemplate(string name)

Rubberduck.Core/UI/Converters/TemplateCommandParameterToTupleConverter.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ public class TemplateCommandParameterToTupleConverter : IMultiValueConverter
99
{
1010
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
1111
{
12-
(string templateName, CodeExplorerItemViewModel model) data = (
12+
(string templateName, ICodeExplorerNode model) data = (
1313
values[0] as string,
14-
values[1] as CodeExplorerItemViewModel);
14+
values[1] as ICodeExplorerNode);
1515
return data;
1616
}
1717

1818
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
1919
{
20-
var data = ((string templateName, CodeExplorerItemViewModel model))value;
20+
var data = ((string templateName, ICodeExplorerNode model))value;
2121
return new[] {(object) data.templateName, data.model};
2222
}
2323
}

0 commit comments

Comments
 (0)