Make saved Cashu sends recoverable and record deferred connection UX scope

This commit is contained in:
archipelago
2026-10-06 17:19:30 -04:00
parent af85d2be53
commit 4228ce443c
7 changed files with 456 additions and 19 deletions
+16 -2
View File
@@ -802,10 +802,24 @@ impl<'a> Journal<'a> {
match &record.request {
Request::Exact { proofs: expected } => {
anyhow::ensure!(
outcome.change.is_empty()
&& serde_json::to_value(proofs)? == serde_json::to_value(expected)?,
outcome.change.is_empty() && proofs.len() == expected.len(),
"Exact payment result changed its proofs"
);
let mut expected: std::collections::HashMap<_, _> = expected
.iter()
.map(|proof| (proof.secret.as_str(), proof))
.collect();
for proof in proofs {
let original = expected
.remove(proof.secret.as_str())
.context("Exact payment result has an unknown or duplicate proof")?;
anyhow::ensure!(
proof.amount == original.amount
&& super::cashu::matches_stored_keyset_id(&proof.id, &original.id)
&& proof.c_as_pubkey()? == original.c_as_pubkey()?,
"Exact payment result changed its proofs"
);
}
}
Request::Swap(prepared) => {
let mut all = proofs.clone();