diff --git a/src/main/java/bisq/desktop/app/BisqApp.java b/src/main/java/bisq/desktop/app/BisqApp.java index 661c9838448..57a0efeee89 100644 --- a/src/main/java/bisq/desktop/app/BisqApp.java +++ b/src/main/java/bisq/desktop/app/BisqApp.java @@ -45,7 +45,6 @@ import bisq.common.app.DevEnv; import bisq.common.setup.GracefulShutDownHandler; import bisq.common.setup.UncaughtExceptionHandler; -import bisq.common.storage.Storage; import bisq.common.util.Profiler; import bisq.common.util.Utilities; @@ -127,8 +126,6 @@ public void startApplication() { scene = createAndConfigScene(mainView, injector); setupStage(scene); - setDatabaseCorruptionHandler(mainView); - checkForCorrectOSArchitecture(); UserThread.runPeriodically(() -> Profiler.printSystemLoad(log), LOG_MEMORY_PERIOD_MIN, TimeUnit.MINUTES); @@ -249,16 +246,6 @@ private MainView loadMainView(Injector injector) { return (MainView) viewLoader.load(MainView.class); } - private void setDatabaseCorruptionHandler(MainView mainView) { - Storage.setDatabaseCorruptionHandler((String fileName) -> { - corruptedDatabaseFiles.add(fileName); - if (mainView != null) - mainView.setPersistedFilesCorrupted(corruptedDatabaseFiles); - }); - mainView.setPersistedFilesCorrupted(corruptedDatabaseFiles); - } - - private void addSceneKeyEventHandler(Scene scene, Injector injector) { scene.addEventHandler(KeyEvent.KEY_RELEASED, keyEvent -> { Utilities.isAltOrCtrlPressed(KeyCode.W, keyEvent); diff --git a/src/main/java/bisq/desktop/main/MainView.java b/src/main/java/bisq/desktop/main/MainView.java index cf2cdc42773..b50de56dd93 100644 --- a/src/main/java/bisq/desktop/main/MainView.java +++ b/src/main/java/bisq/desktop/main/MainView.java @@ -83,8 +83,6 @@ import javafx.beans.value.ChangeListener; -import java.util.List; - import lombok.extern.slf4j.Slf4j; import static javafx.scene.layout.AnchorPane.setBottomAnchor; @@ -149,7 +147,6 @@ public static void removeEffect() { private Label splashP2PNetworkLabel; private ProgressBar btcSyncIndicator; private Label btcSplashInfo; - private List persistedFilesCorrupted; private Popup p2PNetworkWarnMsgPopup, btcNetworkWarnMsgPopup; @SuppressWarnings("WeakerAccess") @@ -312,21 +309,6 @@ protected void initialize() { if (newValue) { navigation.navigateToPreviousVisitedView(); - if (!persistedFilesCorrupted.isEmpty()) { - if (persistedFilesCorrupted.size() > 1 || !persistedFilesCorrupted.get(0).equals("ViewPathAsString")) { - // show warning that some files has been corrupted - new Popup<>() - .warning(Res.get("popup.warning.incompatibleDB", - persistedFilesCorrupted.toString(), - model.getAppDateDir())) - .useShutDownButton() - .show(); - } else { - log.debug("We detected incompatible data base file for Navigation. That is a minor issue happening with refactoring of UI classes " + - "and we don't display a warning popup to the user."); - } - } - transitions.fadeOutAndRemove(splashScreen, 1500, actionEvent -> disposeSplashScreen()); } }); @@ -464,10 +446,6 @@ private void updateMarketPriceLabel(Label label) { } } - public void setPersistedFilesCorrupted(List persistedFilesCorrupted) { - this.persistedFilesCorrupted = persistedFilesCorrupted; - } - private VBox createSplashScreen() { VBox vBox = new VBox(); vBox.setAlignment(Pos.CENTER); diff --git a/src/main/java/bisq/desktop/main/MainViewModel.java b/src/main/java/bisq/desktop/main/MainViewModel.java index e6addcec3e8..29b157c49e5 100644 --- a/src/main/java/bisq/desktop/main/MainViewModel.java +++ b/src/main/java/bisq/desktop/main/MainViewModel.java @@ -88,6 +88,7 @@ import bisq.common.crypto.CryptoException; import bisq.common.crypto.KeyRing; import bisq.common.crypto.SealedAndSigned; +import bisq.common.storage.CorruptedDatabaseFilesHandler; import org.bitcoinj.core.Address; import org.bitcoinj.core.Coin; @@ -174,6 +175,7 @@ public class MainViewModel implements ViewModel { private final ClosedTradableManager closedTradableManager; private final AccountAgeWitnessService accountAgeWitnessService; final TorNetworkSettingsWindow torNetworkSettingsWindow; + private final CorruptedDatabaseFilesHandler corruptedDatabaseFilesHandler; private final BSFormatter formatter; // BTC network @@ -248,7 +250,8 @@ public MainViewModel(WalletsManager walletsManager, WalletsSetup walletsSetup, DaoSetup daoSetup, EncryptionService encryptionService, KeyRing keyRing, BisqEnvironment bisqEnvironment, FailedTradesManager failedTradesManager, ClosedTradableManager closedTradableManager, AccountAgeWitnessService accountAgeWitnessService, - TorNetworkSettingsWindow torNetworkSettingsWindow, BSFormatter formatter) { + TorNetworkSettingsWindow torNetworkSettingsWindow, + CorruptedDatabaseFilesHandler corruptedDatabaseFilesHandler, BSFormatter formatter) { this.walletsManager = walletsManager; this.walletsSetup = walletsSetup; this.btcWalletService = btcWalletService; @@ -277,6 +280,7 @@ public MainViewModel(WalletsManager walletsManager, WalletsSetup walletsSetup, this.closedTradableManager = closedTradableManager; this.accountAgeWitnessService = accountAgeWitnessService; this.torNetworkSettingsWindow = torNetworkSettingsWindow; + this.corruptedDatabaseFilesHandler = corruptedDatabaseFilesHandler; this.formatter = formatter; TxIdTextField.setPreferences(preferences); @@ -707,6 +711,8 @@ public void onBalanceChanged(Coin balance, Transaction tx) { if (walletsSetup.downloadPercentageProperty().get() == 1) checkForLockedUpFunds(); + checkForCorruptedDataBaseFiles(); + allBasicServicesInitialized = true; } @@ -1262,6 +1268,26 @@ private void removeOffersWithoutAccountAgeWitness() { } } + private void checkForCorruptedDataBaseFiles() { + List files = corruptedDatabaseFilesHandler.getCorruptedDatabaseFiles(); + + if (files.size() == 0) + return; + + if (files.size() == 1 && files.get(0).equals("ViewPathAsString")) { + log.debug("We detected incompatible data base file for Navigation. " + + "That is a minor issue happening with refactoring of UI classes " + + "and we don't display a warning popup to the user."); + return; + } + + // show warning that some files have been corrupted + new Popup<>() + .warning(Res.get("popup.warning.incompatibleDB", files.toString(), getAppDateDir())) + .useShutDownButton() + .show(); + } + private void setupDevDummyPaymentAccounts() { if (user.getPaymentAccounts() != null && user.getPaymentAccounts().isEmpty()) { PerfectMoneyAccount perfectMoneyAccount = new PerfectMoneyAccount();