Refactor core.api trade service implemenentations for BSQ swaps

A minor refactoring to support serving TradeModel instances to CLI.
For example, the CLI 'gettrade' command must return a v1 Trade or
BSQ swap trade.
This commit is contained in:
ghubstan 2021-11-24 13:05:09 -03:00
parent f88c1513ec
commit 3aae052813
No known key found for this signature in database
GPG key ID: E35592D6800A861E
2 changed files with 16 additions and 24 deletions

View file

@ -26,6 +26,7 @@ import bisq.core.offer.OpenOffer;
import bisq.core.payment.PaymentAccount;
import bisq.core.payment.payload.PaymentMethod;
import bisq.core.trade.bisq_v1.TradeResultHandler;
import bisq.core.trade.model.TradeModel;
import bisq.core.trade.model.bisq_v1.Trade;
import bisq.core.trade.model.bsq_swap.BsqSwapTrade;
import bisq.core.trade.statistics.TradeStatistics3;
@ -276,14 +277,10 @@ public class CoreApi {
///////////////////////////////////////////////////////////////////////////////////////////
public void takeBsqSwapOffer(String offerId,
String paymentAccountId,
String takerFeeCurrencyCode,
TradeResultHandler<BsqSwapTrade> tradeResultHandler,
ErrorMessageHandler errorMessageHandler) {
Offer bsqSwapOffer = coreOffersService.getBsqSwapOffer(offerId);
coreTradesService.takeBsqSwapOffer(bsqSwapOffer,
paymentAccountId,
takerFeeCurrencyCode,
tradeResultHandler,
errorMessageHandler);
}
@ -317,22 +314,14 @@ public class CoreApi {
coreTradesService.withdrawFunds(tradeId, address, memo);
}
public BsqSwapTrade getBsqSwapTrade(String tradeId) {
return coreTradesService.getBsqSwapTrade(tradeId);
}
public Trade getTrade(String tradeId) {
return coreTradesService.getTrade(tradeId);
public TradeModel getTradeModel(String tradeId) {
return coreTradesService.getTradeModel(tradeId);
}
public String getTradeRole(String tradeId) {
return coreTradesService.getTradeRole(tradeId);
}
public String getBsqSwapTradeRole(String tradeId) {
return coreTradesService.getBsqSwapTradeRole(tradeId);
}
public String getBsqSwapTradeRole(BsqSwapTrade bsqSwapTrade) {
return coreTradesService.getBsqSwapTradeRole(bsqSwapTrade);
}

View file

@ -28,6 +28,7 @@ import bisq.core.trade.TradeManager;
import bisq.core.trade.bisq_v1.TradeResultHandler;
import bisq.core.trade.bisq_v1.TradeUtil;
import bisq.core.trade.model.Tradable;
import bisq.core.trade.model.TradeModel;
import bisq.core.trade.model.bisq_v1.Trade;
import bisq.core.trade.model.bsq_swap.BsqSwapTrade;
import bisq.core.trade.protocol.bisq_v1.BuyerProtocol;
@ -91,18 +92,14 @@ class CoreTradesService {
this.user = user;
}
// todo we need to pass the intended trade amount
// TODO We need to pass the intended trade amount, not default to the maximum.
void takeBsqSwapOffer(Offer offer,
String paymentAccountId,
String takerFeeCurrencyCode,
TradeResultHandler<BsqSwapTrade> tradeResultHandler,
ErrorMessageHandler errorMessageHandler) {
coreWalletsService.verifyWalletsAreAvailable();
coreWalletsService.verifyEncryptedWalletIsUnlocked();
bsqSwapTakeOfferModel.initWithData(offer);
//todo use the intended trade amount
bsqSwapTakeOfferModel.applyAmount(offer.getAmount());
log.info("Initiating take {} offer, {}",
@ -114,6 +111,7 @@ class CoreTradesService {
coreContext.isApiUser());
}
// TODO We need to pass the intended trade amount, not default to the maximum.
void takeOffer(Offer offer,
String paymentAccountId,
String takerFeeCurrencyCode,
@ -234,17 +232,22 @@ class CoreTradesService {
});
}
BsqSwapTrade getBsqSwapTrade(String tradeId) {
TradeModel getTradeModel(String tradeId) {
coreWalletsService.verifyWalletsAreAvailable();
coreWalletsService.verifyEncryptedWalletIsUnlocked();
Optional<Trade> openTrade = getOpenTrade(tradeId);
if (openTrade.isPresent())
return openTrade.get();
Optional<Trade> closedTrade = getClosedTrade(tradeId);
if (closedTrade.isPresent())
return closedTrade.get();
return tradeManager.findBsqSwapTradeById(tradeId).orElseThrow(() ->
new IllegalArgumentException(format("trade with id '%s' not found", tradeId)));
}
String getBsqSwapTradeRole(String tradeId) {
return getBsqSwapTradeRole(getBsqSwapTrade(tradeId));
}
String getBsqSwapTradeRole(BsqSwapTrade bsqSwapTrade) {
coreWalletsService.verifyWalletsAreAvailable();
coreWalletsService.verifyEncryptedWalletIsUnlocked();