From 51d8eddcef31ad6d65f6d390a132626270e8ffa8 Mon Sep 17 00:00:00 2001 From: Chris <34682781+monkins1010@users.noreply.github.com> Date: Wed, 5 Feb 2025 15:39:03 +0000 Subject: [PATCH] Allow datadescriptor objects to be inserted as array --- src/pbaas/vdxf.cpp | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/pbaas/vdxf.cpp b/src/pbaas/vdxf.cpp index 3f2790b4f8..9252d61bfe 100644 --- a/src/pbaas/vdxf.cpp +++ b/src/pbaas/vdxf.cpp @@ -718,15 +718,26 @@ CDataDescriptor::CDataDescriptor(const UniValue &uni) : mimeType.resize(128); } SetFlags(); - UniValue objUni = find_value(uni, "objectdata"); - if (HasMIME() && - std::string(mimeType.begin(), mimeType.begin() + 5) == std::string("text/") && - objUni.isStr()) + + if (objUni.isObject() || objUni.isStr()) + { + objectData = VectorEncodeVDXFUni(objUni); + } + else if (objUni.isArray()) + { + CDataStream ss(PROTOCOL_VERSION, SER_DISK); + for (int i = 0; i < objUni.size(); i++) + { + std::vector vec = VectorEncodeVDXFUni(objUni[i]); + ss.write(reinterpret_cast(vec.data()), vec.size()); + } + objectData = std::vector(ss.begin(), ss.end()); + } + else { - objUni.pushKV("message", objUni); + objectData = std::vector(); } - objectData = VectorEncodeVDXFUni(find_value(uni, "objectdata")); } std::vector CDataDescriptor::DecodeHashVector() const