Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
using Dynamo.PackageManager;
using Dynamo.PackageManager.UI;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using JsonSerializer = System.Text.Json.JsonSerializer;
using Greg.Requests;
using Newtonsoft.Json.Linq;
Expand Down Expand Up @@ -537,19 +538,65 @@ private async void SendPackageUpdates(PublishPackageViewModel vm)
};

var payload = new { payload = packageDetails };
var options = new JsonSerializerOptions
var jsonSerializerSettings = new JsonSerializerSettings
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
var jsonSerializer = Newtonsoft.Json.JsonSerializer.Create(jsonSerializerSettings);
var rootObj = JObject.FromObject(payload, jsonSerializer);

string jsonPayload = JsonSerializer.Serialize(payload, options);
// Include payload.versions[*].compatibility_matrix for the "Copy from" dropdown.
try
{
var header = await TryGetPackageHeaderAsync(vm);
if (header != null)
{
if (rootObj["payload"] is JObject payloadObj)
{
payloadObj["versions"] = header.versions != null
? JToken.FromObject(header.versions, jsonSerializer)
: new JArray();
}
}
}
catch (Exception ex)
{
LogMessage(ex);
}

var jsonPayload = rootObj.ToString(Newtonsoft.Json.Formatting.None);

if (dynWebView?.CoreWebView2 != null)
{
await dynWebView.CoreWebView2.ExecuteScriptAsync($"window.receiveUpdatedPackageDetails({jsonPayload});");
}
}

private async Task<Greg.Responses.PackageHeader> TryGetPackageHeaderAsync(PublishPackageViewModel vm)
{
var pmClientVm = vm?.DynamoViewModel?.PackageManagerClientViewModel;
var pkgName = vm?.Package?.Name ?? vm?.Name;
if (string.IsNullOrWhiteSpace(pkgName) || pmClientVm == null) return null;

var cachedHeader = pmClientVm.CachedPackageList?.FirstOrDefault(x => x.Name == pkgName)?.Header;
if (cachedHeader != null) return cachedHeader;

if (pmClientVm.Model != null && !pmClientVm.Model.NoNetworkMode)
{
try
{
await Task.Run(() => pmClientVm.ListAll());
return pmClientVm.CachedPackageList?.FirstOrDefault(x => x.Name == pkgName)?.Header;
}
catch (Exception ex)
{
LogMessage(ex);
}
}

return null;
}

private async void UpdateRetainFolderStructureFlag(bool flag)
{
var payload = new { flag = flag };
Expand Down
Loading