@@ -32,7 +32,7 @@ pub struct TransactionDraft {
32
32
network : Network ,
33
33
inputs : Vec < Coin > ,
34
34
recipients : Vec < Recipient > ,
35
- generated : Option < Psbt > ,
35
+ generated : Option < ( Psbt , Vec < String > ) > ,
36
36
batch_label : Option < String > ,
37
37
labels : HashMap < String , String > ,
38
38
}
@@ -83,7 +83,7 @@ pub struct DefineSpend {
83
83
batch_label : form:: Value < String > ,
84
84
amount_left_to_select : Option < Amount > ,
85
85
feerate : form:: Value < String > ,
86
- generated : Option < Psbt > ,
86
+ generated : Option < ( Psbt , Vec < String > ) > ,
87
87
warning : Option < Error > ,
88
88
}
89
89
@@ -384,7 +384,9 @@ impl Step for DefineSpend {
384
384
. create_spend_tx ( & inputs, & outputs, feerate_vb)
385
385
. map_err ( |e| e. into ( ) )
386
386
. and_then ( |res| match res {
387
- CreateSpendResult :: Success { psbt, .. } => Ok ( psbt) ,
387
+ CreateSpendResult :: Success { psbt, warnings } => {
388
+ Ok ( ( psbt, warnings) )
389
+ }
388
390
CreateSpendResult :: InsufficientFunds { missing } => {
389
391
Err ( SpendCreationError :: CoinSelection (
390
392
liana:: spend:: InsufficientFunds { missing } ,
@@ -438,7 +440,7 @@ impl Step for DefineSpend {
438
440
. filter_map ( |( coin, selected) | if * selected { Some ( coin) } else { None } )
439
441
. cloned ( )
440
442
. collect ( ) ;
441
- if let Some ( psbt) = & self . generated {
443
+ if let Some ( ( psbt, _ ) ) = & self . generated {
442
444
draft. labels = self . coins_labels . clone ( ) ;
443
445
for ( i, output) in psbt. unsigned_tx . output . iter ( ) . enumerate ( ) {
444
446
if let Some ( label) = self
@@ -583,7 +585,7 @@ impl Recipient {
583
585
584
586
pub struct SaveSpend {
585
587
wallet : Arc < Wallet > ,
586
- spend : Option < psbt:: PsbtState > ,
588
+ spend : Option < ( psbt:: PsbtState , Vec < String > ) > ,
587
589
curve : secp256k1:: Secp256k1 < secp256k1:: VerifyOnly > ,
588
590
}
589
591
@@ -599,7 +601,7 @@ impl SaveSpend {
599
601
600
602
impl Step for SaveSpend {
601
603
fn load ( & mut self , draft : & TransactionDraft ) {
602
- let psbt = draft. generated . clone ( ) . unwrap ( ) ;
604
+ let ( psbt, warnings ) = draft. generated . clone ( ) . unwrap ( ) ;
603
605
let mut tx = SpendTx :: new (
604
606
None ,
605
607
psbt,
@@ -623,12 +625,15 @@ impl Step for SaveSpend {
623
625
}
624
626
}
625
627
626
- self . spend = Some ( psbt:: PsbtState :: new ( self . wallet . clone ( ) , tx, false ) ) ;
628
+ self . spend = Some ( (
629
+ psbt:: PsbtState :: new ( self . wallet . clone ( ) , tx, false ) ,
630
+ warnings,
631
+ ) ) ;
627
632
}
628
633
629
634
fn subscription ( & self ) -> Subscription < Message > {
630
- if let Some ( spend ) = & self . spend {
631
- spend . subscription ( )
635
+ if let Some ( ( psbt_state , _ ) ) = & self . spend {
636
+ psbt_state . subscription ( )
632
637
} else {
633
638
Subscription :: none ( )
634
639
}
@@ -640,26 +645,27 @@ impl Step for SaveSpend {
640
645
cache : & Cache ,
641
646
message : Message ,
642
647
) -> Command < Message > {
643
- if let Some ( spend ) = & mut self . spend {
644
- spend . update ( daemon, cache, message)
648
+ if let Some ( ( psbt_state , _ ) ) = & mut self . spend {
649
+ psbt_state . update ( daemon, cache, message)
645
650
} else {
646
651
Command :: none ( )
647
652
}
648
653
}
649
654
650
655
fn view < ' a > ( & ' a self , cache : & ' a Cache ) -> Element < ' a , view:: Message > {
651
- let spend = self . spend . as_ref ( ) . unwrap ( ) ;
656
+ let ( psbt_state , warnings ) = self . spend . as_ref ( ) . unwrap ( ) ;
652
657
let content = view:: spend:: spend_view (
653
658
cache,
654
- & spend. tx ,
655
- spend. saved ,
656
- & spend. desc_policy ,
657
- & spend. wallet . keys_aliases ,
658
- spend. labels_edited . cache ( ) ,
659
+ & psbt_state. tx ,
660
+ warnings,
661
+ psbt_state. saved ,
662
+ & psbt_state. desc_policy ,
663
+ & psbt_state. wallet . keys_aliases ,
664
+ psbt_state. labels_edited . cache ( ) ,
659
665
cache. network ,
660
- spend . warning . as_ref ( ) ,
666
+ psbt_state . warning . as_ref ( ) ,
661
667
) ;
662
- if let Some ( action) = & spend . action {
668
+ if let Some ( action) = & psbt_state . action {
663
669
action. as_ref ( ) . view ( content)
664
670
} else {
665
671
content
0 commit comments