diff --git a/crates/sp_client/Cargo.toml b/crates/sp_client/Cargo.toml index 6a6eee5..249e291 100644 --- a/crates/sp_client/Cargo.toml +++ b/crates/sp_client/Cargo.toml @@ -17,6 +17,7 @@ getrandom = { version="0.2.12", features = ["js"] } wasm-logger = "0.2.0" rand = "0.8.5" log = "0.4.6" +tsify = { git = "https://github.com/Sosthene00/tsify", branch = "next" } [dev-dependencies] wasm-bindgen-test = "0.3" diff --git a/crates/sp_client/src/api.rs b/crates/sp_client/src/api.rs index b1f6ad3..0628a60 100644 --- a/crates/sp_client/src/api.rs +++ b/crates/sp_client/src/api.rs @@ -1,17 +1,21 @@ use rand::Rng; +use serde::{Deserialize, Serialize}; use sp_backend::silentpayments::sending::SilentPaymentAddress; use wasm_bindgen::prelude::*; +use tsify::Tsify; use sp_backend::spclient::SpendKey; use sp_backend::spclient::{derive_keys_from_seed, SpClient, OutputList}; const IS_TESTNET: bool = true; -#[wasm_bindgen] -pub struct GenerateSpWalletReturn { - sp_client_json: String, - sp_outputs_json: String, +#[derive(Tsify, Serialize, Deserialize)] +#[tsify(into_wasm_abi)] +#[allow(non_camel_case_types)] +pub struct generate_sp_wallet_return { + pub sp_client_json: String, + pub sp_outputs_json: String, } #[wasm_bindgen] @@ -19,19 +23,13 @@ pub fn setup() { wasm_logger::init(wasm_logger::Config::default()); } -fn new_key() -> Vec { +#[wasm_bindgen] +pub fn generate_sp_wallet(label: Option, birthday: u32, is_testnet: bool) -> Option { let mut seed = [0u8; 64]; rand::thread_rng().fill(&mut seed); - seed.to_vec() -} - -#[wasm_bindgen] -pub fn generate_sp_wallet(birthday: u32, is_testnet: bool) -> Option { - let mut seed = [0u8; 64]; - seed.copy_from_slice(&new_key()); let (scan_sk, spend_sk) = derive_keys_from_seed(&seed, is_testnet).ok()?; let sp_client = SpClient::new( - "".to_owned(), + label.unwrap_or("default".into()), scan_sk, SpendKey::Secret(spend_sk), None, @@ -43,21 +41,19 @@ pub fn generate_sp_wallet(birthday: u32, is_testnet: bool) -> Option