Skip to content

Commit 31b0095

Browse files
committed
Refactor command result handling
1 parent ea82759 commit 31b0095

3 files changed

Lines changed: 42 additions & 38 deletions

File tree

WorkspaceLauncherForVSCode/Commands/OpenSolutionCommand.cs

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace WorkspaceLauncherForVSCode.Commands;
1313
public partial class OpenSolutionCommand : InvokableCommand, IHasWorkspace
1414
{
1515
public VisualStudioCodeWorkspace Workspace { get; set; }
16-
private readonly VisualStudioCodePage page;
16+
private readonly VisualStudioCodePage? page;
1717
private readonly CommandResultType commandResult;
1818
private readonly bool _elevated;
1919

@@ -62,30 +62,21 @@ public override CommandResult Invoke()
6262
if (window.Title.Contains(solutionName))
6363
{
6464
window.SwitchToWindow();
65-
return CommandResult.Dismiss();
65+
return PageCommandResultHandler.HandleCommandResult(CommandResultType.Dismiss, page);
6666
}
6767
}
6868

69-
OpenInShellHelper.OpenInShell(Workspace.VSInstance.InstancePath, Workspace.Path, runAs: _elevated ? OpenInShellHelper.ShellRunAsType.Administrator : OpenInShellHelper.ShellRunAsType.None);
70-
71-
// Update frequency
72-
Task.Run(() => page.UpdateFrequencyAsync(Workspace.Path));
69+
if (Workspace.VSInstance != null)
70+
{
71+
OpenInShellHelper.OpenInShell(Workspace.VSInstance.InstancePath, Workspace.Path, runAs: _elevated ? OpenInShellHelper.ShellRunAsType.Administrator : OpenInShellHelper.ShellRunAsType.None);
72+
}
7373

74-
switch (commandResult)
74+
if (page != null)
7575
{
76-
case CommandResultType.GoBack:
77-
return CommandResult.GoBack();
78-
case CommandResultType.KeepOpen:
79-
// reset search text
80-
page.UpdateSearchText(page.SearchText, "");
81-
page.SearchText = "";
82-
return CommandResult.KeepOpen();
83-
case CommandResultType.Dismiss:
84-
page.UpdateSearchText(page.SearchText, "");
85-
page.SearchText = "";
86-
return CommandResult.Dismiss();
87-
default:
88-
return CommandResult.Dismiss();
76+
// Update frequency
77+
Task.Run(() => page.UpdateFrequencyAsync(Workspace.Path));
8978
}
79+
80+
return PageCommandResultHandler.HandleCommandResult(commandResult, page);
9081
}
9182
}

WorkspaceLauncherForVSCode/Commands/OpenVisualStudioCodeCommand.cs

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@
33
using System.Threading.Tasks;
44
using Microsoft.CmdPal.Ext.System.Helpers;
55
using Microsoft.CommandPalette.Extensions.Toolkit;
6-
using WorkspaceLauncherForVSCode.Commands;
76
using WorkspaceLauncherForVSCode.Enums;
87
using WorkspaceLauncherForVSCode.Interfaces;
98

10-
namespace WorkspaceLauncherForVSCode;
9+
namespace WorkspaceLauncherForVSCode.Commands;
1110

1211
/// <summary>
1312
/// Command to open a Visual Studio Code workspace.
@@ -87,21 +86,6 @@ public override CommandResult Invoke()
8786
// Update frequency
8887
Task.Run(() => page.UpdateFrequencyAsync(Workspace.Path));
8988

90-
switch (commandResult)
91-
{
92-
case CommandResultType.GoBack:
93-
return CommandResult.GoBack();
94-
case CommandResultType.KeepOpen:
95-
// reset search text
96-
page.UpdateSearchText(page.SearchText, "");
97-
page.SearchText = "";
98-
return CommandResult.KeepOpen();
99-
case CommandResultType.Dismiss:
100-
page.UpdateSearchText(page.SearchText, "");
101-
page.SearchText = "";
102-
return CommandResult.Dismiss();
103-
default:
104-
return CommandResult.Dismiss();
105-
}
89+
return PageCommandResultHandler.HandleCommandResult(commandResult, page);
10690
}
10791
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Modifications copyright (c) 2025 tanchekwei
2+
// Licensed under the MIT License. See the LICENSE file in the project root for details.
3+
using Microsoft.CommandPalette.Extensions.Toolkit;
4+
using WorkspaceLauncherForVSCode.Enums;
5+
6+
namespace WorkspaceLauncherForVSCode.Commands;
7+
8+
public static class PageCommandResultHandler
9+
{
10+
public static CommandResult HandleCommandResult(CommandResultType resultType, VisualStudioCodePage? page)
11+
{
12+
if (page != null)
13+
{
14+
// reset search text
15+
if (!string.IsNullOrEmpty(page.SearchText))
16+
{
17+
page.UpdateSearchText(page.SearchText, "");
18+
page.SearchText = "";
19+
}
20+
}
21+
22+
return resultType switch
23+
{
24+
CommandResultType.GoBack => CommandResult.GoBack(),
25+
CommandResultType.KeepOpen => CommandResult.KeepOpen(),
26+
_ => CommandResult.Dismiss(),
27+
};
28+
}
29+
}

0 commit comments

Comments
 (0)