<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>