diff --git a/src/bin/darkfid.rs b/src/bin/darkfid.rs index be2990164..e9a38ca4a 100644 --- a/src/bin/darkfid.rs +++ b/src/bin/darkfid.rs @@ -370,6 +370,8 @@ impl Darkfid { async fn transfer(&self, id: Value, params: Value) -> JsonResult { //let token_vec = self.wallet.get_token_ids(); + //for (network_name, token_id) in self.tokenlist.drk_tokenlist.iter() {} + let args = params.as_array(); if args.is_none() { @@ -390,7 +392,7 @@ impl Darkfid { return JsonResult::Err(jsonerr(InvalidTokenIdParam, None, id)); } - let _token = address.as_str().unwrap(); + let _token = token.as_str().unwrap(); if address.as_str().is_none() { return JsonResult::Err(jsonerr(InvalidAddressParam, None, id)); diff --git a/src/util/mod.rs b/src/util/mod.rs index 589367870..0ceca67f0 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -6,4 +6,4 @@ pub mod token_list; pub use net_name::NetworkName; pub use parse::{assign_id, decimals, decode_base10, encode_base10, generate_id}; pub use path::{expand_path, join_config_path}; -pub use token_list::TokenList; +pub use token_list::{DrkTokenList, TokenList}; diff --git a/src/util/token_list.rs b/src/util/token_list.rs index 11d569ad9..44620d612 100644 --- a/src/util/token_list.rs +++ b/src/util/token_list.rs @@ -8,7 +8,6 @@ use std::collections::HashMap; #[derive(Debug, Clone)] pub struct TokenList { sol_tokenlist: Value, - drk_tokenlist: HashMap, } impl TokenList { @@ -16,7 +15,6 @@ impl TokenList { // TODO: FIXME let file_contents = std::fs::read_to_string("token/solanatokenlist.json")?; let sol_tokenlist: Value = serde_json::from_str(&file_contents)?; - let mut drk_tokenlist = HashMap::new(); let tokens = sol_tokenlist["tokens"] .as_array() @@ -27,17 +25,7 @@ impl TokenList { symbols.push(symbol.to_string()); } - for symbol in symbols { - let id = generate_id(&symbol, &NetworkName::Solana)?; - drk_tokenlist.insert(NetworkName::Solana, id); - } - - // TODO: add btc_id, NetworkName::Bitcoin to drk_tokenlist - - Ok(Self { - sol_tokenlist, - drk_tokenlist, - }) + Ok(Self { sol_tokenlist }) } pub fn get_symbols(self) -> Result> { @@ -52,7 +40,7 @@ impl TokenList { return Ok(symbols); } - pub fn search_id(self, symbol: &str) -> Result { + pub fn search_id(&self, symbol: &str) -> Result { let tokens = self.sol_tokenlist["tokens"] .as_array() .ok_or(Error::TokenParseError)?; @@ -82,6 +70,24 @@ impl TokenList { } } +pub struct DrkTokenList { + drk_tokenlist: HashMap, +} + +impl DrkTokenList { + pub fn new(list: TokenList) -> Result { + let mut drk_tokenlist = HashMap::new(); + let symbols = list.clone().get_symbols()?; + for symbol in symbols { + let id = list.clone().search_id(&symbol)?; + let drk_id = generate_id(&id, &NetworkName::Solana)?; + drk_tokenlist.insert(symbol, drk_id); + } + // TODO: add btc_id, NetworkName::Bitcoin to drk_tokenlist + Ok(Self { drk_tokenlist }) + } +} + mod tests { use super::*;