diff --git a/core/src/main/java/bisq/core/app/BisqExecutable.java b/core/src/main/java/bisq/core/app/BisqExecutable.java index f5935a54067..337dc8a885d 100644 --- a/core/src/main/java/bisq/core/app/BisqExecutable.java +++ b/core/src/main/java/bisq/core/app/BisqExecutable.java @@ -72,7 +72,7 @@ import static java.lang.String.format; @Slf4j -public abstract class BisqExecutable implements GracefulShutDownHandler, BisqSetup.BisqSetupCompleteListener { +public abstract class BisqExecutable implements GracefulShutDownHandler, BisqSetup.BisqSetupListener { private final String fullName; private final String scriptName; @@ -261,7 +261,7 @@ protected void onApplicationStarted() { protected void startAppSetup() { BisqSetup bisqSetup = injector.getInstance(BisqSetup.class); - bisqSetup.addBisqSetupCompleteListener(this); + bisqSetup.addBisqSetupListener(this); bisqSetup.start(); } diff --git a/core/src/main/java/bisq/core/app/BisqHeadlessApp.java b/core/src/main/java/bisq/core/app/BisqHeadlessApp.java index f7ece906fb7..c77acd6d7c5 100644 --- a/core/src/main/java/bisq/core/app/BisqHeadlessApp.java +++ b/core/src/main/java/bisq/core/app/BisqHeadlessApp.java @@ -43,7 +43,7 @@ public class BisqHeadlessApp implements HeadlessApp { @Setter private GracefulShutDownHandler gracefulShutDownHandler; private boolean shutDownRequested; - private BisqSetup bisqSetup; + protected BisqSetup bisqSetup; private CorruptedDatabaseFilesHandler corruptedDatabaseFilesHandler; private TradeManager tradeManager; @@ -54,7 +54,7 @@ public BisqHeadlessApp() { public void startApplication() { try { bisqSetup = injector.getInstance(BisqSetup.class); - bisqSetup.addBisqSetupCompleteListener(this); + bisqSetup.addBisqSetupListener(this); corruptedDatabaseFilesHandler = injector.getInstance(CorruptedDatabaseFilesHandler.class); tradeManager = injector.getInstance(TradeManager.class); diff --git a/core/src/main/java/bisq/core/app/BisqSetup.java b/core/src/main/java/bisq/core/app/BisqSetup.java index 18763753fcf..cd9a11ed630 100644 --- a/core/src/main/java/bisq/core/app/BisqSetup.java +++ b/core/src/main/java/bisq/core/app/BisqSetup.java @@ -116,7 +116,19 @@ @Slf4j @Singleton public class BisqSetup { - public interface BisqSetupCompleteListener { + public interface BisqSetupListener { + default void onInitP2pNetwork() { + log.info("onInitP2pNetwork"); + } + + default void onInitWallet() { + log.info("onInitWallet"); + } + + default void onRequestWalletPassword() { + log.info("onRequestWalletPassword"); + } + void onSetupComplete(); } @@ -201,7 +213,7 @@ public interface BisqSetupCompleteListener { private boolean allBasicServicesInitialized; @SuppressWarnings("FieldCanBeLocal") private MonadicBinding p2pNetworkAndWalletInitialized; - private List bisqSetupCompleteListeners = new ArrayList<>(); + private List bisqSetupListeners = new ArrayList<>(); @Inject public BisqSetup(P2PNetworkSetup p2PNetworkSetup, @@ -296,8 +308,8 @@ public BisqSetup(P2PNetworkSetup p2PNetworkSetup, // Setup /////////////////////////////////////////////////////////////////////////////////////////// - public void addBisqSetupCompleteListener(BisqSetupCompleteListener listener) { - bisqSetupCompleteListeners.add(listener); + public void addBisqSetupListener(BisqSetupListener listener) { + bisqSetupListeners.add(listener); } public void start() { @@ -328,7 +340,7 @@ private void step4() { private void step5() { initDomainServices(); - bisqSetupCompleteListeners.forEach(BisqSetupCompleteListener::onSetupComplete); + bisqSetupListeners.forEach(BisqSetupListener::onSetupComplete); // We set that after calling the setupCompleteHandler to not trigger a popup from the dev dummy accounts // in MainViewModel @@ -524,6 +536,7 @@ else if (displayTorNetworkSettingsHandler != null) }, STARTUP_TIMEOUT_MINUTES, TimeUnit.MINUTES); + bisqSetupListeners.forEach(BisqSetupListener::onInitP2pNetwork); p2pNetworkReady = p2PNetworkSetup.init(this::initWallet, displayTorNetworkSettingsHandler); // We only init wallet service here if not using Tor for bitcoinj. @@ -550,7 +563,10 @@ else if (displayTorNetworkSettingsHandler != null) } private void initWallet() { + bisqSetupListeners.forEach(BisqSetupListener::onInitWallet); Runnable walletPasswordHandler = () -> { + log.info("Wallet password required"); + bisqSetupListeners.forEach(BisqSetupListener::onRequestWalletPassword); if (p2pNetworkReady.get()) p2PNetworkSetup.setSplashP2PNetworkAnimationVisible(true); @@ -561,6 +577,9 @@ private void initWallet() { if (showFirstPopupIfResyncSPVRequestedHandler != null) showFirstPopupIfResyncSPVRequestedHandler.run(); } else { + // TODO no guarantee here that the wallet is really fully initialized + // We would need a new walletInitializedButNotEncrypted state to track + // Usually init is fast and we have our wallet initialized at that state though. walletInitialized.set(true); } }); diff --git a/core/src/main/java/bisq/core/app/HeadlessApp.java b/core/src/main/java/bisq/core/app/HeadlessApp.java index 8d105a93398..3808b89b1a0 100644 --- a/core/src/main/java/bisq/core/app/HeadlessApp.java +++ b/core/src/main/java/bisq/core/app/HeadlessApp.java @@ -22,7 +22,7 @@ import com.google.inject.Injector; -public interface HeadlessApp extends UncaughtExceptionHandler, BisqSetup.BisqSetupCompleteListener { +public interface HeadlessApp extends UncaughtExceptionHandler, BisqSetup.BisqSetupListener { void setGracefulShutDownHandler(GracefulShutDownHandler gracefulShutDownHandler); void setInjector(Injector injector); diff --git a/desktop/src/main/java/bisq/desktop/main/MainViewModel.java b/desktop/src/main/java/bisq/desktop/main/MainViewModel.java index b58042e59b6..70726c52ac7 100644 --- a/desktop/src/main/java/bisq/desktop/main/MainViewModel.java +++ b/desktop/src/main/java/bisq/desktop/main/MainViewModel.java @@ -95,7 +95,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j -public class MainViewModel implements ViewModel, BisqSetup.BisqSetupCompleteListener { +public class MainViewModel implements ViewModel, BisqSetup.BisqSetupListener { private final BisqSetup bisqSetup; private final WalletsSetup walletsSetup; private final User user; @@ -191,12 +191,12 @@ public MainViewModel(BisqSetup bisqSetup, GUIUtil.setPreferences(preferences); setupHandlers(); - bisqSetup.addBisqSetupCompleteListener(this); + bisqSetup.addBisqSetupListener(this); } /////////////////////////////////////////////////////////////////////////////////////////// - // BisqSetupCompleteListener + // BisqSetupListener /////////////////////////////////////////////////////////////////////////////////////////// @Override