Skip to content

Commit

Permalink
reset internal state and popup warning if main wallet swapped
Browse files Browse the repository at this point in the history
  • Loading branch information
woodser committed May 18, 2024
1 parent ffdbe73 commit bee93bf
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 1 deletion.
6 changes: 6 additions & 0 deletions core/src/main/java/haveno/core/app/HavenoSetup.java
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.value.ChangeListener;
import javafx.collections.SetChangeListener;
Expand Down Expand Up @@ -139,6 +140,7 @@ public class HavenoSetup {
private final MediationManager mediationManager;
private final RefundManager refundManager;
private final ArbitrationManager arbitrationManager;
private final StringProperty topErrorMsg = new SimpleStringProperty();
@Setter
@Nullable
private Consumer<Runnable> displayTacHandler;
Expand Down Expand Up @@ -717,6 +719,10 @@ public StringProperty getWalletServiceErrorMsg() {
return walletAppSetup.getWalletServiceErrorMsg();
}

public StringProperty getTopErrorMsg() {
return topErrorMsg;
}

public StringProperty getXmrSplashSyncIconId() {
return walletAppSetup.getXmrSplashSyncIconId();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,11 @@ public XmrAddressEntry swapAvailableToAddressEntryWithOfferId(XmrAddressEntry ad
return newAddressEntry;
}

public void clear() {
entrySet.clear();
requestPersistence();
}

public void requestPersistence() {
persistenceManager.requestPersistence();
}
Expand Down
20 changes: 20 additions & 0 deletions core/src/main/java/haveno/core/xmr/wallet/XmrWalletService.java
Original file line number Diff line number Diff line change
Expand Up @@ -1372,6 +1372,9 @@ private void maybeInitMainWallet(boolean sync, int numAttempts) {
// reapply connection after wallet synced
onConnectionChanged(xmrConnectionService.getConnection());

// reset internal state if main wallet was swapped
resetIfWalletChanged();

// signal that main wallet is synced
doneDownload();

Expand Down Expand Up @@ -1409,6 +1412,23 @@ private void maybeInitMainWallet(boolean sync, int numAttempts) {
}
}

private void resetIfWalletChanged() {
getAddressEntryListAsImmutableList(); // TODO: using getter to create base address if necessary
List<XmrAddressEntry> baseAddresses = getAddressEntries(XmrAddressEntry.Context.BASE_ADDRESS);
if (baseAddresses.size() > 1 || (baseAddresses.size() == 1 && !baseAddresses.get(0).getAddressString().equals(wallet.getPrimaryAddress()))) {
String warningMsg = "New Monero wallet detected. Resetting internal state.";
if (!tradeManager.getOpenTrades().isEmpty()) warningMsg += "\n\nWARNING: Your open trades will settle to the payout address in the OLD wallet!"; // TODO: allow payout address to be updated in PaymentSentMessage, PaymentReceivedMessage, and DisputeOpenedMessage?
HavenoUtils.havenoSetup.getTopErrorMsg().set(warningMsg);

// reset address entries
xmrAddressEntryList.clear();
getAddressEntryListAsImmutableList(); // recreate base address

// cancel offers
tradeManager.getOpenOfferManager().removeAllOpenOffers(null);
}
}

private void syncWithProgress() {

// show sync progress
Expand Down
7 changes: 7 additions & 0 deletions desktop/src/main/java/haveno/desktop/main/MainView.java
Original file line number Diff line number Diff line change
Expand Up @@ -678,6 +678,13 @@ private AnchorPane createFooter() {
}
});

model.getTopErrorMsg().addListener((ov, oldValue, newValue) -> {
log.warn("top level warning has been set! " + newValue);
if (newValue != null) {
new Popup().warning(newValue).show();
}
});

// temporarily disabled due to high CPU usage (per issue #4649)
//model.getCombinedSyncProgress().addListener((ov, oldValue, newValue) -> {
// if ((double) newValue >= 1) {
Expand Down
4 changes: 4 additions & 0 deletions desktop/src/main/java/haveno/desktop/main/MainViewModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -641,6 +641,10 @@ StringProperty getWalletServiceErrorMsg() {
return havenoSetup.getWalletServiceErrorMsg();
}

StringProperty getTopErrorMsg() {
return havenoSetup.getTopErrorMsg();
}

StringProperty getXmrSplashSyncIconId() {
return havenoSetup.getXmrSplashSyncIconId();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public OfferDirection getDirection(Offer offer) {
private void applyList() {
list.clear();

list.addAll(openOfferManager.getObservableList().stream().map(OpenOfferListItem::new).collect(Collectors.toList()));
list.addAll(openOfferManager.getOpenOffers().stream().map(OpenOfferListItem::new).collect(Collectors.toList()));

// we sort by date, earliest first
list.sort((o1, o2) -> o2.getOffer().getDate().compareTo(o1.getOffer().getDate()));
Expand Down

0 comments on commit bee93bf

Please sign in to comment.