mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-07-29 09:48:46 -04:00
Savings wallet (WIP)
This commit is contained in:
parent
d0e4792094
commit
04845e4382
13 changed files with 280 additions and 127 deletions
|
@ -221,6 +221,7 @@ public abstract class Trade implements Tradable, Model {
|
|||
OpenOfferManager openOfferManager,
|
||||
User user,
|
||||
KeyRing keyRing,
|
||||
boolean useSavingsWallet,
|
||||
Coin fundsNeededForTrade) {
|
||||
Log.traceCall();
|
||||
processModel.onAllServicesInitialized(offer,
|
||||
|
@ -232,6 +233,7 @@ public abstract class Trade implements Tradable, Model {
|
|||
arbitratorManager,
|
||||
user,
|
||||
keyRing,
|
||||
useSavingsWallet,
|
||||
fundsNeededForTrade);
|
||||
|
||||
createProtocol();
|
||||
|
|
|
@ -178,7 +178,7 @@ public class TradeManager {
|
|||
else {*/
|
||||
trade.setStorage(tradableListStorage);
|
||||
trade.updateDepositTxFromWallet(tradeWalletService);
|
||||
initTrade(trade, trade.getProcessModel().getFundsNeededForTrade());
|
||||
initTrade(trade, trade.getProcessModel().getUseSavingsWallet(), trade.getProcessModel().getFundsNeededForTrade());
|
||||
|
||||
|
||||
// }
|
||||
|
@ -209,7 +209,7 @@ public class TradeManager {
|
|||
trade = new SellerAsOffererTrade(offer, tradableListStorage);
|
||||
|
||||
trade.setStorage(tradableListStorage);
|
||||
initTrade(trade, trade.getProcessModel().getFundsNeededForTrade());
|
||||
initTrade(trade, trade.getProcessModel().getUseSavingsWallet(), trade.getProcessModel().getFundsNeededForTrade());
|
||||
trades.add(trade);
|
||||
((OffererTrade) trade).handleTakeOfferRequest(message, peerNodeAddress);
|
||||
} else {
|
||||
|
@ -220,7 +220,7 @@ public class TradeManager {
|
|||
}
|
||||
}
|
||||
|
||||
private void initTrade(Trade trade, Coin fundsNeededForTrade) {
|
||||
private void initTrade(Trade trade, boolean useSavingsWallet, Coin fundsNeededForTrade) {
|
||||
trade.init(p2PService,
|
||||
walletService,
|
||||
tradeWalletService,
|
||||
|
@ -229,6 +229,7 @@ public class TradeManager {
|
|||
openOfferManager,
|
||||
user,
|
||||
keyRing,
|
||||
useSavingsWallet,
|
||||
fundsNeededForTrade);
|
||||
}
|
||||
|
||||
|
@ -260,12 +261,13 @@ public class TradeManager {
|
|||
Coin fundsNeededForTrade,
|
||||
Offer offer,
|
||||
String paymentAccountId,
|
||||
boolean useSavingsWallet,
|
||||
TradeResultHandler tradeResultHandler) {
|
||||
final OfferAvailabilityModel model = getOfferAvailabilityModel(offer);
|
||||
offer.checkOfferAvailability(model,
|
||||
() -> {
|
||||
if (offer.getState() == Offer.State.AVAILABLE)
|
||||
createTrade(amount, fundsNeededForTrade, offer, paymentAccountId, model, tradeResultHandler);
|
||||
createTrade(amount, fundsNeededForTrade, offer, paymentAccountId, useSavingsWallet, model, tradeResultHandler);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -273,6 +275,7 @@ public class TradeManager {
|
|||
Coin fundsNeededForTrade,
|
||||
Offer offer,
|
||||
String paymentAccountId,
|
||||
boolean useSavingsWallet,
|
||||
OfferAvailabilityModel model,
|
||||
TradeResultHandler tradeResultHandler) {
|
||||
Trade trade;
|
||||
|
@ -285,7 +288,7 @@ public class TradeManager {
|
|||
trade.setTakeOfferDateAsBlockHeight(tradeWalletService.getBestChainHeight());
|
||||
trade.setTakerPaymentAccountId(paymentAccountId);
|
||||
|
||||
initTrade(trade, fundsNeededForTrade);
|
||||
initTrade(trade, useSavingsWallet, fundsNeededForTrade);
|
||||
|
||||
trades.add(trade);
|
||||
((TakerTrade) trade).takeAvailableOffer();
|
||||
|
|
|
@ -141,8 +141,11 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe
|
|||
log.info("remove all open offers at shutDown");
|
||||
// we remove own offers from offerbook when we go offline
|
||||
// Normally we use a delay for broadcasting to the peers, but at shut down we want to get it fast out
|
||||
openOffers.forEach(openOffer -> offerBookService.removeOfferAtShutDown(openOffer.getOffer()));
|
||||
closeAllOpenOffers(completeHandler);
|
||||
}
|
||||
|
||||
public void closeAllOpenOffers(@Nullable Runnable completeHandler) {
|
||||
openOffers.forEach(openOffer -> offerBookService.removeOfferAtShutDown(openOffer.getOffer()));
|
||||
if (completeHandler != null)
|
||||
UserThread.runAfter(completeHandler::run, openOffers.size() * 200 + 300, TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ public class ProcessModel implements Model, Serializable {
|
|||
@Nullable
|
||||
private String changeOutputAddress;
|
||||
private Transaction takeOfferFeeTx;
|
||||
public boolean useSavingsWallet;
|
||||
private boolean useSavingsWallet;
|
||||
private Coin fundsNeededForTrade;
|
||||
|
||||
public ProcessModel() {
|
||||
|
@ -107,6 +107,7 @@ public class ProcessModel implements Model, Serializable {
|
|||
ArbitratorManager arbitratorManager,
|
||||
User user,
|
||||
KeyRing keyRing,
|
||||
boolean useSavingsWallet,
|
||||
Coin fundsNeededForTrade) {
|
||||
this.offer = offer;
|
||||
this.tradeManager = tradeManager;
|
||||
|
@ -117,6 +118,7 @@ public class ProcessModel implements Model, Serializable {
|
|||
this.user = user;
|
||||
this.keyRing = keyRing;
|
||||
this.p2PService = p2PService;
|
||||
this.useSavingsWallet = useSavingsWallet;
|
||||
this.fundsNeededForTrade = fundsNeededForTrade;
|
||||
}
|
||||
|
||||
|
@ -291,4 +293,8 @@ public class ProcessModel implements Model, Serializable {
|
|||
public Transaction getTakeOfferFeeTx() {
|
||||
return takeOfferFeeTx;
|
||||
}
|
||||
|
||||
public boolean getUseSavingsWallet() {
|
||||
return useSavingsWallet;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,7 +52,7 @@ public class CreateTakeOfferFeeTx extends TradeTask {
|
|||
processModel.getAddressEntry(),
|
||||
processModel.getUnusedSavingsAddress(),
|
||||
processModel.getFundsNeededForTrade(),
|
||||
processModel.useSavingsWallet,
|
||||
processModel.getUseSavingsWallet(),
|
||||
FeePolicy.getTakeOfferFee(),
|
||||
selectedArbitrator.getBtcAddress());
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue