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