Expose switch_network to frontend
This commit is contained in:
@@ -112,4 +112,8 @@ impl Config {
|
||||
.parse()
|
||||
.expect("stored vesting contract address is not a valid account address")
|
||||
}
|
||||
|
||||
pub fn get_mnemonic(&self) -> &str {
|
||||
&self.base.mnemonic
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ fn main() {
|
||||
.invoke_handler(tauri::generate_handler![
|
||||
mixnet::account::connect_with_mnemonic,
|
||||
mixnet::account::create_new_account,
|
||||
mixnet::account::switch_network,
|
||||
mixnet::account::get_balance,
|
||||
mixnet::admin::get_contract_settings,
|
||||
mixnet::admin::update_contract_settings,
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
use crate::coin::{Coin, Denom};
|
||||
use crate::config::Config;
|
||||
use crate::error::BackendError;
|
||||
use crate::network::Network;
|
||||
use crate::nymd_client;
|
||||
@@ -10,8 +9,6 @@ use std::convert::{TryFrom, TryInto};
|
||||
use std::str::FromStr;
|
||||
use std::sync::Arc;
|
||||
use tokio::sync::RwLock;
|
||||
use validator_client::nymd::SigningNymdClient;
|
||||
use validator_client::Client;
|
||||
|
||||
#[cfg_attr(test, derive(ts_rs::TS))]
|
||||
#[derive(Serialize, Deserialize)]
|
||||
@@ -35,30 +32,12 @@ pub async fn connect_with_mnemonic(
|
||||
state: tauri::State<'_, Arc<RwLock<State>>>,
|
||||
) -> Result<Account, BackendError> {
|
||||
let mnemonic = Mnemonic::from_str(&mnemonic)?;
|
||||
let client = {
|
||||
let r_state = state.read().await;
|
||||
_connect_with_mnemonic(
|
||||
mnemonic,
|
||||
Network::try_from(config::defaults::default_network())?,
|
||||
&r_state.config(),
|
||||
)
|
||||
};
|
||||
|
||||
let contract_address = client.nymd.mixnet_contract_address()?.to_string();
|
||||
let client_address = client.nymd.address().to_string();
|
||||
let denom = client.nymd.denom()?;
|
||||
|
||||
let account = Account {
|
||||
contract_address,
|
||||
client_address,
|
||||
denom: denom.try_into()?,
|
||||
mnemonic: None,
|
||||
};
|
||||
|
||||
let mut w_state = state.write().await;
|
||||
w_state.set_client(client);
|
||||
|
||||
Ok(account)
|
||||
_connect_with_mnemonic(
|
||||
mnemonic,
|
||||
Network::try_from(config::defaults::default_network())?,
|
||||
state,
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
@@ -96,26 +75,57 @@ pub async fn create_new_account(
|
||||
Ok(client)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn switch_network(
|
||||
state: tauri::State<'_, Arc<RwLock<State>>>,
|
||||
network: Network,
|
||||
) -> Result<Account, BackendError> {
|
||||
let mnemonic = {
|
||||
let r_state = state.read().await;
|
||||
Mnemonic::from_str(r_state.config().get_mnemonic())?
|
||||
};
|
||||
_connect_with_mnemonic(mnemonic, network, state).await
|
||||
}
|
||||
|
||||
fn random_mnemonic() -> Mnemonic {
|
||||
let mut rng = rand::thread_rng();
|
||||
Mnemonic::generate_in_with(&mut rng, Language::English, 24).unwrap()
|
||||
}
|
||||
|
||||
fn _connect_with_mnemonic(
|
||||
async fn _connect_with_mnemonic(
|
||||
mnemonic: Mnemonic,
|
||||
network: Network,
|
||||
config: &Config,
|
||||
) -> Client<SigningNymdClient> {
|
||||
match validator_client::Client::new_signing(
|
||||
validator_client::Config::new(
|
||||
config.get_nymd_validator_url(network),
|
||||
config.get_validator_api_url(network),
|
||||
Some(config.get_mixnet_contract_address(network)),
|
||||
Some(config.get_vesting_contract_address(network)),
|
||||
),
|
||||
mnemonic,
|
||||
) {
|
||||
Ok(client) => client,
|
||||
Err(e) => panic!("{}", e),
|
||||
}
|
||||
state: tauri::State<'_, Arc<RwLock<State>>>,
|
||||
) -> Result<Account, BackendError> {
|
||||
let client = {
|
||||
let config = state.read().await.config();
|
||||
match validator_client::Client::new_signing(
|
||||
validator_client::Config::new(
|
||||
config.get_nymd_validator_url(network),
|
||||
config.get_validator_api_url(network),
|
||||
Some(config.get_mixnet_contract_address(network)),
|
||||
Some(config.get_vesting_contract_address(network)),
|
||||
),
|
||||
mnemonic,
|
||||
) {
|
||||
Ok(client) => client,
|
||||
Err(e) => panic!("{}", e),
|
||||
}
|
||||
};
|
||||
|
||||
let contract_address = client.nymd.mixnet_contract_address()?.to_string();
|
||||
let client_address = client.nymd.address().to_string();
|
||||
let denom = client.nymd.denom()?;
|
||||
|
||||
let account = Account {
|
||||
contract_address,
|
||||
client_address,
|
||||
denom: denom.try_into()?,
|
||||
mnemonic: None,
|
||||
};
|
||||
|
||||
let mut w_state = state.write().await;
|
||||
w_state.set_client(client);
|
||||
|
||||
Ok(account)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user