Replace Prd_list.rs

This commit is contained in:
Yousra Assouhaji 2024-04-02 07:26:48 +00:00
parent 7eb1ee9c1d
commit 2726522e99

View File

@ -1,26 +1,34 @@
use bitcoin::PublicKey;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use serde_json::{json, Value}; use serde_json::{json, Value};
//use sp_backend::silentpayments::sending::SilentPaymentAddress;
use tsify::Tsify; use tsify::Tsify;
use wasm_bindgen::prelude::*; use wasm_bindgen::prelude::*;
use std::marker::Copy; use std::marker::Copy;
#[wasm_bindgen] #[wasm_bindgen]
#[derive(Debug, Default, Serialize, Deserialize, Clone, PartialEq)]
#[derive(Debug, Default, Serialize, Deserialize, Clone, PartialEq, Copy)]
pub enum Role { pub enum Role {
Manager, Manager,
#[default] #[default]
User, User,
} }
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq)]
pub struct SilentPaymentAddress {
version : u8,
scan_pubkey : PublicKey,
m_pubkey : PublicKey,
is_testnet : bool,
}
#[derive(Serialize, Deserialize, Debug, Copy, Clone)]
//use std :: marker; #[derive(Debug, Copy, Clone)]
//strings can't implement copy
#[wasm_bindgen]
pub struct ItemMember { pub struct ItemMember {
pub role : Role, pub role : Role,
pub sp_address: u32, pub sp_address: SilentPaymentAddress,
//pre_id: hash(password, part1) //pre_id: hash(password, part1)
//shard, //shard,
//priv_key_mainnet_spend, (enc) //priv_key_mainnet_spend, (enc)
@ -29,40 +37,29 @@ pub struct ItemMember {
} }
impl ItemMember { impl ItemMember {
pub fn new(role: Role, sp_address: u32) -> Self { pub fn new(role: Role, sp_address: SilentPaymentAddress) -> Self {
ItemMember {role, sp_address} ItemMember {role, sp_address}
} }
} }
#[derive(Debug, Serialize)] #[derive(Debug, Clone)]
#[wasm_bindgen]
pub struct Prdlist { pub struct Prdlist {
//pub id: String, //pub id: String,
//pub version: String, //pub version: String,
pub gestionnaires: Vec<ItemMember>, pub gestionnaires: Vec<ItemMember>,
// pub gestionnaires: Box<Vec<ItemMember>>,
} }
//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)] #[derive(Serialize)]
#[wasm_bindgen]
struct RequestBody { struct RequestBody {
message: String, message: String,
} }
#[wasm_bindgen] pub fn send_PrdRequest(prdlist: &Prdlist) -> Result<(), JsValue> {
pub async fn send_PrdRequest(prdlist: &Prdlist) -> Result<(), JsValue> {
let managers: Vec<&ItemMember> = prdlist.gestionnaires.iter().filter(|m| m.role == Role::Manager).collect(); let managers: Vec<&ItemMember> = prdlist.gestionnaires.iter().filter(|m| m.role == Role::Manager).collect();
for manager in managers { for manager in managers {
let request_body = RequestBody { let request_body = RequestBody {
@ -83,3 +80,4 @@ pub async fn send_PrdRequest(prdlist: &Prdlist) -> Result<(), JsValue> {