88 type_alias_bounds
99) ]
1010extern crate core;
11+ extern crate payjoin as pj;
1112
1213pub mod auth;
1314mod chain;
@@ -30,6 +31,7 @@ mod node;
3031pub mod nodemanager;
3132pub mod nostr;
3233mod onchain;
34+ mod payjoin;
3335mod peermanager;
3436pub mod redshift;
3537pub mod scorer;
@@ -55,6 +57,7 @@ use crate::nostr::nwc::{
5557 BudgetPeriod , BudgetedSpendingConditions , NwcProfileTag , SpendingConditions ,
5658} ;
5759use crate :: nostr:: MUTINY_PLUS_SUBSCRIPTION_LABEL ;
60+ use crate :: payjoin:: PayjoinStorage ;
5861use crate :: storage:: { MutinyStorage , DEVICE_ID_KEY , EXPECTED_NETWORK_KEY , NEED_FULL_SYNC_KEY } ;
5962use crate :: { auth:: MutinyAuthClient , logging:: MutinyLogger } ;
6063use crate :: { error:: MutinyError , nostr:: ReservedProfile } ;
@@ -431,6 +434,7 @@ impl<S: MutinyStorage> MutinyWallet<S> {
431434 . await ?,
432435 ) ;
433436 NodeManager :: start_sync ( self . node_manager . clone ( ) ) ;
437+ NodeManager :: resume_payjoins ( self . node_manager . clone ( ) ) ;
434438
435439 // Redshifts disabled in safe mode
436440 if !self . config . safe_mode {
@@ -691,7 +695,7 @@ impl<S: MutinyStorage> MutinyWallet<S> {
691695 . await
692696 . unwrap ( ) ;
693697
694- let mut enroller = payjoin :: receive:: v2:: Enroller :: from_relay_config (
698+ let mut enroller = pj :: receive:: v2:: Enroller :: from_relay_config (
695699 PAYJOIN_DIR ,
696700 & ohttp_config_base64,
697701 OHTTP_RELAYS [ 0 ] , // TODO pick ohttp relay at random
@@ -710,13 +714,19 @@ impl<S: MutinyStorage> MutinyWallet<S> {
710714 . process_res ( ohttp_response. as_ref ( ) , context)
711715 . map_err ( |e| anyhow ! ( "parse error {}" , e) )
712716 . unwrap ( ) ;
717+ self . node_manager
718+ . storage
719+ . persist_payjoin ( enrolled. clone ( ) )
720+ . unwrap ( ) ;
713721 let pj_uri = enrolled. fallback_target ( ) ;
714722 log_debug ! ( self . logger, "{pj_uri}" ) ;
715723 let wallet = self . node_manager . wallet . clone ( ) ;
716724 let stop = self . node_manager . stop . clone ( ) ;
717725 // run await payjoin task in the background as it'll keep polling the relay
718726 utils:: spawn ( async move {
719- let pj_txid = NodeManager :: receive_payjoin ( wallet, stop, enrolled) . await . unwrap ( ) ;
727+ let pj_txid = NodeManager :: receive_payjoin ( wallet, stop, enrolled)
728+ . await
729+ . unwrap ( ) ;
720730 log:: info!( "Received payjoin txid: {}" , pj_txid) ;
721731 } ) ;
722732 Some ( pj_uri)
@@ -727,7 +737,7 @@ impl<S: MutinyStorage> MutinyWallet<S> {
727737 invoice,
728738 btc_amount : amount. map ( |amount| bitcoin:: Amount :: from_sat ( amount) . to_btc ( ) . to_string ( ) ) ,
729739 labels,
730- pj
740+ pj,
731741 } )
732742 }
733743
0 commit comments