Update device
This commit is contained in:
parent
ae807c3857
commit
4885066bd2
@ -3,8 +3,7 @@ use tsify::Tsify;
|
|||||||
use wasm_bindgen::prelude::*;
|
use wasm_bindgen::prelude::*;
|
||||||
|
|
||||||
use sp_client::{
|
use sp_client::{
|
||||||
bitcoin::{hashes::Hash, OutPoint, Txid},
|
bitcoin::{consensus::serialize, OutPoint}, silentpayments::utils::SilentPaymentAddress, spclient::SpWallet
|
||||||
spclient::SpWallet,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::pcd::Member;
|
use crate::pcd::Member;
|
||||||
@ -13,16 +12,18 @@ use crate::pcd::Member;
|
|||||||
#[tsify(into_wasm_abi, from_wasm_abi)]
|
#[tsify(into_wasm_abi, from_wasm_abi)]
|
||||||
pub struct Device {
|
pub struct Device {
|
||||||
sp_wallet: SpWallet,
|
sp_wallet: SpWallet,
|
||||||
pairing_process_commitment: Option<Txid>,
|
pairing_process_commitment: Option<OutPoint>,
|
||||||
paired_member: Option<Member>,
|
paired_member: Member,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Device {
|
impl Device {
|
||||||
pub fn new(sp_wallet: SpWallet) -> Self {
|
pub fn new(sp_wallet: SpWallet) -> Self {
|
||||||
|
let local_address = sp_wallet.get_client().get_receiving_address();
|
||||||
|
let member = Member::new(vec![SilentPaymentAddress::try_from(local_address).unwrap()]).unwrap();
|
||||||
Self {
|
Self {
|
||||||
sp_wallet,
|
sp_wallet,
|
||||||
pairing_process_commitment: None,
|
pairing_process_commitment: None,
|
||||||
paired_member: None,
|
paired_member: member,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -36,40 +37,41 @@ impl Device {
|
|||||||
|
|
||||||
pub fn is_linking(&self) -> bool {
|
pub fn is_linking(&self) -> bool {
|
||||||
match self.pairing_process_commitment {
|
match self.pairing_process_commitment {
|
||||||
Some(ref value) => value.as_raw_hash().as_byte_array().iter().all(|&b| b == 0),
|
Some(ref value) => serialize(value).iter().all(|&b| b == 0),
|
||||||
None => false,
|
None => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn is_linked(&self) -> bool {
|
pub fn is_linked(&self) -> bool {
|
||||||
match self.pairing_process_commitment {
|
match self.pairing_process_commitment {
|
||||||
Some(ref value) => !value.as_raw_hash().as_byte_array().iter().all(|&b| b == 0),
|
Some(ref value) => !serialize(value).iter().all(|&b| b == 0),
|
||||||
None => false,
|
None => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_process_commitment(&self) -> Option<Txid> {
|
pub fn get_pairing_commitment(&self) -> Option<OutPoint> {
|
||||||
self.pairing_process_commitment.clone()
|
self.pairing_process_commitment.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn pair(&mut self, commitment_tx: Txid, member: Member) {
|
pub fn pair(&mut self, commitment_outpoint: OutPoint, member: Member) {
|
||||||
self.pairing_process_commitment = Some(commitment_tx);
|
self.pairing_process_commitment = Some(commitment_outpoint);
|
||||||
self.paired_member = Some(member);
|
self.paired_member = member;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn unpair(&mut self) {
|
pub fn unpair(&mut self) {
|
||||||
self.paired_member = None;
|
let local_address = self.get_wallet().get_client().get_receiving_address();
|
||||||
|
let member = Member::new(vec![SilentPaymentAddress::try_from(local_address).unwrap()]).unwrap();
|
||||||
|
self.paired_member = member;
|
||||||
self.pairing_process_commitment = None;
|
self.pairing_process_commitment = None;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn to_member(&self) -> Option<Member> {
|
pub fn to_member(&self) -> Member {
|
||||||
self.paired_member.clone()
|
self.paired_member.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_other_addresses(&self) -> Vec<String> {
|
pub fn get_other_addresses(&self) -> Vec<String> {
|
||||||
let our_address = self.get_wallet().get_client().get_receiving_address();
|
let our_address = self.get_wallet().get_client().get_receiving_address();
|
||||||
self.to_member()
|
self.to_member()
|
||||||
.unwrap()
|
|
||||||
.get_addresses()
|
.get_addresses()
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.filter(|a| *a != our_address)
|
.filter(|a| *a != our_address)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user