Browse Source

Remove received proofs from db after swap

David Caseria 5 months ago
parent
commit
8fa770ca0d
1 changed files with 15 additions and 5 deletions
  1. 15 5
      crates/cdk/src/wallet/receive.rs

+ 15 - 5
crates/cdk/src/wallet/receive.rs

@@ -117,7 +117,9 @@ impl Wallet {
             .into_iter()
             .map(|p| ProofInfo::new(p, self.mint_url.clone(), State::Pending, self.unit))
             .collect::<Result<Vec<ProofInfo>, _>>()?;
-        self.localstore.update_proofs(proofs_info, vec![]).await?;
+        self.localstore
+            .update_proofs(proofs_info.clone(), vec![])
+            .await?;
 
         let mut pre_swap = self
             .create_swap(None, amount_split_target, proofs, None, false)
@@ -152,13 +154,21 @@ impl Wallet {
         mint_proofs.extend(p);
 
         let mut total_amount = Amount::ZERO;
-        for (mint, proofs) in received_proofs {
-            total_amount += Amount::try_sum(proofs.iter().map(|p| p.amount))?;
-            let proofs = proofs
+        for (mint, recv_proofs) in received_proofs {
+            total_amount += Amount::try_sum(recv_proofs.iter().map(|p| p.amount))?;
+            let recv_proof_infos = recv_proofs
                 .into_iter()
                 .map(|proof| ProofInfo::new(proof, mint.clone(), State::Unspent, self.unit))
                 .collect::<Result<Vec<ProofInfo>, _>>()?;
-            self.localstore.update_proofs(proofs, vec![]).await?;
+            self.localstore
+                .update_proofs(
+                    recv_proof_infos,
+                    proofs_info
+                        .iter()
+                        .filter_map(|p| if p.mint_url == mint { Some(p.y) } else { None })
+                        .collect(),
+                )
+                .await?;
         }
 
         Ok(total_amount)