mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-04-28 03:00:18 -04:00
token_list: refactored TokenList and fixed generate_id error
This commit is contained in:
@@ -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));
|
||||
|
||||
@@ -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};
|
||||
|
||||
@@ -8,7 +8,6 @@ use std::collections::HashMap;
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct TokenList {
|
||||
sol_tokenlist: Value,
|
||||
drk_tokenlist: HashMap<NetworkName, jubjub::Fr>,
|
||||
}
|
||||
|
||||
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<Vec<String>> {
|
||||
@@ -52,7 +40,7 @@ impl TokenList {
|
||||
return Ok(symbols);
|
||||
}
|
||||
|
||||
pub fn search_id(self, symbol: &str) -> Result<String> {
|
||||
pub fn search_id(&self, symbol: &str) -> Result<String> {
|
||||
let tokens = self.sol_tokenlist["tokens"]
|
||||
.as_array()
|
||||
.ok_or(Error::TokenParseError)?;
|
||||
@@ -82,6 +70,24 @@ impl TokenList {
|
||||
}
|
||||
}
|
||||
|
||||
pub struct DrkTokenList {
|
||||
drk_tokenlist: HashMap<String, jubjub::Fr>,
|
||||
}
|
||||
|
||||
impl DrkTokenList {
|
||||
pub fn new(list: TokenList) -> Result<Self> {
|
||||
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::*;
|
||||
|
||||
Reference in New Issue
Block a user