From 62e083c8a39090c7bfbb319bc16503a6d6375f8d Mon Sep 17 00:00:00 2001 From: elnosh Date: Wed, 12 Feb 2025 14:03:56 -0500 Subject: [PATCH] wallet: save proofs in pending state in Restore --- wallet/restore.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/wallet/restore.go b/wallet/restore.go index 63dce13..76084fd 100644 --- a/wallet/restore.go +++ b/wallet/restore.go @@ -188,6 +188,8 @@ func Restore(walletPath, mnemonic string, mintsToRestore []string) (uint64, erro return 0, err } + pendingProofs := make(cashu.Proofs, 0, len(proofStateResponse.States)) + for _, proofState := range proofStateResponse.States { // NUT-07 can also respond with witness data. Since not supporting this yet, ignore proofs that have witness if len(proofState.Witness) > 0 { @@ -199,11 +201,22 @@ func Restore(walletPath, mnemonic string, mintsToRestore []string) (uint64, erro proof := proofs[proofState.Y] proofsRestored = append(proofsRestored, proof) } + + if proofState.State == nut07.Pending { + proof := proofs[proofState.Y] + pendingProofs = append(pendingProofs, proof) + } } if err := db.SaveProofs(proofsRestored); err != nil { return 0, fmt.Errorf("error saving restored proofs: %v", err) } + if len(pendingProofs) > 0 { + if err := db.AddPendingProofs(pendingProofs); err != nil { + return 0, fmt.Errorf("error saving pending proofs: %v", err) + } + } + // save wallet keyset with latest counter moving forward for wallet if err := db.IncrementKeysetCounter(keyset.Id, counter); err != nil { return 0, fmt.Errorf("error incrementing keyset counter: %v", err)