diff --git a/java_console/io/src/com/rusefi/io/ConnectionStatus.java b/java_console/io/src/com/rusefi/io/ConnectionStatus.java index 6e6c224f60..128f45cb7b 100644 --- a/java_console/io/src/com/rusefi/io/ConnectionStatus.java +++ b/java_console/io/src/com/rusefi/io/ConnectionStatus.java @@ -22,6 +22,20 @@ public class ConnectionStatus { @NotNull private Value value = Value.NOT_CONNECTED; + public void executeOnceConnected(Runnable r) { + /* + * This would request initial value + */ + if (isConnected()) { + r.run(); + } else { + addListener(isConnected -> { + if (getValue() == Value.CONNECTED) + r.run(); + }); + } + } + public enum Value { NOT_CONNECTED, LOADING, diff --git a/java_console/ui/src/com/rusefi/ui/config/BaseConfigField.java b/java_console/ui/src/com/rusefi/ui/config/BaseConfigField.java index 6a085715bf..e8888440c5 100644 --- a/java_console/ui/src/com/rusefi/ui/config/BaseConfigField.java +++ b/java_console/ui/src/com/rusefi/ui/config/BaseConfigField.java @@ -25,20 +25,7 @@ public abstract class BaseConfigField { } protected void requestInitialValue(final Field field) { - /** - * This would request initial value - */ - if (ConnectionStatus.INSTANCE.isConnected()) { - processInitialValue(field); - } else { - ConnectionStatus.INSTANCE.addListener(new ConnectionStatus.Listener() { - @Override - public void onConnectionStatus(boolean isConnected) { - if (ConnectionStatus.INSTANCE.getValue() == ConnectionStatus.Value.CONNECTED) - processInitialValue(field); - } - }); - } + ConnectionStatus.INSTANCE.executeOnceConnected(() -> processInitialValue(field)); } private void processInitialValue(Field field) {