From 70665fa762e93ca84cdd75b59f47e28fcfb778de Mon Sep 17 00:00:00 2001 From: Sosthene Date: Tue, 17 Jun 2025 15:14:02 +0200 Subject: [PATCH] Return a value that properly handle files --- src/api.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/api.rs b/src/api.rs index 63b1aa3..bf7cc7b 100644 --- a/src/api.rs +++ b/src/api.rs @@ -51,7 +51,7 @@ use sdk_common::sp_client::silentpayments::{ SilentPaymentAddress, Error as SpError, }; -use sdk_common::{signature, MutexExt, MAX_PRD_PAYLOAD_SIZE}; +use sdk_common::{js_sys::{Object, Reflect, Uint8Array}, signature, MutexExt, MAX_PRD_PAYLOAD_SIZE}; use serde_json::{json, Error as SerdeJsonError, Map, Value}; use serde::{de, Deserialize, Serialize}; @@ -1717,8 +1717,16 @@ pub fn encode_value(value: JsValue) -> ApiResult> { #[wasm_bindgen] pub fn decode_value(value: Vec) -> ApiResult { - let res: Value = sdk_common::serialization::ciborium_deserialize(&value)?; - Ok(serde_wasm_bindgen::to_value(&res)?) + if let Ok(deserialized) = sdk_common::serialization::ciborium_deserialize::(&value) { + let u8IntArray = Uint8Array::from(deserialized.data.as_slice()); + let res = Object::new(); + Reflect::set(&res, &JsValue::from_str("type"), &JsValue::from_str(&deserialized.r#type)); + Reflect::set(&res, &JsValue::from_str("data"), &JsValue::from(u8IntArray)); + Ok(JsValue::from(res)) + } else { + let res: Value = sdk_common::serialization::ciborium_deserialize(&value)?; + return Ok(serde_wasm_bindgen::to_value(&res)?); + } } #[wasm_bindgen]