Skip to content

Commit e1bcce2

Browse files
committed
docs(wallet): add example to appl_update_events
1 parent fe88a73 commit e1bcce2

File tree

2 files changed

+74
-1
lines changed

2 files changed

+74
-1
lines changed

wallet/src/wallet/event.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ use chain::{BlockId, ChainPosition, ConfirmationBlockTime};
1010

1111
/// Events representing changes to wallet transactions.
1212
///
13-
/// Returned after calling [`Wallet::apply_update`](crate::wallet::Wallet::apply_update).
13+
/// Returned after calling
14+
/// [`Wallet::apply_update_events`](crate::wallet::Wallet::apply_update_events).
1415
#[derive(Debug, Clone, PartialEq, Eq)]
1516
#[non_exhaustive]
1617
pub enum WalletEvent {

wallet/src/wallet/mod.rs

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2379,6 +2379,78 @@ impl Wallet {
23792379
/// After applying updates you should process the events in your app before persisting the
23802380
/// staged wallet changes. For an example of how to persist staged wallet changes see
23812381
/// [`Wallet::reveal_next_address`].
2382+
///
2383+
/// ```rust,no_run
2384+
/// # use bitcoin::*;
2385+
/// # use bdk_wallet::*;
2386+
/// use bdk_wallet::event::WalletEvent;
2387+
/// # let wallet_update = Update::default();
2388+
/// # let mut wallet = doctest_wallet!();
2389+
/// let events = wallet.apply_update_events(wallet_update)?;
2390+
/// // Handle wallet relevant events from this update.
2391+
/// events.iter().for_each(|event| {
2392+
/// match event {
2393+
/// // The chain tip changed.
2394+
/// WalletEvent::ChainTipChanged { old_tip, new_tip } => {
2395+
/// todo!() // handle event
2396+
/// }
2397+
/// // An unconfirmed tx is now confirmed in a block.
2398+
/// WalletEvent::TxConfirmed {
2399+
/// txid,
2400+
/// tx,
2401+
/// block_time,
2402+
/// old_block_time: None,
2403+
/// } => {
2404+
/// todo!() // handle event
2405+
/// }
2406+
/// // A confirmed tx is now confirmed in a new block (reorg).
2407+
/// WalletEvent::TxConfirmed {
2408+
/// txid,
2409+
/// tx,
2410+
/// block_time,
2411+
/// old_block_time: Some(old_block_time),
2412+
/// } => {
2413+
/// todo!() // handle event
2414+
/// }
2415+
/// // A new unconfirmed tx was seen in the mempool.
2416+
/// WalletEvent::TxUnconfirmed {
2417+
/// txid,
2418+
/// tx,
2419+
/// old_block_time: None,
2420+
/// } => {
2421+
/// todo!() // handle event
2422+
/// }
2423+
/// // A previously confirmed tx in now unconfirmed in the mempool (reorg).
2424+
/// WalletEvent::TxUnconfirmed {
2425+
/// txid,
2426+
/// tx,
2427+
/// old_block_time: Some(old_block_time),
2428+
/// } => {
2429+
/// todo!() // handle event
2430+
/// }
2431+
/// // An unconfirmed tx was replaced in the mempool (RBF or double spent input).
2432+
/// WalletEvent::TxReplaced {
2433+
/// txid,
2434+
/// tx,
2435+
/// conflicts,
2436+
/// } => {
2437+
/// todo!() // handle event
2438+
/// }
2439+
/// // An unconfirmed tx was dropped from the mempool (fee too low).
2440+
/// WalletEvent::TxDropped { txid, tx } => {
2441+
/// todo!() // handle event
2442+
/// }
2443+
/// _ => {
2444+
/// // unexpected event, do nothing
2445+
/// }
2446+
/// }
2447+
/// // take staged wallet changes
2448+
/// let staged = wallet.take_staged();
2449+
/// // persist staged changes
2450+
/// });
2451+
/// # Ok::<(), anyhow::Error>(())
2452+
/// ```
2453+
/// [`TxBuilder`]: crate::TxBuilder
23822454
pub fn apply_update_events(
23832455
&mut self,
23842456
update: impl Into<Update>,

0 commit comments

Comments
 (0)