From 119c43695ed2cc5bc5c3dc589ee70838f4255eda Mon Sep 17 00:00:00 2001 From: Angelos Veglektsis Date: Wed, 8 Sep 2021 15:58:15 +0200 Subject: [PATCH] Fix Ledger X disconnect event not being propagated --- .../green/devices/HardwareConnect.java | 29 +------------------ .../greenbits/wallets/LedgerBLEAdapter.java | 8 +++-- 2 files changed, 6 insertions(+), 31 deletions(-) diff --git a/green/src/main/java/com/blockstream/green/devices/HardwareConnect.java b/green/src/main/java/com/blockstream/green/devices/HardwareConnect.java index d0d25cc66..822f455af 100644 --- a/green/src/main/java/com/blockstream/green/devices/HardwareConnect.java +++ b/green/src/main/java/com/blockstream/green/devices/HardwareConnect.java @@ -372,36 +372,9 @@ private void closeLedger(final HardwareConnectInteraction interaction, final BTC private void doLogin(final HardwareConnectInteraction interaction) { device.setHwWallet(mHwWallet); interaction.onDeviceReady(); - -// mDisposables.add(Observable.just(interaction.getGreenSession()) -// .observeOn(Schedulers.computation()) -// .map((session) -> { -// -// //Bridge.INSTANCE.loginWithDevice(interaction.context(), interaction.getSession().getNativeSession(), network, bReConnectSession, mHwWallet, new HardwareCodeResolver(interaction, mHwWallet)); -// -// return session; -// }) -// .observeOn(AndroidSchedulers.mainThread()) -// .subscribe((session) -> { -// interaction.onLoginSuccess(); -// }, (final Throwable e) -> { -// e.printStackTrace(); -// interaction.getGreenSession().disconnect(); -// -// // If the error is the Anti-Exfil validation violation we show that prominently. -// // Otherwise show a generic error and reconnect/retry message. -// final String idValidationFailed = interaction.context().getResources().getResourceEntryName(R.string.id_signature_validation_failed_if); -// if (idValidationFailed.equals(e.getMessage())) { -// interaction.showInstructions(R.string.id_signature_validation_failed_if); -// } else { -// interaction.showError(interaction.context().getString(R.string.id_error_logging_in_with_hardware)); -// interaction.showInstructions(R.string.id_please_reconnect_your_hardware); -// } -// }) -// ); } public void onDestroy() { - mDisposables.dispose(); + mDisposables.clear(); } } diff --git a/hardware/src/main/java/com/greenaddress/greenbits/wallets/LedgerBLEAdapter.java b/hardware/src/main/java/com/greenaddress/greenbits/wallets/LedgerBLEAdapter.java index 20f393fe0..404e5f162 100644 --- a/hardware/src/main/java/com/greenaddress/greenbits/wallets/LedgerBLEAdapter.java +++ b/hardware/src/main/java/com/greenaddress/greenbits/wallets/LedgerBLEAdapter.java @@ -90,12 +90,14 @@ public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState } else if (newState == BluetoothProfile.STATE_DISCONNECTING) { // Disconnect, clean up BLE stack resources gatt.close(); - }else if ( newState == BluetoothProfile.STATE_DISCONNECTED){ - Log.i("LedgerBLEAdapter", "Send BLE disconnect event"); - bleDisconnectEvent.onNext(true); } } + if (newState == BluetoothProfile.STATE_DISCONNECTED) { + Log.i("LedgerBLEAdapter", "Send BLE disconnect event"); + bleDisconnectEvent.onNext(true); + } + ledgerDevice.getGattCallback().onConnectionStateChange(gatt, status, newState); } }