diff --git a/Flow.Launcher.Core/Plugin/JsonPRCModel.cs b/Flow.Launcher.Core/Plugin/JsonPRCModel.cs
index 247fe1889..a0731f8fb 100644
--- a/Flow.Launcher.Core/Plugin/JsonPRCModel.cs
+++ b/Flow.Launcher.Core/Plugin/JsonPRCModel.cs
@@ -58,13 +58,12 @@ namespace Flow.Launcher.Core.Plugin
string rpc = string.Empty;
if (Parameters != null && Parameters.Length > 0)
{
- string parameters = Parameters.Aggregate("[", (current, o) => current + (GetParameterByType(o) + ","));
- parameters = parameters.Substring(0, parameters.Length - 1) + "]";
- rpc = string.Format(@"{{\""method\"":\""{0}\"",\""parameters\"":{1}", Method, parameters);
+ string parameters = $"[{string.Join(',', Parameters.Select(GetParameterByType))}]";
+ rpc = $@"{{\""method\"":\""{Method}\"",\""parameters\"":{parameters}";
}
else
{
- rpc = string.Format(@"{{\""method\"":\""{0}\"",\""parameters\"":[]", Method);
+ rpc = $@"{{\""method\"":\""{Method}\"",\""parameters\"":[]";
}
return rpc;
@@ -72,26 +71,16 @@ namespace Flow.Launcher.Core.Plugin
}
private string GetParameterByType(object parameter)
+ => parameter switch
{
- if (parameter == null) {
- return "null";
- }
- if (parameter is string)
- {
- return string.Format(@"\""{0}\""", ReplaceEscapes(parameter.ToString()));
- }
- if (parameter is int || parameter is float || parameter is double)
- {
- return string.Format(@"{0}", parameter);
- }
- if (parameter is bool)
- {
- return string.Format(@"{0}", parameter.ToString().ToLower());
- }
- return parameter.ToString();
- }
+ null => "null",
+ string _ => $@"\""{ReplaceEscapes(parameter.ToString())}\""",
+ bool _ => $@"{parameter.ToString().ToLower()}",
+ _ => parameter.ToString()
+ };
- private string ReplaceEscapes(string str)
+
+ private string ReplaceEscapes(string str)
{
return str.Replace(@"\", @"\\") //Escapes in ProcessStartInfo
.Replace(@"\", @"\\") //Escapes itself when passed to client
diff --git a/Flow.Launcher.Core/Plugin/JsonRPCPlugin.cs b/Flow.Launcher.Core/Plugin/JsonRPCPlugin.cs
index 5b56f9347..a37b2b68b 100644
--- a/Flow.Launcher.Core/Plugin/JsonRPCPlugin.cs
+++ b/Flow.Launcher.Core/Plugin/JsonRPCPlugin.cs
@@ -119,7 +119,7 @@ namespace Flow.Launcher.Core.Plugin
///
/// Cancellation Token
///
- protected async Task ExecuteAsync(string fileName, string arguments, CancellationToken token = default)
+ protected Task ExecuteAsync(string fileName, string arguments, CancellationToken token = default)
{
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = fileName;
@@ -128,7 +128,7 @@ namespace Flow.Launcher.Core.Plugin
start.CreateNoWindow = true;
start.RedirectStandardOutput = true;
start.RedirectStandardError = true;
- return await ExecuteAsync(start, token);
+ return ExecuteAsync(start, token);
}
protected string Execute(ProcessStartInfo startInfo)