use sp_backend::bitcoin::PublicKey; use serde::{Deserialize, Serialize}; use serde_json::{json, Value}; //use sp_backend::silentpayments::sending::SilentPaymentAddress; use tsify::Tsify; use wasm_bindgen::prelude::*; use std::marker::Copy; #[wasm_bindgen] #[derive(Debug, Default, Serialize, Deserialize, Clone, PartialEq, Copy)] pub enum Role { Manager, #[default] User, } #[derive(Clone, Copy, Debug, Hash, PartialEq, Eq)] pub struct SilentPaymentAddress { version : u8, scan_pubkey : PublicKey, m_pubkey : PublicKey, is_testnet : bool, } #[derive(Debug, Copy, Clone)] pub struct ItemMember { pub role : Role, pub sp_address: SilentPaymentAddress, //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: SilentPaymentAddress) -> Self { ItemMember {role, sp_address} } } #[derive(Debug, Clone)] pub struct Prdlist { //pub id: String, //pub version: String, pub gestionnaires: Vec, // pub gestionnaires: Box>, } #[derive(Serialize)] #[wasm_bindgen] struct RequestBody { message: String, } pub 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(()) }