From 182964ed6f007691ed88aed1d37975837811fecb Mon Sep 17 00:00:00 2001 From: lunar-mining Date: Sun, 10 Oct 2021 09:22:27 +0200 Subject: [PATCH] darkfid: convert balance to float --- src/bin/darkfid.rs | 28 +++++++++++++++++++--------- src/util/parse.rs | 5 ----- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/bin/darkfid.rs b/src/bin/darkfid.rs index da5f52871..f66d68c98 100644 --- a/src/bin/darkfid.rs +++ b/src/bin/darkfid.rs @@ -9,8 +9,8 @@ use drk::{ }, serial::{deserialize, serialize}, util::{ - assign_id, decimals, decode_base10, expand_path, join_config_path, DrkTokenList, - NetworkName, SolTokenList, + assign_id, decimals, decode_base10, encode_base10, expand_path, join_config_path, + DrkTokenList, NetworkName, SolTokenList, }, wallet::WalletDb, Error, Result, @@ -137,23 +137,33 @@ impl Darkfid { // --> {"method": "get_balances", "params": []} // <-- {"result": "get_balances": "[token: btc, value: 0]"} async fn get_balances(&self, id: Value, _params: Value) -> JsonResult { - let result: Result> = async { + let result: Result> = async { let balances = self.client.lock().await.get_balances().await?; let mut symbols = Vec::new(); let mut amounts = Vec::new(); for id in balances.keys() { let id: jubjub::Fr = deserialize(&id)?; - if let Some(symbol) = self.drk_tokenlist.clone().symbol_from_id(id)? { - symbols.push(symbol); - } - for amount in balances.values() { - amounts.push(amount); + // this is hardcoded for SOL + // TODO: if id == btc_id: + // network = bitcoin + // else + // network = solana + + let network = "solana"; + + if let Some(symbol) = self.drk_tokenlist.clone().symbol_from_id(id)? { + let decimals = decimals(network, &symbol, &self.sol_tokenlist)?; + for amount in balances.values() { + let amount = encode_base10(*amount, decimals); + amounts.push(amount); + } + symbols.push(symbol); } } - let new_balances: HashMap = symbols + let new_balances: HashMap = symbols .into_iter() .zip(amounts.into_iter()) .map(|(key, value)| return (key.clone(), value.clone())) diff --git a/src/util/parse.rs b/src/util/parse.rs index 69a513c50..fcffa388f 100644 --- a/src/util/parse.rs +++ b/src/util/parse.rs @@ -80,11 +80,6 @@ pub fn decimals(network: &str, _token: &str, _tokenlist: &SolTokenList) -> Resul } } -//pub fn to_apo(amount: f64, decimals: u32) -> Result { -// let apo = amount as u64 * u64::pow(10, decimals as u32); -// Ok(apo) -//} - pub fn symbol_to_id(token: &str, tokenlist: &SolTokenList) -> Result { let vec: Vec = token.chars().collect(); let mut counter = 0;