Return a value that properly handle files

This commit is contained in:
Sosthene 2025-06-17 15:14:02 +02:00
parent f4122a6e63
commit 70665fa762

View File

@ -51,7 +51,7 @@ use sdk_common::sp_client::silentpayments::{
SilentPaymentAddress, SilentPaymentAddress,
Error as SpError, 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_json::{json, Error as SerdeJsonError, Map, Value};
use serde::{de, Deserialize, Serialize}; use serde::{de, Deserialize, Serialize};
@ -1717,8 +1717,16 @@ pub fn encode_value(value: JsValue) -> ApiResult<Vec<u8>> {
#[wasm_bindgen] #[wasm_bindgen]
pub fn decode_value(value: Vec<u8>) -> ApiResult<JsValue> { pub fn decode_value(value: Vec<u8>) -> ApiResult<JsValue> {
let res: Value = sdk_common::serialization::ciborium_deserialize(&value)?; if let Ok(deserialized) = sdk_common::serialization::ciborium_deserialize::<FileBlob>(&value) {
Ok(serde_wasm_bindgen::to_value(&res)?) 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] #[wasm_bindgen]