diff --git a/src/com/google/bitcoin/core/Wallet.java b/src/com/google/bitcoin/core/Wallet.java index 2c87deb6..0ec89d7a 100644 --- a/src/com/google/bitcoin/core/Wallet.java +++ b/src/com/google/bitcoin/core/Wallet.java @@ -429,6 +429,8 @@ public class Wallet implements Serializable { connectedOutput.markAsSpent(input); maybeMoveTxToSpent(connectedTx, "spent tx"); } + // Refresh the timestamp. + tx.updatedAt = new Date(); // Add to the pending pool. It'll be moved out once we receive this transaction on the best chain. pending.put(tx.getHash(), tx); } diff --git a/tests/com/google/bitcoin/core/WalletTest.java b/tests/com/google/bitcoin/core/WalletTest.java index 06d578e0..8eb774d9 100644 --- a/tests/com/google/bitcoin/core/WalletTest.java +++ b/tests/com/google/bitcoin/core/WalletTest.java @@ -296,14 +296,25 @@ public class WalletTest { assertEquals(1, transactions.size()); assertEquals(tx2, transactions.get(0)); + // Create a spend. + Transaction tx3 = wallet.createSend(new ECKey().toAddress(params), Utils.toNanoCoins(0, 5)); + // Does not appear in list yet. + assertEquals(2, wallet.getTransactionsByTime().size()); + wallet.confirmSend(tx3); + // Now it does. + transactions = wallet.getTransactionsByTime(); + assertEquals(3, transactions.size()); + assertEquals(tx3, transactions.get(0)); + // Verify we can handle the case of older wallets in which the timestamp is null (guessed from the // block appearances list). tx1.updatedAt = null; tx2.updatedAt = null; // Check we got them back in order. transactions = wallet.getTransactionsByTime(); - assertEquals(tx2, transactions.get(0)); - assertEquals(tx1, transactions.get(1)); - assertEquals(2, transactions.size()); + assertEquals(tx3, transactions.get(0)); + assertEquals(tx2, transactions.get(1)); + assertEquals(tx1, transactions.get(2)); + assertEquals(3, transactions.size()); } }