@@ -654,6 +654,8 @@ pub(crate) async fn handle_online_wallet_subcommand(
654654 wallet : & mut Wallet ,
655655 client : & BlockchainClient ,
656656 online_subcommand : OnlineWalletSubCommand ,
657+ datadir : Option < std:: path:: PathBuf > ,
658+ wallet_name : String ,
657659) -> Result < String , Error > {
658660 match online_subcommand {
659661 FullScan {
@@ -771,7 +773,8 @@ pub(crate) async fn handle_online_wallet_subcommand(
771773 max_fee_rate,
772774 } => {
773775 let relay_manager = Arc :: new ( Mutex :: new ( RelayManager :: new ( ) ) ) ;
774- let mut payjoin_manager = PayjoinManager :: new ( wallet, relay_manager) ;
776+ let db = open_payjoin_db ( datadir. clone ( ) , & wallet_name) ?;
777+ let mut payjoin_manager = PayjoinManager :: new ( wallet, relay_manager, db) ;
775778 return payjoin_manager
776779 . receive_payjoin ( amount, directory, max_fee_rate, ohttp_relay, client)
777780 . await ;
@@ -782,11 +785,25 @@ pub(crate) async fn handle_online_wallet_subcommand(
782785 fee_rate,
783786 } => {
784787 let relay_manager = Arc :: new ( Mutex :: new ( RelayManager :: new ( ) ) ) ;
785- let mut payjoin_manager = PayjoinManager :: new ( wallet, relay_manager) ;
788+ let db = open_payjoin_db ( datadir. clone ( ) , & wallet_name) ?;
789+ let mut payjoin_manager = PayjoinManager :: new ( wallet, relay_manager, db) ;
786790 return payjoin_manager
787791 . send_payjoin ( uri, fee_rate, ohttp_relay, client)
788792 . await ;
789793 }
794+ ResumePayjoin {
795+ directory,
796+ ohttp_relay,
797+ session_id,
798+ } => {
799+ let relay_manager = Arc :: new ( Mutex :: new ( RelayManager :: new ( ) ) ) ;
800+ let db = open_payjoin_db ( datadir, & wallet_name) ?;
801+ let mut payjoin_manager = PayjoinManager :: new ( wallet, relay_manager, db) ;
802+ return payjoin_manager
803+ . resume_payjoins ( directory, ohttp_relay, session_id, client)
804+ . await ;
805+ }
806+ PayjoinHistory => crate :: payjoin:: PayjoinManager :: history ( datadir, & wallet_name) ,
790807 }
791808}
792809
@@ -1257,11 +1274,12 @@ pub(crate) async fn handle_command(cli_opts: CliOpts) -> Result<String, Error> {
12571274 wallet,
12581275 subcommand : WalletSubCommand :: OnlineWalletSubCommand ( online_subcommand) ,
12591276 } => {
1260- let home_dir = prepare_home_dir ( cli_opts. datadir ) ?;
1277+ let home_dir = prepare_home_dir ( cli_opts. datadir . clone ( ) ) ?;
12611278
12621279 let ( wallet_opts, network) = load_wallet_config ( & home_dir, & wallet) ?;
12631280
12641281 let database_path = prepare_wallet_db_dir ( & home_dir, & wallet) ?;
1282+ let wallet_name = wallet. clone ( ) ;
12651283
12661284 #[ cfg( any( feature = "sqlite" , feature = "redb" ) ) ]
12671285 let result = {
@@ -1296,6 +1314,8 @@ pub(crate) async fn handle_command(cli_opts: CliOpts) -> Result<String, Error> {
12961314 & mut wallet,
12971315 & blockchain_client,
12981316 online_subcommand,
1317+ cli_opts. datadir . clone ( ) ,
1318+ wallet_name. clone ( ) ,
12991319 )
13001320 . await ?;
13011321 wallet. persist ( & mut persister) ?;
@@ -1306,8 +1326,14 @@ pub(crate) async fn handle_command(cli_opts: CliOpts) -> Result<String, Error> {
13061326 let mut wallet = new_wallet ( network, wallet_opts) ?;
13071327 let blockchain_client =
13081328 crate :: utils:: new_blockchain_client ( wallet_opts, & wallet, database_path) ?;
1309- handle_online_wallet_subcommand ( & mut wallet, & blockchain_client, online_subcommand)
1310- . await ?
1329+ handle_online_wallet_subcommand (
1330+ & mut wallet,
1331+ & blockchain_client,
1332+ online_subcommand,
1333+ cli_opts. datadir . clone ( ) ,
1334+ wallet_name,
1335+ )
1336+ . await ?
13111337 } ;
13121338 Ok ( result)
13131339 }
@@ -1510,9 +1536,15 @@ async fn respond(
15101536 } => {
15111537 let blockchain =
15121538 new_blockchain_client ( wallet_opts, wallet, _datadir) . map_err ( |e| e. to_string ( ) ) ?;
1513- let value = handle_online_wallet_subcommand ( wallet, & blockchain, online_subcommand)
1514- . await
1515- . map_err ( |e| e. to_string ( ) ) ?;
1539+ let value = handle_online_wallet_subcommand (
1540+ wallet,
1541+ & blockchain,
1542+ online_subcommand,
1543+ cli_opts. datadir . clone ( ) ,
1544+ wallet_name. clone ( ) ,
1545+ )
1546+ . await
1547+ . map_err ( |e| e. to_string ( ) ) ?;
15161548 Some ( value)
15171549 }
15181550 ReplSubCommand :: Wallet {
0 commit comments