Просмотр исходного кода

darkfid: proper way to get the network when print balances

ghassmo 4 лет назад
Родитель
Сommit
ea51393788
2 измененных файлов с 10 добавлено и 23 удалено
  1. 7 13
      src/bin/darkfid.rs
  2. 3 10
      src/util/token_list.rs

+ 7 - 13
src/bin/darkfid.rs

@@ -176,25 +176,19 @@ impl Darkfid {
             let mut symbols: HashMap<String, (String, String)> = HashMap::new();
 
             for balance in balances.list.iter() {
-                // XXX: this must be changed once cashierd
-                // supports more than two networks
-
-                let mut network = "solana";
-
-                if balance.token_id.to_string()
-                    == "0x01300f9bce0f9ba7168dc001a67bcbda3a5bf4bdb4c56ae900fe4698cee9a7bd"
+                if let Some((network, symbol)) =
+                    self.drk_tokenlist.symbol_from_id(&balance.token_id)?
                 {
-                    network = "bitcoin"
-                }
-
-                if let Some(symbol) = self.drk_tokenlist.symbol_from_id(&balance.token_id)? {
                     let amount = encode_base10(BigUint::from(balance.value), 8);
                     symbols.insert(symbol, (amount, network.to_string()));
                 } else {
-                    // TODO: Fetch decimals, or do we use 8 decimals for all our internal tokens?
                     // TODO: SQL needs to have the mint address for show, not the internal hash.
+                    // TODO: SQL needs to have the network name
                     let amount = encode_base10(BigUint::from(balance.value), 8);
-                    symbols.insert(balance.token_id.to_string(), (amount, network.to_string()));
+                    symbols.insert(
+                        balance.token_id.to_string(),
+                        (amount, String::from("UNKNOWN")),
+                    );
                 }
             }
             Ok(symbols)

+ 3 - 10
src/util/token_list.rs

@@ -107,18 +107,11 @@ impl DrkTokenList {
         Err(Error::NotSupportedToken)
     }
 
-    pub fn symbol_from_id(
-        &self,
-        id: &jubjub::Fr,
-    ) -> Result<Option<String>> {
-        if id.to_string() == "0x01300f9bce0f9ba7168dc001a67bcbda3a5bf4bdb4c56ae900fe4698cee9a7bd" {
-            return Ok(Some("BTC".to_string()));
-        }
-
-        for (_, tokens) in self.tokens.iter() {
+    pub fn symbol_from_id(&self, id: &jubjub::Fr) -> Result<Option<(NetworkName, String)>> {
+        for (network, tokens) in self.tokens.iter() {
             for (key, val) in tokens.iter() {
                 if val == id {
-                    return Ok(Some(key.clone()));
+                    return Ok(Some((network.clone(), key.clone())));
                 }
             }
         }