@@ -607,6 +607,8 @@ pub(crate) async fn handle_online_wallet_subcommand(
607607 wallet : & mut Wallet ,
608608 client : & BlockchainClient ,
609609 online_subcommand : OnlineWalletSubCommand ,
610+ datadir : Option < std:: path:: PathBuf > ,
611+ wallet_name : String ,
610612) -> Result < String , Error > {
611613 match online_subcommand {
612614 FullScan {
@@ -724,7 +726,8 @@ pub(crate) async fn handle_online_wallet_subcommand(
724726 max_fee_rate,
725727 } => {
726728 let relay_manager = Arc :: new ( Mutex :: new ( RelayManager :: new ( ) ) ) ;
727- let mut payjoin_manager = PayjoinManager :: new ( wallet, relay_manager) ;
729+ let db = open_payjoin_db ( datadir. clone ( ) , & wallet_name) ?;
730+ let mut payjoin_manager = PayjoinManager :: new ( wallet, relay_manager, db) ;
728731 return payjoin_manager
729732 . receive_payjoin ( amount, directory, max_fee_rate, ohttp_relay, client)
730733 . await ;
@@ -735,11 +738,25 @@ pub(crate) async fn handle_online_wallet_subcommand(
735738 fee_rate,
736739 } => {
737740 let relay_manager = Arc :: new ( Mutex :: new ( RelayManager :: new ( ) ) ) ;
738- let mut payjoin_manager = PayjoinManager :: new ( wallet, relay_manager) ;
741+ let db = open_payjoin_db ( datadir. clone ( ) , & wallet_name) ?;
742+ let mut payjoin_manager = PayjoinManager :: new ( wallet, relay_manager, db) ;
739743 return payjoin_manager
740744 . send_payjoin ( uri, fee_rate, ohttp_relay, client)
741745 . await ;
742746 }
747+ ResumePayjoin {
748+ directory,
749+ ohttp_relay,
750+ session_id,
751+ } => {
752+ let relay_manager = Arc :: new ( Mutex :: new ( RelayManager :: new ( ) ) ) ;
753+ let db = open_payjoin_db ( datadir, & wallet_name) ?;
754+ let mut payjoin_manager = PayjoinManager :: new ( wallet, relay_manager, db) ;
755+ return payjoin_manager
756+ . resume_payjoins ( directory, ohttp_relay, session_id, client)
757+ . await ;
758+ }
759+ PayjoinHistory => crate :: payjoin:: PayjoinManager :: history ( datadir, & wallet_name) ,
743760 }
744761}
745762
@@ -1210,11 +1227,12 @@ pub(crate) async fn handle_command(cli_opts: CliOpts) -> Result<String, Error> {
12101227 wallet,
12111228 subcommand : WalletSubCommand :: OnlineWalletSubCommand ( online_subcommand) ,
12121229 } => {
1213- let home_dir = prepare_home_dir ( cli_opts. datadir ) ?;
1230+ let home_dir = prepare_home_dir ( cli_opts. datadir . clone ( ) ) ?;
12141231
12151232 let ( wallet_opts, network) = load_wallet_config ( & home_dir, & wallet) ?;
12161233
12171234 let database_path = prepare_wallet_db_dir ( & home_dir, & wallet) ?;
1235+ let wallet_name = wallet. clone ( ) ;
12181236
12191237 #[ cfg( any( feature = "sqlite" , feature = "redb" ) ) ]
12201238 let result = {
@@ -1249,6 +1267,8 @@ pub(crate) async fn handle_command(cli_opts: CliOpts) -> Result<String, Error> {
12491267 & mut wallet,
12501268 & blockchain_client,
12511269 online_subcommand,
1270+ cli_opts. datadir . clone ( ) ,
1271+ wallet_name. clone ( ) ,
12521272 )
12531273 . await ?;
12541274 wallet. persist ( & mut persister) ?;
@@ -1259,8 +1279,14 @@ pub(crate) async fn handle_command(cli_opts: CliOpts) -> Result<String, Error> {
12591279 let mut wallet = new_wallet ( network, wallet_opts) ?;
12601280 let blockchain_client =
12611281 crate :: utils:: new_blockchain_client ( wallet_opts, & wallet, database_path) ?;
1262- handle_online_wallet_subcommand ( & mut wallet, & blockchain_client, online_subcommand)
1263- . await ?
1282+ handle_online_wallet_subcommand (
1283+ & mut wallet,
1284+ & blockchain_client,
1285+ online_subcommand,
1286+ cli_opts. datadir . clone ( ) ,
1287+ wallet_name,
1288+ )
1289+ . await ?
12641290 } ;
12651291 Ok ( result)
12661292 }
@@ -1453,9 +1479,15 @@ async fn respond(
14531479 } => {
14541480 let blockchain =
14551481 new_blockchain_client ( wallet_opts, wallet, _datadir) . map_err ( |e| e. to_string ( ) ) ?;
1456- let value = handle_online_wallet_subcommand ( wallet, & blockchain, online_subcommand)
1457- . await
1458- . map_err ( |e| e. to_string ( ) ) ?;
1482+ let value = handle_online_wallet_subcommand (
1483+ wallet,
1484+ & blockchain,
1485+ online_subcommand,
1486+ cli_opts. datadir . clone ( ) ,
1487+ wallet_name. clone ( ) ,
1488+ )
1489+ . await
1490+ . map_err ( |e| e. to_string ( ) ) ?;
14591491 Some ( value)
14601492 }
14611493 ReplSubCommand :: Wallet {
0 commit comments