Add encode/decode api
This commit is contained in:
parent
90d87e7d9a
commit
e72e0d9fe8
40
src/api.rs
40
src/api.rs
@ -23,7 +23,7 @@ use sdk_common::crypto::{
|
||||
decrypt_with_key, encrypt_with_key, generate_key, AeadCore, Aes256Gcm, AnkSharedSecretHash, KeyInit, AAD
|
||||
};
|
||||
use sdk_common::process::{check_tx_for_process_updates, lock_processes, Process, ProcessState};
|
||||
use sdk_common::serialization::{OutPointMemberMap, OutPointProcessMap};
|
||||
use sdk_common::serialization::{OutPointMemberMap, OutPointProcessMap, ciborium_deserialize as common_deserialize};
|
||||
use sdk_common::signature::{AnkHash, AnkMessageHash, AnkValidationNoHash, AnkValidationYesHash, Proof};
|
||||
use sdk_common::sp_client::bitcoin::blockdata::fee_rate;
|
||||
use sdk_common::sp_client::bitcoin::consensus::{deserialize, serialize};
|
||||
@ -378,14 +378,8 @@ pub fn dump_process_cache() -> ApiResult<String> {
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn set_process_cache(processes: String) -> ApiResult<()> {
|
||||
let processes: Map<String, Value> = serde_json::from_str(&processes)?;
|
||||
|
||||
let parsed_processes: anyhow::Result<HashMap<OutPoint, Process>> = processes.into_iter()
|
||||
.map(|(key, value)| {
|
||||
Ok((OutPoint::from_str(&key)?, serde_json::from_value(value)?))
|
||||
})
|
||||
.collect();
|
||||
pub fn set_process_cache(processes: JsValue) -> ApiResult<()> {
|
||||
let parsed_processes: HashMap<OutPoint, Process> = serde_wasm_bindgen::from_value(processes)?;
|
||||
|
||||
let mut cached_processes = lock_processes()?;
|
||||
|
||||
@ -394,7 +388,7 @@ pub fn set_process_cache(processes: String) -> ApiResult<()> {
|
||||
return Err(ApiError::new("Processes cache is not empty".to_owned()));
|
||||
}
|
||||
|
||||
*cached_processes = parsed_processes?;
|
||||
*cached_processes = parsed_processes;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@ -674,16 +668,13 @@ fn create_diffs(device: &MutexGuard<Device>, process: &Process, new_state: &Proc
|
||||
let process_id = process.get_process_id()?.to_string();
|
||||
let mut diffs = vec![];
|
||||
for (field, hash) in new_state_commitments.iter() {
|
||||
let description_field = new_public_data.get(field);
|
||||
let has_description = description_field.as_ref().is_some_and(|v| v.is_string());
|
||||
let description = if has_description { description_field.unwrap().as_str().map(|s| s.to_owned()) } else { None };
|
||||
let need_validation = fields_to_validate.contains(field);
|
||||
diffs.push(UserDiff {
|
||||
process_id: process_id.clone(),
|
||||
state_id: new_state_id.to_lower_hex_string(),
|
||||
value_commitment: hash.to_lower_hex_string(),
|
||||
field: field.to_owned(),
|
||||
description,
|
||||
description: None, // TODO we don't use that for now, we'll see later
|
||||
notify_user: false,
|
||||
need_validation,
|
||||
validation_status: DiffStatus::None,
|
||||
@ -1695,5 +1686,24 @@ pub fn decrypt_data(key: &[u8], data: &[u8]) -> ApiResult<String> {
|
||||
// decrypt the data
|
||||
let clear = decrypt_with_key(&key_buf, data)?;
|
||||
|
||||
Ok(String::from_utf8(clear)?)
|
||||
Ok(clear)
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn encode_pcd(data: JsValue) -> ApiResult<Pcd> {
|
||||
let value: Value = serde_wasm_bindgen::from_value(data)?;
|
||||
let res = TryInto::<Pcd>::try_into(value)?;
|
||||
Ok(res)
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn encode_value(value: JsValue) -> ApiResult<Vec<u8>> {
|
||||
let res = sdk_common::serialization::ciborium_serialize(&serde_wasm_bindgen::from_value(value)?)?;
|
||||
Ok(res)
|
||||
}
|
||||
|
||||
#[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)?)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user