From e7d2ace04a90d0cd6df6cfd685a7093cabc092e5 Mon Sep 17 00:00:00 2001 From: Yousra Assouhaji Date: Fri, 29 Mar 2024 09:20:39 +0000 Subject: [PATCH] Exemple Prd list --- crates/sp_client/src/Prd_list.rs | 85 ++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 crates/sp_client/src/Prd_list.rs diff --git a/crates/sp_client/src/Prd_list.rs b/crates/sp_client/src/Prd_list.rs new file mode 100644 index 0000000..fea1218 --- /dev/null +++ b/crates/sp_client/src/Prd_list.rs @@ -0,0 +1,85 @@ +use serde::{Deserialize, Serialize}; +use serde_json::{json, Value}; +use tsify::Tsify; +use wasm_bindgen::prelude::*; +use std::marker::Copy; + + +#[wasm_bindgen] +#[derive(Debug, Default, Serialize, Deserialize, Clone, PartialEq)] +pub enum Role { + Manager, + #[default] + User, +} + + +#[derive(Serialize, Deserialize, Debug, Copy, Clone)] +//use std :: marker; +//strings can't implement copy +#[wasm_bindgen] +pub struct ItemMember { + pub role : Role, + pub sp_address: u32, + //pre_id: hash(password, part1) + //shard, + //priv_key_mainnet_spend, (enc) + //priv_key_mainnet_scan, + //priv_key_signet_scan, +} + +impl ItemMember { + pub fn new(role: Role, sp_address: u32) -> Self { + ItemMember {role, sp_address} + } +} + +#[derive(Debug, Serialize)] +#[wasm_bindgen] +pub struct Prdlist { + //pub id: String, + //pub version: String, + pub gestionnaires: Vec, +} + +//auto inscription in the list (not included) +/* +fn auto_enroll(prdlist: &mut Prdlist, role: Role, sp_address: u32) { + let item_member = ItemMember { + role, //just as a user + sp_address, + }; + prdlist.gestionnaires.push(item_member); //not gestionnaires but users + +}*/ + +//fn send_transaction(prdlist: &Prdlist){} +//fn send_PrdMessage (prdlist: &Prdlist){} + +#[derive(Serialize)] +struct RequestBody { + message: String, +} + +#[wasm_bindgen] +pub async fn send_PrdRequest(prdlist: &Prdlist) -> Result<(), JsValue> { + let managers: Vec<&ItemMember> = prdlist.gestionnaires.iter().filter(|m| m.role == Role::Manager).collect(); + for manager in managers { + let request_body = RequestBody { + message: "Asking for the Prd list".to_string(), + }; + + let json_body = serde_json::to_string(&request_body).map_err(|e| JsValue::from_str(&format!("Failed to serialize request body: {:?}", e)))?; + println!("Sending request to manager {:?}", manager.sp_address); + } + Ok(()) +} + + + + + + + + +