From 331d880d3521283d86501f3b234d51ded02321b2 Mon Sep 17 00:00:00 2001 From: Yousra Assouhaji Date: Wed, 27 Mar 2024 13:59:46 +0000 Subject: [PATCH 1/2] Replace process.rs --- crates/sp_client/src/process.rs | 87 +++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/crates/sp_client/src/process.rs b/crates/sp_client/src/process.rs index 427481d..1dd3248 100644 --- a/crates/sp_client/src/process.rs +++ b/crates/sp_client/src/process.rs @@ -1,5 +1,8 @@ use wasm_bindgen::prelude::*; +use serde::{Deserialize, Serialize}; +use serde_json::{json, Value}; +/* #[wasm_bindgen] pub fn get_process() -> Vec { let mut data_process: Vec = Vec::new(); @@ -7,4 +10,88 @@ pub fn get_process() -> Vec { data_process.push(String::from("process2")); data_process.push(String::from("process3")); data_process +}*/ + +// process member (gestionnaire for now) +#[derive(Debug)] +pub enum Role { + manager, + // user } +#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] +#[wasm_bindgen] +pub struct itemMember { + role: Role, //gestionnaire + sp_address: String, + //pre_id + //shard + //priv_key_mainnet_spend + //priv_key_mainnet_scan + //priv_key_signet_scan + +} +#[wasm_bindgen] +impl itemMember{ + pub fn new ( + role : Role, + sp_address: string) + ->Self { + itemMember{ + role, + sp_address, + } + } +} + +pub struct Process { + id: String, + version: String, + gestionnaires: Vec, + //item_name : String, +} +#[wasm_bindgen] +pub fn get_processes() -> Vec { + let member1 = itemMember { + role: Role ::Manager, + sp_address: String::from(""), + }; + + let member2 = itemMember { + role: Role ::Manager, + sp_address: String::from(""), + }; + + let member3 = itemMember { + role: Role ::Manager, + sp_address: String::from(""), + }; + /* + let member4= itemMember{ + role : Role :: User, + sp_address: String::from(""), + }; + */ + //instances of process + let process1 = Process { + id: String::from("1"), + version: String::from("1.0"), + gestionnaires: vec![member1, member2], + }; + let process2 = Process { + id: String::from("2"), + version: String::from("2.0"), + gestionnaires: vec![member2, member3], + }; + let process3 = Process { + id: String::from("3"), + version: String::from("1.0"), + gestionnaires: vec![member3, member1], + }; + + // vec with the instances of processes + let mut data_process: Vec = Vec::new(); + data_process.push(JsValue::from_serde(&process1).unwrap()); + data_process.push(JsValue::from_serde(&process2).unwrap()); + data_process.push(JsValue::from_serde(&process3).unwrap()); + data_process +} \ No newline at end of file From 70cf0e6040bd300cdca01f12e857804d6ff76139 Mon Sep 17 00:00:00 2001 From: Sosthene00 <674694@protonmail.ch> Date: Wed, 27 Mar 2024 16:10:02 +0100 Subject: [PATCH 2/2] wasm_bindgen function in api --- crates/sp_client/src/api.rs | 52 +++++++++++++-- crates/sp_client/src/process.rs | 111 ++++++++------------------------ 2 files changed, 74 insertions(+), 89 deletions(-) diff --git a/crates/sp_client/src/api.rs b/crates/sp_client/src/api.rs index d629df8..7f5b325 100644 --- a/crates/sp_client/src/api.rs +++ b/crates/sp_client/src/api.rs @@ -1,8 +1,8 @@ use rand::Rng; use anyhow::Error as AnyhowError; -use sp_backend::silentpayments::Error as SpError; use serde_json::Error as SerdeJsonError; +use sp_backend::silentpayments::Error as SpError; use serde::{Deserialize, Serialize}; use sp_backend::silentpayments::sending::SilentPaymentAddress; @@ -13,6 +13,8 @@ use wasm_bindgen::prelude::*; use sp_backend::spclient::SpendKey; use sp_backend::spclient::{derive_keys_from_seed, OutputList, SpClient}; +use crate::process::{ItemMember, Process, Role}; + type ApiResult = Result; const IS_TESTNET: bool = true; @@ -24,19 +26,25 @@ struct ApiError { impl From for ApiError { fn from(value: AnyhowError) -> Self { - ApiError {message: value.to_string()} + ApiError { + message: value.to_string(), + } } } impl From for ApiError { fn from(value: SpError) -> Self { - ApiError { message: value.to_string() } + ApiError { + message: value.to_string(), + } } } impl From for ApiError { fn from(value: SerdeJsonError) -> Self { - ApiError { message: value.to_string() } + ApiError { + message: value.to_string(), + } } } @@ -104,3 +112,39 @@ pub fn get_receiving_address(sp_client: String) -> String { let sp_client: SpClient = serde_json::from_str(&sp_client).unwrap(); sp_client.get_receiving_address() } + +#[derive(Tsify, Serialize, Deserialize)] +#[tsify(into_wasm_abi)] +#[allow(non_camel_case_types)] +pub struct get_process_return(Vec); + +#[wasm_bindgen] +pub fn get_processes() -> ApiResult { + let member1 = ItemMember::new(Role::Manager, String::from("")); + let member2 = ItemMember::new(Role::Manager, String::from("")); + let member3 = ItemMember::new(Role::Manager, String::from("")); + + //instances of process + let process1 = Process { + id: String::from("1"), + version: String::from("1.0"), + gestionnaires: vec![member1.clone(), member2.clone()], + }; + let process2 = Process { + id: String::from("2"), + version: String::from("2.0"), + gestionnaires: vec![member2.clone(), member3.clone()], + }; + let process3 = Process { + id: String::from("3"), + version: String::from("1.0"), + gestionnaires: vec![member3.clone(), member1.clone()], + }; + + // vec with the instances of processes + let mut data_process: Vec = Vec::new(); + data_process.push(process1); + data_process.push(process2); + data_process.push(process3); + Ok(get_process_return(data_process)) +} diff --git a/crates/sp_client/src/process.rs b/crates/sp_client/src/process.rs index 1dd3248..4f384e8 100644 --- a/crates/sp_client/src/process.rs +++ b/crates/sp_client/src/process.rs @@ -1,97 +1,38 @@ -use wasm_bindgen::prelude::*; use serde::{Deserialize, Serialize}; use serde_json::{json, Value}; - -/* -#[wasm_bindgen] -pub fn get_process() -> Vec { - let mut data_process: Vec = Vec::new(); - data_process.push(String::from("process1")); - data_process.push(String::from("process2")); - data_process.push(String::from("process3")); - data_process -}*/ +use tsify::Tsify; +use wasm_bindgen::prelude::*; // process member (gestionnaire for now) -#[derive(Debug)] +#[derive(Debug, Default, Serialize, Deserialize, Clone)] pub enum Role { - manager, - // user + Manager, + #[default] + User, } -#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] -#[wasm_bindgen] -pub struct itemMember { - role: Role, //gestionnaire - sp_address: String, - //pre_id - //shard - //priv_key_mainnet_spend +#[derive(Debug, Serialize, Deserialize, Default, Tsify, Clone)] +#[tsify(into_wasm_abi)] +pub struct ItemMember { + pub role: Role, //gestionnaire + pub sp_address: String, + //pre_id + //shard + //priv_key_mainnet_spend //priv_key_mainnet_scan //priv_key_signet_scan - -} -#[wasm_bindgen] -impl itemMember{ - pub fn new ( - role : Role, - sp_address: string) - ->Self { - itemMember{ - role, - sp_address, - } - } } +impl ItemMember { + pub fn new(role: Role, sp_address: String) -> Self { + ItemMember { role, sp_address } + } +} + +#[derive(Debug, Serialize, Deserialize, Default, Tsify)] +#[tsify(into_wasm_abi, from_wasm_abi)] pub struct Process { - id: String, - version: String, - gestionnaires: Vec, - //item_name : String, + pub id: String, + pub version: String, + pub gestionnaires: Vec, + //item_name : String, } -#[wasm_bindgen] -pub fn get_processes() -> Vec { - let member1 = itemMember { - role: Role ::Manager, - sp_address: String::from(""), - }; - - let member2 = itemMember { - role: Role ::Manager, - sp_address: String::from(""), - }; - - let member3 = itemMember { - role: Role ::Manager, - sp_address: String::from(""), - }; - /* - let member4= itemMember{ - role : Role :: User, - sp_address: String::from(""), - }; - */ - //instances of process - let process1 = Process { - id: String::from("1"), - version: String::from("1.0"), - gestionnaires: vec![member1, member2], - }; - let process2 = Process { - id: String::from("2"), - version: String::from("2.0"), - gestionnaires: vec![member2, member3], - }; - let process3 = Process { - id: String::from("3"), - version: String::from("1.0"), - gestionnaires: vec![member3, member1], - }; - - // vec with the instances of processes - let mut data_process: Vec = Vec::new(); - data_process.push(JsValue::from_serde(&process1).unwrap()); - data_process.push(JsValue::from_serde(&process2).unwrap()); - data_process.push(JsValue::from_serde(&process3).unwrap()); - data_process -} \ No newline at end of file