Prevent recovering state from WaitingFeeAcceptance to Pending

This commit is contained in:
Daniel Granhão
2024-12-26 10:52:08 +00:00
parent 0394a66d4c
commit d2be2ea49a

View File

@@ -12,6 +12,8 @@ use lwk_wollet::hashes::{sha256, Hash as _};
use lwk_wollet::WalletTx;
use tokio::sync::Mutex;
use super::model::*;
use crate::model::PaymentState;
use crate::prelude::{Direction, Swap};
use crate::wallet::OnchainWallet;
use crate::{
@@ -19,8 +21,6 @@ use crate::{
recover::model::{BtcScript, HistoryTxId, LBtcScript},
};
use super::model::*;
pub(crate) struct Recoverer {
master_blinding_key: MasterBlindingKey,
onchain_wallet: Arc<dyn OnchainWallet>,
@@ -215,10 +215,15 @@ impl Recoverer {
};
let is_expired = bitcoin_height >= chain_swap.timeout_block_height;
let min_lockup_amount_sat = chain_swap.payer_amount_sat;
let is_waiting_fee_acceptance =
chain_swap.state == PaymentState::WaitingFeeAcceptance;
if let Some(new_state) =
recovered_data.derive_partial_state(min_lockup_amount_sat, is_expired)
{
chain_swap.state = new_state;
// When local state is WaitingFeeAcceptance do not change to Pending
if !(new_state == PaymentState::Pending && is_waiting_fee_acceptance) {
chain_swap.state = new_state;
}
}
chain_swap.server_lockup_tx_id = recovered_data
.lbtc_server_lockup_tx_id