diff --git a/src/api.rs b/src/api.rs index bb2b33f..6e01816 100644 --- a/src/api.rs +++ b/src/api.rs @@ -1726,18 +1726,16 @@ pub fn decode_value(value: Vec) -> ApiResult { Err(ApiError::new("Invalid or unsupported PCD data".to_owned())) } -// #[wasm_bindgen] -// pub fn hash_value(value: JsValue, commited_in: String, label: String) -> ApiResult { -// let outpoint = OutPoint::from_str(&commited_in)?; -// let encoded_value = sdk_common::serialization::ciborium_serialize(&serde_wasm_bindgen::from_value::(value)?)?; -// let hash = AnkPcdHash::from_pcd_value(encoded_value.as_slice(), label.as_bytes(), &outpoint); -// Ok(hash.as_byte_array().to_lower_hex_string()) -// } - #[wasm_bindgen] pub fn hash_value(value: JsValue, commited_in: String, label: String) -> ApiResult { let outpoint = OutPoint::from_str(&commited_in)?; - let encoded_value = sdk_common::serialization::ciborium_serialize(&serde_wasm_bindgen::from_value::(value)?)?; + let encoded_value = if let Ok(file_blob) = serde_wasm_bindgen::from_value::(value.clone()) { + file_blob.serialize_to_pcd()? + } else if let Ok(json) = serde_wasm_bindgen::from_value::(value) { + json.serialize_to_pcd()? + } else { + return Err(ApiError::new("Invalid or unsupported PCD data".to_owned())); + }; let hash = AnkPcdHash::from_pcd_value(encoded_value.as_slice(), label.as_bytes(), &outpoint); Ok(hash.as_byte_array().to_lower_hex_string()) }