diff --git a/crates/cdk/src/wallet/receive.rs b/crates/cdk/src/wallet/receive.rs index cc28cd0a..0a4bbbb5 100644 --- a/crates/cdk/src/wallet/receive.rs +++ b/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::, _>>()?; - 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::, _>>()?; - 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)