Skip to content

Commit 0e5b5b2

Browse files
Merge pull request #3915 from microsoft/staging
Release - 10/1/24
2 parents 8a7e1cf + bbda16c commit 0e5b5b2

File tree

2 files changed

+32
-25
lines changed

2 files changed

+32
-25
lines changed

extensions/CoreWidgetProvider/Widgets/SSHWalletWidget.cs

+12-1
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,24 @@ public override void OnCustomizationRequested(WidgetCustomizationRequestedArgs c
144144
SetConfigure();
145145
}
146146

147+
// This function assumes arg.Data will be a json string object with the following structure:
148+
// { "data": "hostname" }
147149
private void HandleConnect(WidgetActionInvokedArgs args)
148150
{
151+
var jsonObject = JsonDocument.Parse(args.Data).RootElement;
152+
var host = jsonObject.GetProperty("data").GetString();
153+
154+
if (string.IsNullOrEmpty(host))
155+
{
156+
Log.Error("Invalid data received for HandleConnect.");
157+
return;
158+
}
159+
149160
var cmd = new Process();
150161
cmd.StartInfo = new ProcessStartInfo
151162
{
152163
FileName = "cmd.exe",
153-
Arguments = $"/k \"ssh {args.Data}\"",
164+
Arguments = $"/k \"ssh {host}\"",
154165
UseShellExecute = true,
155166
};
156167

tools/Dashboard/DevHome.Dashboard/ViewModels/WidgetViewModel.cs

+20-24
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
using Microsoft.UI.Xaml.Controls;
2626
using Microsoft.Windows.Widgets;
2727
using Microsoft.Windows.Widgets.Hosts;
28-
using Newtonsoft.Json.Linq;
2928
using Serilog;
3029

3130
namespace DevHome.Dashboard.ViewModels;
@@ -311,20 +310,29 @@ private Grid GetErrorCard(string error, string subError = null)
311310
return grid;
312311
}
313312

314-
private string MergeJsonData(string jsonStringA, string jsonStringB)
313+
private Newtonsoft.Json.Linq.JObject WrapJsonString(string jsonString)
315314
{
316-
if (string.IsNullOrEmpty(jsonStringA))
315+
return new Newtonsoft.Json.Linq.JObject { ["data"] = jsonString };
316+
}
317+
318+
private string MergeJsonData(Windows.Data.Json.JsonValue actionValue, Windows.Data.Json.JsonObject inputsObject)
319+
{
320+
Newtonsoft.Json.Linq.JObject objA = [];
321+
Newtonsoft.Json.Linq.JObject objB = [];
322+
323+
if (actionValue?.ValueType == Windows.Data.Json.JsonValueType.Object)
317324
{
318-
return jsonStringB;
325+
objA = Newtonsoft.Json.Linq.JObject.Parse(actionValue.Stringify());
319326
}
320-
321-
if (string.IsNullOrEmpty(jsonStringB))
327+
else if (actionValue?.ValueType == Windows.Data.Json.JsonValueType.String)
322328
{
323-
return jsonStringA;
329+
objA = WrapJsonString(actionValue.Stringify());
324330
}
325331

326-
var objA = JObject.Parse(jsonStringA);
327-
var objB = JObject.Parse(jsonStringB);
332+
if (inputsObject?.ValueType != Windows.Data.Json.JsonValueType.Null)
333+
{
334+
objB = Newtonsoft.Json.Linq.JObject.Parse(inputsObject.Stringify());
335+
}
328336

329337
objA.Merge(objB);
330338

@@ -341,22 +349,10 @@ private async void HandleAdaptiveAction(RenderedAdaptiveCard sender, AdaptiveAct
341349
}
342350
else if (args.Action is AdaptiveExecuteAction executeAction)
343351
{
344-
var actionData = string.Empty;
345-
var inputsData = string.Empty;
346-
347-
var dataType = executeAction.DataJson.ValueType;
348-
if (dataType != Windows.Data.Json.JsonValueType.Null)
349-
{
350-
actionData = executeAction.DataJson.Stringify();
351-
}
352-
353-
var inputType = args.Inputs.AsJson().ValueType;
354-
if (inputType != Windows.Data.Json.JsonValueType.Null)
355-
{
356-
inputsData = args.Inputs.AsJson().Stringify();
357-
}
352+
Windows.Data.Json.JsonValue actionValue = executeAction.DataJson;
353+
Windows.Data.Json.JsonObject inputsObject = args.Inputs.AsJson();
358354

359-
var dataToSend = MergeJsonData(actionData, inputsData);
355+
var dataToSend = MergeJsonData(actionValue, inputsObject);
360356

361357
_log.Information($"Verb = {executeAction.Verb}, Data = {dataToSend}");
362358
await Widget.NotifyActionInvokedAsync(executeAction.Verb, dataToSend);

0 commit comments

Comments
 (0)