mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-04-19 23:36:00 -04:00
move locked funds to available for failed trades
This commit is contained in:
parent
25773311e2
commit
e0598ef050
@ -148,7 +148,10 @@ public abstract class Trade implements Tradable, Model {
|
||||
private DecryptedMsgWithPubKey decryptedMsgWithPubKey;
|
||||
private Date takeOfferDate;
|
||||
private Coin tradeAmount;
|
||||
private long tradePrice;
|
||||
private NodeAddress tradingPeerNodeAddress;
|
||||
@Nullable
|
||||
private String takeOfferFeeTxId;
|
||||
protected State state;
|
||||
private DisputeState disputeState = DisputeState.NONE;
|
||||
private TradePeriodState tradePeriodState = TradePeriodState.NORMAL;
|
||||
@ -166,9 +169,6 @@ public abstract class Trade implements Tradable, Model {
|
||||
transient private StringProperty errorMessageProperty;
|
||||
transient private ObjectProperty<Coin> tradeAmountProperty;
|
||||
transient private ObjectProperty<Fiat> tradeVolumeProperty;
|
||||
@Nullable
|
||||
private String takeOfferFeeTxId;
|
||||
private long tradePrice;
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
@ -271,9 +271,9 @@ public abstract class Trade implements Tradable, Model {
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// The deserialized tx has not actual confidence data, so we need to get the fresh one from the wallet.
|
||||
public void updateDepositTxFromWallet(TradeWalletService tradeWalletService) {
|
||||
public void updateDepositTxFromWallet() {
|
||||
if (depositTx != null)
|
||||
setDepositTx(tradeWalletService.getWalletTx(depositTx.getHash()));
|
||||
setDepositTx(processModel.getTradeWalletService().getWalletTx(depositTx.getHash()));
|
||||
}
|
||||
|
||||
public void setDepositTx(Transaction tx) {
|
||||
@ -338,6 +338,10 @@ public abstract class Trade implements Tradable, Model {
|
||||
return state.getPhase() != null && state.getPhase().ordinal() >= Phase.TAKER_FEE_PAID.ordinal();
|
||||
}
|
||||
|
||||
public boolean isDepositFeePaid() {
|
||||
return state.getPhase() != null && state.getPhase().ordinal() >= Phase.DEPOSIT_PAID.ordinal();
|
||||
}
|
||||
|
||||
public State getState() {
|
||||
return state;
|
||||
}
|
||||
|
@ -173,25 +173,18 @@ public class TradeManager {
|
||||
private void initPendingTrades() {
|
||||
Log.traceCall();
|
||||
|
||||
//List<Trade> failedTrades = new ArrayList<>();
|
||||
for (Trade trade : trades) {
|
||||
// We continue an interrupted trade.
|
||||
|
||||
// TODO
|
||||
/* if (trade.isFailedState()) {
|
||||
failedTrades.add(trade);
|
||||
}
|
||||
else {*/
|
||||
trade.setStorage(tradableListStorage);
|
||||
trade.updateDepositTxFromWallet(tradeWalletService);
|
||||
initTrade(trade, trade.getProcessModel().getUseSavingsWallet(), trade.getProcessModel().getFundsNeededForTrade());
|
||||
|
||||
|
||||
// }
|
||||
if (trade.isDepositFeePaid()) {
|
||||
trade.updateDepositTxFromWallet();
|
||||
initTrade(trade, trade.getProcessModel().getUseSavingsWallet(), trade.getProcessModel().getFundsNeededForTrade());
|
||||
} else if (trade.isTakerFeePaid()) {
|
||||
addTradeToFailedTrades(trade);
|
||||
} else {
|
||||
removePreparedTrade(trade);
|
||||
}
|
||||
}
|
||||
pendingTradesInitialized.set(true);
|
||||
|
||||
//failedTrades.stream().filter(Trade::isTakerFeePaid).forEach(this::addTradeToFailedTrades);
|
||||
}
|
||||
|
||||
private void handleInitialTakeOfferRequest(TradeMessage message, NodeAddress peerNodeAddress) {
|
||||
@ -345,21 +338,30 @@ public class TradeManager {
|
||||
|
||||
// If trade was completed (closed without fault but might be closed by a dispute) we move it to the closed trades
|
||||
public void addTradeToClosedTrades(Trade trade) {
|
||||
trades.remove(trade);
|
||||
removeTrade(trade);
|
||||
closedTradableManager.add(trade);
|
||||
}
|
||||
|
||||
// If trade is in already in critical state (if taker role: taker fee; both roles: after deposit published)
|
||||
// we move the trade to failedTradesManager
|
||||
public void addTradeToFailedTrades(Trade trade) {
|
||||
trades.remove(trade);
|
||||
removeTrade(trade);
|
||||
failedTradesManager.add(trade);
|
||||
}
|
||||
|
||||
// If trade is in preparation (if taker role: before taker fee is paid; both roles: before deposit published)
|
||||
// we just remove the trade from our list. We don't store those trades.
|
||||
public void removePreparedTrade(Trade trade) {
|
||||
removeTrade(trade);
|
||||
}
|
||||
|
||||
public void removeTrade(Trade trade) {
|
||||
trades.remove(trade);
|
||||
|
||||
walletService.swapTradeEntryToAvailableEntry(trade.getId(), AddressEntry.Context.OFFER_FUNDING);
|
||||
walletService.swapTradeEntryToAvailableEntry(trade.getId(), AddressEntry.Context.RESERVED_FOR_TRADE);
|
||||
walletService.swapTradeEntryToAvailableEntry(trade.getId(), AddressEntry.Context.MULTI_SIG);
|
||||
walletService.swapTradeEntryToAvailableEntry(trade.getId(), AddressEntry.Context.TRADE_PAYOUT);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user