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

changed balances hashmap to <String, u64>

lunar-mining 4 лет назад
Родитель
Сommit
90b0dd9f60
3 измененных файлов с 34 добавлено и 24 удалено
  1. 30 20
      src/bin/darkfid.rs
  2. 1 1
      src/client.rs
  3. 3 3
      src/wallet/walletdb.rs

+ 30 - 20
src/bin/darkfid.rs

@@ -47,7 +47,7 @@ impl RequestHandler for Darkfid {
             Some("create_wallet") => return self.create_wallet(req.id, req.params).await,
             Some("key_gen") => return self.key_gen(req.id, req.params).await,
             Some("get_key") => return self.get_key(req.id, req.params).await,
-            Some("get_balances") => return self.get_balances(req.id, req.params).await,
+            //Some("get_balances") => return self.get_balances(req.id, req.params).await,
             Some("get_token_id") => return self.get_token_id(req.id, req.params).await,
             Some("features") => return self.features(req.id, req.params).await,
             Some("deposit") => return self.deposit(req.id, req.params).await,
@@ -138,25 +138,35 @@ impl Darkfid {
     //
     // --> {"method": "get_key", "params": []}
     // <-- {"result": "balances": "[value: 0, token: btc]"}
-    async fn get_balances(&self, id: Value, _params: Value) -> JsonResult {
-        let balances = self.client.lock().await.get_balances().await.unwrap();
-        let mut symbols = Vec::new();
-        for id in balances.values() {
-            let symbol = self
-                .drk_tokenlist
-                .clone()
-                .symbol_from_id(id.clone())
-                .unwrap();
-            symbols.push(symbol.unwrap().to_string());
-        }
-        let mut amounts = Vec::new();
-        for amount in balances.keys() {
-            amounts.push(amount);
-        }
-        let mut new_balances = HashMap::new();
-        new_balances.insert(symbols, amounts);
-        return JsonResult::Resp(jsonresp(json!(new_balances), id));
-    }
+    //async fn get_balances(&self, id: Value, _params: Value) -> JsonResult {
+    //    let result: Result<HashMap<String, u64>> = async {
+    //        let balances = self.client.lock().await.get_balances().await?;
+    //        let mut symbols = Vec::new();
+    //        let mut amounts = Vec::new();
+    //        let mut new_balances = HashMap::new();
+    //        for id in balances.values() {
+    //            if let Some(symbol) = self.drk_tokenlist.clone().symbol_from_id(id.clone())? {
+    //                symbols.push(symbol);
+    //            }
+
+    //            for amount in balances.keys() {
+    //                amounts.push(amount);
+    //            }
+    //        }
+    //        let mut new_balances = HashMap::new();
+    //        new_balances.insert(symbols, amounts);
+    //        let new_balances: HashMap<String, u64> = symbols
+    //            .iter()
+    //            .filter_map(|symbol| Some(amounts.iter()))
+    //            .collect();
+    //        Ok(new_balances)
+    //    }
+    //    .await;
+    //    match result {
+    //        Ok(res) => JsonResult::Resp(jsonresp(json!(res), json!(res))),
+    //        Err(err) => JsonResult::Err(jsonerr(InternalError, Some(err.to_string()), json!(id))),
+    //    }
+    //}
 
     // --> {"method": "get_token_id", "params": [network, token]}
     // <-- {"result": "Ht5G1RhkcKnpLVLMhqJc5aqZ4wYUEbxbtZwGCVbgU7DL"}

+ 1 - 1
src/client.rs

@@ -366,7 +366,7 @@ impl Client {
         self.state.lock().await.wallet.key_gen()
     }
 
-    pub async fn get_balances(&self) -> Result<HashMap<u64, jubjub::Fr>> {
+    pub async fn get_balances(&self) -> Result<HashMap<String, u64>> {
         self.state.lock().await.wallet.get_balances()
     }
 

+ 3 - 3
src/wallet/walletdb.rs

@@ -313,7 +313,7 @@ impl WalletDb {
         Ok(pub_keys)
     }
 
-    pub fn get_balances(&self) -> Result<HashMap<u64, jubjub::Fr>> {
+    pub fn get_balances(&self) -> Result<HashMap<String, u64>> {
         debug!(target: "WALLETDB", "Get token and balances...");
         let conn = Connection::open(&self.path)?;
         conn.pragma_update(None, "key", &self.password)?;
@@ -327,9 +327,9 @@ impl WalletDb {
             let row = row?;
             let _coin_id: u64 = row.0;
             let value: u64 = row.1;
-            let token_id: jubjub::Fr = self.get_value_deserialized(&row.2)?;
+            let token_id: String = row.2;
 
-            balances.insert(value, token_id);
+            balances.insert(token_id, value);
         }
         Ok(balances)
     }