@@ -219,11 +219,9 @@ impl OfferBuilder {
219
219
220
220
/// Builds an [`Offer`] from the builder's settings.
221
221
pub fn build ( self ) -> Result < Offer , ( ) > {
222
+ // TODO: Also check for Amount::Currency
222
223
if let Some ( Amount :: Currency { .. } ) = self . offer . amount {
223
- return Err ( ( ) ) ;
224
- }
225
-
226
- if self . offer . amount_msats ( ) > MAX_VALUE_MSAT {
224
+ } else if self . offer . amount_msats ( ) > MAX_VALUE_MSAT {
227
225
return Err ( ( ) ) ;
228
226
}
229
227
@@ -488,26 +486,11 @@ impl TryFrom<OfferTlvStream> for OfferContents {
488
486
issuer, quantity_min, quantity_max, node_id,
489
487
} = tlv_stream;
490
488
491
- let supported_chains = [
492
- ChainHash :: using_genesis_block ( Network :: Bitcoin ) ,
493
- ChainHash :: using_genesis_block ( Network :: Testnet ) ,
494
- ChainHash :: using_genesis_block ( Network :: Signet ) ,
495
- ChainHash :: using_genesis_block ( Network :: Regtest ) ,
496
- ] ;
497
- let chains = match chains {
498
- None => None ,
499
- Some ( chains) => match chains. first ( ) {
500
- None => Some ( chains) ,
501
- Some ( chain) if supported_chains. contains ( chain) => Some ( chains) ,
502
- _ => return Err ( SemanticError :: UnsupportedChain ) ,
503
- } ,
504
- } ;
505
-
506
489
let amount = match ( currency, amount) {
507
490
( None , None ) => None ,
508
491
( None , Some ( amount_msats) ) => Some ( Amount :: Bitcoin { amount_msats } ) ,
509
492
( Some ( _) , None ) => return Err ( SemanticError :: MissingAmount ) ,
510
- ( Some ( _ ) , Some ( _ ) ) => return Err ( SemanticError :: UnsupportedCurrency ) ,
493
+ ( Some ( iso4217_code ) , Some ( amount ) ) => Some ( Amount :: Currency { iso4217_code , amount } ) ,
511
494
} ;
512
495
513
496
let description = match description {
@@ -683,16 +666,14 @@ mod tests {
683
666
assert_eq ! ( tlv_stream. amount, Some ( 1000 ) ) ;
684
667
assert_eq ! ( tlv_stream. currency, None ) ;
685
668
686
- let builder = OfferBuilder :: new ( "foo" . into ( ) , pubkey ( 42 ) )
687
- . amount ( currency_amount. clone ( ) ) ;
688
- let tlv_stream = builder. offer . as_tlv_stream ( ) ;
689
- assert_eq ! ( builder. offer. amount. as_ref( ) , Some ( & currency_amount) ) ;
669
+ let offer = OfferBuilder :: new ( "foo" . into ( ) , pubkey ( 42 ) )
670
+ . amount ( currency_amount. clone ( ) )
671
+ . build ( )
672
+ . unwrap ( ) ;
673
+ let tlv_stream = offer. as_tlv_stream ( ) ;
674
+ assert_eq ! ( offer. amount( ) , Some ( & currency_amount) ) ;
690
675
assert_eq ! ( tlv_stream. amount, Some ( 10 ) ) ;
691
676
assert_eq ! ( tlv_stream. currency, Some ( b"USD" ) ) ;
692
- match builder. build ( ) {
693
- Ok ( _) => panic ! ( "expected error" ) ,
694
- Err ( e) => assert_eq ! ( e, ( ) ) ,
695
- }
696
677
697
678
let offer = OfferBuilder :: new ( "foo" . into ( ) , pubkey ( 42 ) )
698
679
. amount ( currency_amount. clone ( ) )
0 commit comments