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,
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<Vec<u8>> {
#[wasm_bindgen]
pub fn decode_value(value: Vec<u8>) -> ApiResult<JsValue> {
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::<FileBlob>(&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]