<p></p>
<p><b>@chimp1984</b> commented on this pull request.</p>
<hr>
<p>In <a href="https://github.com/bisq-network/bisq/pull/4558#discussion_r495619090">daemon/src/main/java/bisq/daemon/grpc/GrpcOffersService.java</a>:</p>
<pre style='color:#555'>> @@ -86,21 +90,53 @@ public void getOffers(GetOffersRequest req,
@Override
public void createOffer(CreateOfferRequest req,
StreamObserver<CreateOfferReply> responseObserver) {
- TransactionResultHandler resultHandler = transaction -> {
- CreateOfferReply reply = CreateOfferReply.newBuilder().setResult(true).build();
+ CountDownLatch latch = new CountDownLatch(1);
+ try {
+ TransactionResultHandler resultHandler = transaction -> {
+ latch.countDown();
</pre>
<h1>Index: core/src/main/java/bisq/core/api/CoreOffersService.java<br>
IDEA additional info:<br>
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP<br>
<+>UTF-8</h1>
<p>--- core/src/main/java/bisq/core/api/CoreOffersService.java (revision <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/bisq-network/bisq/commit/939dba352b10d9f8049e7fea54a461ac93c777e2/hovercard" href="https://github.com/bisq-network/bisq/commit/939dba352b10d9f8049e7fea54a461ac93c777e2"><tt>939dba3</tt></a>)<br>
+++ core/src/main/java/bisq/core/api/CoreOffersService.java (date 1601242413000)<br>
@@ -77,7 +77,7 @@<br>
return offers;<br>
}</p>
<ul>
<li>Offer createOffer(String currencyCode,</li>
</ul>
<ul>
<li>Offer getNewOffer(String currencyCode,<br>
String directionAsString,<br>
long priceAsLong,<br>
boolean useMarketBasedPrice,<br>
@@ -85,47 +85,16 @@<br>
long amountAsLong,<br>
long minAmountAsLong,<br>
double buyerSecurityDeposit,</li>
</ul>
<ul>
<li>
<pre><code> String paymentAccountId,
</code></pre>
</li>
<li>
<pre><code> TransactionResultHandler resultHandler) {
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> String paymentAccountId) {
String offerId = createOfferService.getRandomOfferId();
OfferPayload.Direction direction = OfferPayload.Direction.valueOf(directionAsString);
Price price = Price.valueOf(currencyCode, priceAsLong);
Coin amount = Coin.valueOf(amountAsLong);
Coin minAmount = Coin.valueOf(minAmountAsLong);
PaymentAccount paymentAccount = user.getPaymentAccount(paymentAccountId);
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> // We don't support atm funding from external wallet to keep it simple
</code></pre>
</li>
<li>
<pre><code> boolean useSavingsWallet = true;
</code></pre>
</li>
<li>
<pre><code> //noinspection ConstantConditions
</code></pre>
</li>
<li>
<pre><code> return createAndPlaceOffer(offerId,
</code></pre>
</li>
<li>
<pre><code> currencyCode,
</code></pre>
</li>
<li>
<pre><code> direction,
</code></pre>
</li>
<li>
<pre><code> price,
</code></pre>
</li>
<li>
<pre><code> useMarketBasedPrice,
</code></pre>
</li>
<li>
<pre><code> marketPriceMargin,
</code></pre>
</li>
<li>
<pre><code> amount,
</code></pre>
</li>
<li>
<pre><code> minAmount,
</code></pre>
</li>
<li>
<pre><code> buyerSecurityDeposit,
</code></pre>
</li>
<li>
<pre><code> paymentAccount,
</code></pre>
</li>
<li>
<pre><code> useSavingsWallet,
</code></pre>
</li>
<li>
<pre><code> resultHandler);
</code></pre>
</li>
<li>
<p>}</p>
</li>
<li></li>
<li>
<p>Offer createAndPlaceOffer(String offerId,</p>
</li>
<li>
<pre><code> String currencyCode,
</code></pre>
</li>
<li>
<pre><code> OfferPayload.Direction direction,
</code></pre>
</li>
<li>
<pre><code> Price price,
</code></pre>
</li>
<li>
<pre><code> boolean useMarketBasedPrice,
</code></pre>
</li>
<li>
<pre><code> double marketPriceMargin,
</code></pre>
</li>
<li>
<pre><code> Coin amount,
</code></pre>
</li>
<li>
<pre><code> Coin minAmount,
</code></pre>
</li>
<li>
<pre><code> double buyerSecurityDeposit,
</code></pre>
</li>
<li>
<pre><code> PaymentAccount paymentAccount,
</code></pre>
</li>
<li>
<pre><code> boolean useSavingsWallet,
</code></pre>
</li>
<li>
<pre><code> TransactionResultHandler resultHandler) {
Coin useDefaultTxFee = Coin.ZERO;
</code></pre>
</li>
<li></li>
<li>
<pre><code> Offer offer = createOfferService.createAndGetOffer(offerId,
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> return createOfferService.createAndGetOffer(offerId,
direction,
currencyCode,
amount,
</code></pre>
</li>
</ul>
<p>@@ -136,18 +105,21 @@<br>
marketPriceMargin,<br>
buyerSecurityDeposit,<br>
paymentAccount);</p>
<ul>
<li>
<p>}</p>
</li>
<li>
<p>void placeOffer(Offer offer,</p>
</li>
<li>
<pre><code> double buyerSecurityDeposit,
</code></pre>
</li>
<li>
<pre><code> boolean useSavingsWallet,
</code></pre>
</li>
<li>
<pre><code> TransactionResultHandler resultHandler) {
// TODO give user chance to examine offer before placing it (placeoffer)
openOfferManager.placeOffer(offer,
buyerSecurityDeposit,
useSavingsWallet,
resultHandler,
log::error);
</code></pre>
</li>
</ul>
<ul>
<li></li>
<li>
<pre><code> return offer;
</code></pre>
<p>}</p>
</li>
<li>
<p>Offer createOffer(String offerId,</p>
</li>
</ul>
<ul>
<li>Offer getNewOffer(String offerId,<br>
String currencyCode,<br>
OfferPayload.Direction direction,<br>
Price price,<br>
Index: core/src/main/java/bisq/core/api/CoreApi.java<br>
IDEA additional info:<br>
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP<br>
<+>UTF-8<br>
===================================================================<br>
--- core/src/main/java/bisq/core/api/CoreApi.java (revision <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/bisq-network/bisq/commit/939dba352b10d9f8049e7fea54a461ac93c777e2/hovercard" href="https://github.com/bisq-network/bisq/commit/939dba352b10d9f8049e7fea54a461ac93c777e2"><tt>939dba3</tt></a>)<br>
+++ core/src/main/java/bisq/core/api/CoreApi.java (date 1601242413000)<br>
@@ -87,7 +87,7 @@<br>
return coreOffersService.getOffers(direction, fiatCurrencyCode);<br>
}</li>
</ul>
<ul>
<li>public Offer createOffer(String currencyCode,</li>
</ul>
<ul>
<li>public Offer getNewOffer(String currencyCode,<br>
String directionAsString,<br>
long priceAsLong,<br>
boolean useMarketBasedPrice,<br>
@@ -95,9 +95,8 @@<br>
long amountAsLong,<br>
long minAmountAsLong,<br>
double buyerSecurityDeposit,</li>
</ul>
<ul>
<li>
<pre><code> String paymentAccountId,
</code></pre>
</li>
<li>
<pre><code> TransactionResultHandler resultHandler) {
</code></pre>
</li>
<li>
<pre><code> return coreOffersService.createOffer(currencyCode,
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> String paymentAccountId) {
</code></pre>
</li>
<li>
<pre><code> return coreOffersService.getNewOffer(currencyCode,
directionAsString,
priceAsLong,
useMarketBasedPrice,
</code></pre>
</li>
</ul>
<p>@@ -105,11 +104,20 @@<br>
amountAsLong,<br>
minAmountAsLong,<br>
buyerSecurityDeposit,</p>
<ul>
<li>
<pre><code> paymentAccountId,
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> paymentAccountId);
</code></pre>
</li>
<li>}</li>
<li></li>
<li>public void placeOffer(Offer offer,</li>
<li>
<pre><code> double buyerSecurityDeposit,
</code></pre>
</li>
<li>
<pre><code> boolean useSavingsWallet,
</code></pre>
</li>
<li>
<pre><code> TransactionResultHandler resultHandler) {
</code></pre>
</li>
<li>
<pre><code> coreOffersService.placeOffer(offer,
</code></pre>
</li>
<li>
<pre><code> buyerSecurityDeposit,
</code></pre>
</li>
<li>
<pre><code> useSavingsWallet,
resultHandler);
</code></pre>
}</li>
</ul>
<ul>
<li>public Offer createOffer(String offerId,</li>
</ul>
<ul>
<li>public Offer getNewOffer(String offerId,<br>
String currencyCode,<br>
OfferPayload.Direction direction,<br>
Price price,<br>
@@ -121,7 +129,7 @@<br>
PaymentAccount paymentAccount,<br>
boolean useSavingsWallet,<br>
TransactionResultHandler resultHandler) {</li>
</ul>
<ul>
<li>
<pre><code> return coreOffersService.createOffer(offerId,
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> return coreOffersService.getNewOffer(offerId,
currencyCode,
direction,
price,
</code></pre>
</li>
</ul>
<h1>Index: daemon/src/main/java/bisq/daemon/grpc/GrpcOffersService.java<br>
IDEA additional info:<br>
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP<br>
<+>UTF-8</h1>
<p>--- daemon/src/main/java/bisq/daemon/grpc/GrpcOffersService.java (revision <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/bisq-network/bisq/commit/939dba352b10d9f8049e7fea54a461ac93c777e2/hovercard" href="https://github.com/bisq-network/bisq/commit/939dba352b10d9f8049e7fea54a461ac93c777e2"><tt>939dba3</tt></a>)<br>
+++ daemon/src/main/java/bisq/daemon/grpc/GrpcOffersService.java (date 1601242365000)<br>
@@ -20,7 +20,6 @@<br>
import bisq.core.api.CoreApi;<br>
import bisq.core.api.model.OfferInfo;<br>
import bisq.core.offer.Offer;<br>
-import bisq.core.trade.handlers.TransactionResultHandler;</p>
<p>import bisq.proto.grpc.CreateOfferReply;<br>
import bisq.proto.grpc.CreateOfferRequest;<br>
@@ -35,7 +34,6 @@<br>
import javax.inject.Inject;</p>
<p>import java.util.List;<br>
-import java.util.concurrent.CountDownLatch;<br>
import java.util.stream.Collectors;</p>
<p>import lombok.extern.slf4j.Slf4j;<br>
@@ -90,12 +88,9 @@<br>
<a class="user-mention" data-hovercard-type="user" data-hovercard-url="/users/override/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/override">@override</a><br>
public void createOffer(CreateOfferRequest req,<br>
StreamObserver responseObserver) {</p>
<ul>
<li>
<pre><code> CountDownLatch latch = new CountDownLatch(1);
try {
</code></pre>
</li>
<li>
<pre><code> TransactionResultHandler resultHandler = transaction -> {
</code></pre>
</li>
<li>
<pre><code> latch.countDown();
</code></pre>
</li>
<li>
<pre><code> };
</code></pre>
</li>
<li>
<pre><code> Offer offer = coreApi.createOffer(
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> // TODO give user chance to examine offer before placing it (placeoffer)
</code></pre>
</li>
<li>
<pre><code> Offer offer = coreApi.getNewOffer(
req.getCurrencyCode(),
req.getDirection(),
req.getPrice(),
</code></pre>
</li>
</ul>
<p>@@ -104,35 +99,37 @@<br>
req.getAmount(),<br>
req.getMinAmount(),<br>
req.getBuyerSecurityDeposit(),</p>
<ul>
<li>
<pre><code> req.getPaymentAccountId(),
</code></pre>
</li>
<li>
<pre><code> resultHandler);
</code></pre>
</li>
<li>
<pre><code> try {
</code></pre>
</li>
<li>
<pre><code> latch.await();
</code></pre>
</li>
<li>
<pre><code> } catch (InterruptedException ignored) {
</code></pre>
</li>
<li>
<pre><code> // empty
</code></pre>
</li>
<li>
<pre><code> }
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> req.getPaymentAccountId());
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> OfferInfo offerInfo = new OfferInfo.OfferInfoBuilder()
</code></pre>
</li>
<li>
<pre><code> .withId(offer.getId())
</code></pre>
</li>
<li>
<pre><code> .withDirection(offer.getDirection().name())
</code></pre>
</li>
<li>
<pre><code> .withPrice(offer.getPrice().getValue())
</code></pre>
</li>
<li>
<pre><code> .withUseMarketBasedPrice(offer.isUseMarketBasedPrice())
</code></pre>
</li>
<li>
<pre><code> .withMarketPriceMargin(offer.getMarketPriceMargin())
</code></pre>
</li>
<li>
<pre><code> .withAmount(offer.getAmount().value)
</code></pre>
</li>
<li>
<pre><code> .withMinAmount(offer.getMinAmount().value)
</code></pre>
</li>
<li>
<pre><code> .withVolume(offer.getVolume().getValue())
</code></pre>
</li>
<li>
<pre><code> .withMinVolume(offer.getMinVolume().getValue())
</code></pre>
</li>
<li>
<pre><code> .withBuyerSecurityDeposit(offer.getBuyerSecurityDeposit().value)
</code></pre>
</li>
<li>
<pre><code> .withPaymentAccountId(offer.getMakerPaymentAccountId())
</code></pre>
</li>
<li>
<pre><code> .withPaymentMethodId(offer.getPaymentMethod().getId())
</code></pre>
</li>
<li>
<pre><code> .withPaymentMethodShortName(offer.getPaymentMethod().getShortName())
</code></pre>
</li>
<li>
<pre><code> .withBaseCurrencyCode(offer.getOfferPayload().getBaseCurrencyCode())
</code></pre>
</li>
<li>
<pre><code> .withCounterCurrencyCode(offer.getOfferPayload().getCounterCurrencyCode())
</code></pre>
</li>
<li>
<pre><code> .withDate(offer.getDate().getTime())
</code></pre>
</li>
<li>
<pre><code> .build();
</code></pre>
</li>
<li>
<pre><code> CreateOfferReply reply = CreateOfferReply.newBuilder().setOffer(offerInfo.toProtoMessage()).build();
</code></pre>
</li>
<li>
<pre><code> responseObserver.onNext(reply);
</code></pre>
</li>
<li>
<pre><code> responseObserver.onCompleted();
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> // We don't support atm funding from external wallet to keep it simple
</code></pre>
</li>
<li>
<pre><code> boolean useSavingsWallet = true;
</code></pre>
</li>
<li></li>
<li>
<pre><code> coreApi.placeOffer(offer,
</code></pre>
</li>
<li>
<pre><code> req.getBuyerSecurityDeposit(),
</code></pre>
</li>
<li>
<pre><code> useSavingsWallet,
</code></pre>
</li>
<li>
<pre><code> transaction -> {
</code></pre>
</li>
<li>
<pre><code> OfferInfo offerInfo = new OfferInfo.OfferInfoBuilder()
</code></pre>
</li>
<li>
<pre><code> .withId(offer.getId())
</code></pre>
</li>
<li>
<pre><code> .withDirection(offer.getDirection().name())
</code></pre>
</li>
<li>
<pre><code> .withPrice(offer.getPrice().getValue())
</code></pre>
</li>
<li>
<pre><code> .withUseMarketBasedPrice(offer.isUseMarketBasedPrice())
</code></pre>
</li>
<li>
<pre><code> .withMarketPriceMargin(offer.getMarketPriceMargin())
</code></pre>
</li>
<li>
<pre><code> .withAmount(offer.getAmount().value)
</code></pre>
</li>
<li>
<pre><code> .withMinAmount(offer.getMinAmount().value)
</code></pre>
</li>
<li>
<pre><code> .withVolume(offer.getVolume().getValue())
</code></pre>
</li>
<li>
<pre><code> .withMinVolume(offer.getMinVolume().getValue())
</code></pre>
</li>
<li>
<pre><code> .withBuyerSecurityDeposit(offer.getBuyerSecurityDeposit().value)
</code></pre>
</li>
<li>
<pre><code> .withPaymentAccountId(offer.getMakerPaymentAccountId())
</code></pre>
</li>
<li>
<pre><code> .withPaymentMethodId(offer.getPaymentMethod().getId())
</code></pre>
</li>
<li>
<pre><code> .withPaymentMethodShortName(offer.getPaymentMethod().getShortName())
</code></pre>
</li>
<li>
<pre><code> .withBaseCurrencyCode(offer.getOfferPayload().getBaseCurrencyCode())
</code></pre>
</li>
<li>
<pre><code> .withCounterCurrencyCode(offer.getOfferPayload().getCounterCurrencyCode())
</code></pre>
</li>
<li>
<pre><code> .withDate(offer.getDate().getTime())
</code></pre>
</li>
<li>
<pre><code> .build();
</code></pre>
</li>
<li>
<pre><code> CreateOfferReply reply = CreateOfferReply.newBuilder().setOffer(offerInfo.toProtoMessage()).build();
</code></pre>
</li>
<li>
<pre><code> responseObserver.onNext(reply);
</code></pre>
</li>
<li>
<pre><code> responseObserver.onCompleted();
</code></pre>
</li>
<li>
<pre><code> });
} catch (IllegalStateException | IllegalArgumentException cause) {
var ex = new StatusRuntimeException(Status.UNKNOWN.withDescription(cause.getMessage()));
responseObserver.onError(ex);
</code></pre>
</li>
</ul>
<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/bisq-network/bisq/pull/4558#discussion_r495619090">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJFFTNWDSLFMQ527NEIIEZDSH6WDBANCNFSM4RXFTUTQ">unsubscribe</a>.<img src="https://github.com/notifications/beacon/AJFFTNRFLEZKB2RJOJIUYDTSH6WDBA5CNFSM4RXFTUT2YY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGODWQVPPA.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/bisq-network/bisq/pull/4558#discussion_r495619090",
"url": "https://github.com/bisq-network/bisq/pull/4558#discussion_r495619090",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>