@@ -1260,7 +1260,7 @@ private boolean isReservedByOffer(OpenOffer openOffer, MoneroTxWallet tx) {
1260
1260
}
1261
1261
1262
1262
private List <MoneroTxWallet > getSplitOutputFundingTxs (BigInteger reserveAmount , Integer preferredSubaddressIndex ) {
1263
- List <MoneroTxWallet > splitOutputTxs = xmrWalletService .getTxs (new MoneroTxQuery ().setIsIncoming ( true ). setIsFailed (false ));
1263
+ List <MoneroTxWallet > splitOutputTxs = xmrWalletService .getTxs (new MoneroTxQuery ().setIsFailed (false )); // TODO: not using setIsIncoming(true) because split output txs sent to self have false; fix in monero-java?
1264
1264
Set <MoneroTxWallet > removeTxs = new HashSet <MoneroTxWallet >();
1265
1265
for (MoneroTxWallet tx : splitOutputTxs ) {
1266
1266
if (tx .getOutputs () != null ) { // outputs not available until first confirmation
@@ -1283,6 +1283,7 @@ private boolean hasExactOutput(MoneroTxWallet tx, BigInteger amount, Integer pre
1283
1283
boolean hasExactTransfer = (tx .getTransfers (new MoneroTransferQuery ()
1284
1284
.setAccountIndex (0 )
1285
1285
.setSubaddressIndex (preferredSubaddressIndex )
1286
+ .setIsIncoming (true )
1286
1287
.setAmount (amount )).size () > 0 );
1287
1288
return hasExactTransfer ;
1288
1289
}
@@ -1972,8 +1973,10 @@ public void onFault(String errorMessage) {
1972
1973
///////////////////////////////////////////////////////////////////////////////////////////
1973
1974
1974
1975
private void maybeUpdatePersistedOffers () {
1975
- List <OpenOffer > openOffersClone = getOpenOffers ();
1976
- openOffersClone .forEach (originalOpenOffer -> {
1976
+
1977
+ // update open offers
1978
+ List <OpenOffer > updatedOpenOffers = new ArrayList <>();
1979
+ getOpenOffers ().forEach (originalOpenOffer -> {
1977
1980
Offer originalOffer = originalOpenOffer .getOffer ();
1978
1981
1979
1982
OfferPayload originalOfferPayload = originalOffer .getOfferPayload ();
@@ -2068,16 +2071,19 @@ private void maybeUpdatePersistedOffers() {
2068
2071
// create new offer
2069
2072
Offer updatedOffer = new Offer (updatedPayload );
2070
2073
updatedOffer .setPriceFeedService (priceFeedService );
2071
-
2072
2074
long normalizedTriggerPrice = originalOffer .isInverted () ? PriceUtil .invertLongPrice (originalOpenOffer .getTriggerPrice (), originalOffer .getCounterCurrencyCode ()) : originalOpenOffer .getTriggerPrice ();
2073
- OpenOffer updatedOpenOffer = new OpenOffer (updatedOffer , normalizedTriggerPrice );
2075
+ OpenOffer updatedOpenOffer = new OpenOffer (updatedOffer , normalizedTriggerPrice , originalOpenOffer . isReserveExactAmount (), originalOpenOffer . getGroupId () );
2074
2076
updatedOpenOffer .setChallenge (originalOpenOffer .getChallenge ());
2075
- addOpenOffer (updatedOpenOffer );
2076
- requestPersistence ();
2077
-
2078
- log .info ("Updating offer completed. id={}" , originalOffer .getId ());
2077
+ updatedOpenOffers .add (updatedOpenOffer );
2079
2078
}
2080
2079
});
2080
+
2081
+ // add updated open offers
2082
+ updatedOpenOffers .forEach (updatedOpenOffer -> {
2083
+ addOpenOffer (updatedOpenOffer );
2084
+ requestPersistence ();
2085
+ log .info ("Updating offer completed. id={}" , updatedOpenOffer .getId ());
2086
+ });
2081
2087
}
2082
2088
2083
2089
0 commit comments