mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-07-26 00:15:18 -04:00
Add spinner, status info and blocking popup at take offer
This commit is contained in:
parent
ba727ebb16
commit
de569b4700
5 changed files with 21 additions and 17 deletions
|
@ -529,7 +529,7 @@ public class CreateOfferView extends ActivatableViewAndModel<AnchorPane, CreateO
|
||||||
})
|
})
|
||||||
.onClose(this::close)
|
.onClose(this::close)
|
||||||
.show(),
|
.show(),
|
||||||
100, TimeUnit.MILLISECONDS);
|
500, TimeUnit.MILLISECONDS);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -342,8 +342,8 @@ class CreateOfferViewModel extends ActivatableWithDataModel<CreateOfferDataModel
|
||||||
offer.errorMessageProperty().addListener(errorMessageListener);
|
offer.errorMessageProperty().addListener(errorMessageListener);
|
||||||
dataModel.onPlaceOffer(offer, transaction -> {
|
dataModel.onPlaceOffer(offer, transaction -> {
|
||||||
stopTimeoutTimer();
|
stopTimeoutTimer();
|
||||||
placeOfferCompleted.set(true);
|
|
||||||
resultHandler.run();
|
resultHandler.run();
|
||||||
|
placeOfferCompleted.set(true);
|
||||||
errorMessage.set(null);
|
errorMessage.set(null);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -217,12 +217,9 @@ public class TakeOfferView extends ActivatableViewAndModel<AnchorPane, TakeOffer
|
||||||
});
|
});
|
||||||
showTransactionPublishedScreenSubscription = EasyBind.subscribe(model.showTransactionPublishedScreen, newValue -> {
|
showTransactionPublishedScreenSubscription = EasyBind.subscribe(model.showTransactionPublishedScreen, newValue -> {
|
||||||
if (newValue && BitsquareApp.DEV_MODE) {
|
if (newValue && BitsquareApp.DEV_MODE) {
|
||||||
newValue = false;
|
|
||||||
close();
|
close();
|
||||||
navigation.navigateTo(MainView.class, PortfolioView.class, PendingTradesView.class);
|
navigation.navigateTo(MainView.class, PortfolioView.class, PendingTradesView.class);
|
||||||
}
|
} else if (newValue && model.getTrade() != null && model.getTrade().errorMessageProperty().get() == null) {
|
||||||
|
|
||||||
if (newValue && model.getTrade() != null && model.getTrade().errorMessageProperty().get() == null) {
|
|
||||||
UserThread.runAfter(
|
UserThread.runAfter(
|
||||||
() -> new Popup().headLine(BSResources.get("takeOffer.success.headline"))
|
() -> new Popup().headLine(BSResources.get("takeOffer.success.headline"))
|
||||||
.feedback(BSResources.get("takeOffer.success.info"))
|
.feedback(BSResources.get("takeOffer.success.info"))
|
||||||
|
@ -234,7 +231,7 @@ public class TakeOfferView extends ActivatableViewAndModel<AnchorPane, TakeOffer
|
||||||
, 100, TimeUnit.MILLISECONDS);
|
, 100, TimeUnit.MILLISECONDS);
|
||||||
})
|
})
|
||||||
.onClose(this::close)
|
.onClose(this::close)
|
||||||
.show(), 100, TimeUnit.MILLISECONDS);
|
.show(), 500, TimeUnit.MILLISECONDS);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -373,9 +370,10 @@ public class TakeOfferView extends ActivatableViewAndModel<AnchorPane, TakeOffer
|
||||||
|
|
||||||
private void onTakeOffer() {
|
private void onTakeOffer() {
|
||||||
if (model.hasAcceptedArbitrators()) {
|
if (model.hasAcceptedArbitrators()) {
|
||||||
offerDetailsWindow.onTakeOffer(() -> model.onTakeOffer())
|
offerDetailsWindow.onTakeOffer(() ->
|
||||||
|
model.onTakeOffer(() ->
|
||||||
|
offerDetailsWindow.hide()))
|
||||||
.show(model.getOffer(), model.dataModel.amountAsCoin.get());
|
.show(model.getOffer(), model.dataModel.amountAsCoin.get());
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
new Popup().warning("You have no arbitrator selected.\n" +
|
new Popup().warning("You have no arbitrator selected.\n" +
|
||||||
"You need to select at least one arbitrator.")
|
"You need to select at least one arbitrator.")
|
||||||
|
|
|
@ -91,6 +91,7 @@ class TakeOfferViewModel extends ActivatableWithDataModel<TakeOfferDataModel> im
|
||||||
private ChangeListener<String> offerErrorListener;
|
private ChangeListener<String> offerErrorListener;
|
||||||
private ConnectionListener connectionListener;
|
private ConnectionListener connectionListener;
|
||||||
private ChangeListener<Coin> feeFromFundingTxListener;
|
private ChangeListener<Coin> feeFromFundingTxListener;
|
||||||
|
private Runnable takeOfferSucceededHandler;
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -177,11 +178,12 @@ class TakeOfferViewModel extends ActivatableWithDataModel<TakeOfferDataModel> im
|
||||||
// UI actions
|
// UI actions
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void onTakeOffer() {
|
void onTakeOffer(Runnable resultHandler) {
|
||||||
|
takeOfferSucceededHandler = resultHandler;
|
||||||
takeOfferRequested = true;
|
takeOfferRequested = true;
|
||||||
showTransactionPublishedScreen.set(false);
|
showTransactionPublishedScreen.set(false);
|
||||||
isTakeOfferSpinnerVisible.set(true);
|
//isTakeOfferSpinnerVisible.set(true);
|
||||||
takeOfferSpinnerInfoText.set(BSResources.get("takeOffer.fundsBox.takeOfferSpinnerInfo"));
|
//takeOfferSpinnerInfoText.set(BSResources.get("takeOffer.fundsBox.takeOfferSpinnerInfo"));
|
||||||
dataModel.onTakeOffer(trade -> {
|
dataModel.onTakeOffer(trade -> {
|
||||||
this.trade = trade;
|
this.trade = trade;
|
||||||
trade.stateProperty().addListener(tradeStateListener);
|
trade.stateProperty().addListener(tradeStateListener);
|
||||||
|
@ -329,11 +331,15 @@ class TakeOfferViewModel extends ActivatableWithDataModel<TakeOfferDataModel> im
|
||||||
|| trade.getState() == Trade.State.DEPOSIT_SEEN_IN_NETWORK
|
|| trade.getState() == Trade.State.DEPOSIT_SEEN_IN_NETWORK
|
||||||
|| trade.getState() == Trade.State.DEPOSIT_PUBLISHED_MSG_SENT
|
|| trade.getState() == Trade.State.DEPOSIT_PUBLISHED_MSG_SENT
|
||||||
|| trade.getState() == Trade.State.DEPOSIT_PUBLISHED_MSG_RECEIVED) {
|
|| trade.getState() == Trade.State.DEPOSIT_PUBLISHED_MSG_RECEIVED) {
|
||||||
if (trade.getDepositTx() != null)
|
if (trade.getDepositTx() != null) {
|
||||||
|
if (takeOfferSucceededHandler != null)
|
||||||
|
takeOfferSucceededHandler.run();
|
||||||
|
|
||||||
showTransactionPublishedScreen.set(true);
|
showTransactionPublishedScreen.set(true);
|
||||||
else
|
} else {
|
||||||
log.error("trade.getDepositTx() == null. That must not happen");
|
log.error("trade.getDepositTx() == null. That must not happen");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
takeOfferSpinnerInfoText.set("");
|
takeOfferSpinnerInfoText.set("");
|
||||||
if (errorMessage.get() == null)
|
if (errorMessage.get() == null)
|
||||||
|
|
|
@ -237,13 +237,13 @@ public class OfferDetailsWindow extends Overlay<OfferDetailsWindow> {
|
||||||
String takeOfferButtonText = isBuyerRole ? "Confirm take offer for buying bitcoin" : "Confirm take offer for selling bitcoin";
|
String takeOfferButtonText = isBuyerRole ? "Confirm take offer for buying bitcoin" : "Confirm take offer for selling bitcoin";
|
||||||
|
|
||||||
ImageView iconView = new ImageView();
|
ImageView iconView = new ImageView();
|
||||||
iconView.setId(isBuyOffer ? "image-buy-white" : "image-sell-white");
|
iconView.setId(isBuyerRole ? "image-buy-white" : "image-sell-white");
|
||||||
|
|
||||||
Tuple3<Button, ProgressIndicator, Label> placeOfferTuple = addButtonWithStatusAfterGroup(gridPane, ++rowIndex, isPlaceOffer ? placeOfferButtonText : takeOfferButtonText);
|
Tuple3<Button, ProgressIndicator, Label> placeOfferTuple = addButtonWithStatusAfterGroup(gridPane, ++rowIndex, isPlaceOffer ? placeOfferButtonText : takeOfferButtonText);
|
||||||
|
|
||||||
Button button = placeOfferTuple.first;
|
Button button = placeOfferTuple.first;
|
||||||
button.setGraphic(iconView);
|
button.setGraphic(iconView);
|
||||||
button.setId(isBuyOffer ? "buy-button" : "sell-button");
|
button.setId(isBuyerRole ? "buy-button" : "sell-button");
|
||||||
button.setText(isPlaceOffer ? placeOfferButtonText : takeOfferButtonText);
|
button.setText(isPlaceOffer ? placeOfferButtonText : takeOfferButtonText);
|
||||||
|
|
||||||
spinner = placeOfferTuple.second;
|
spinner = placeOfferTuple.second;
|
||||||
|
@ -269,7 +269,7 @@ public class OfferDetailsWindow extends Overlay<OfferDetailsWindow> {
|
||||||
spinnerInfoLabel.setText(BSResources.get("createOffer.fundsBox.placeOfferSpinnerInfo"));
|
spinnerInfoLabel.setText(BSResources.get("createOffer.fundsBox.placeOfferSpinnerInfo"));
|
||||||
placeOfferHandlerOptional.get().run();
|
placeOfferHandlerOptional.get().run();
|
||||||
} else {
|
} else {
|
||||||
spinnerInfoLabel.setText("Take offer in progress...");
|
spinnerInfoLabel.setText(BSResources.get("takeOffer.fundsBox.takeOfferSpinnerInfo"));
|
||||||
takeOfferHandlerOptional.get().run();
|
takeOfferHandlerOptional.get().run();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue