From b6a4d01d42d73c63fd7b6639466e943a68f14220 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Wed, 8 Sep 2021 11:00:44 -0400 Subject: [PATCH] Fix QR scan crash and add exchange data fallback for Create Payment. --- .../payments/create/CreatePaymentViewModel.java | 12 ++++++++++-- .../transfer/PaymentsTransferQrScanFragment.java | 5 +++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/create/CreatePaymentViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/payments/create/CreatePaymentViewModel.java index 5425803413..bf2cb846da 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/create/CreatePaymentViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/create/CreatePaymentViewModel.java @@ -76,8 +76,16 @@ public class CreatePaymentViewModel extends ViewModel { return Optional.fromNullable(ApplicationDependencies.getPayments() .getCurrencyExchange(true) .getExchangeRate(currency)); - } catch (IOException e) { - return Optional.absent(); + } catch (IOException e1) { + Log.w(TAG, "Unable to get fresh exchange data, falling back to cached", e1); + try { + return Optional.fromNullable(ApplicationDependencies.getPayments() + .getCurrencyExchange(false) + .getExchangeRate(currency)); + } catch (IOException e2) { + Log.w(TAG, "Unable to get any exchange data", e2); + return Optional.absent(); + } } }); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/transfer/PaymentsTransferQrScanFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/transfer/PaymentsTransferQrScanFragment.java index 2c0c7cd598..5c2a20f0ad 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/transfer/PaymentsTransferQrScanFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/transfer/PaymentsTransferQrScanFragment.java @@ -11,6 +11,7 @@ import androidx.appcompat.widget.Toolbar; import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; +import org.signal.core.util.ThreadUtil; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.LoggingFragment; import org.thoughtcrime.securesms.R; @@ -52,14 +53,14 @@ public final class PaymentsTransferQrScanFragment extends LoggingFragment { public void onResume() { super.onResume(); scanningThread = new ScanningThread(); - scanningThread.setScanListener(data -> { + scanningThread.setScanListener(data -> ThreadUtil.runOnMain(() -> { try { viewModel.postQrData(MobileCoinPublicAddress.fromQr(data).getPaymentAddressBase58()); Navigation.findNavController(requireView()).navigate(R.id.action_paymentsScanQr_pop); } catch (MobileCoinPublicAddress.AddressException e) { Log.e(TAG, "Not a valid address"); } - }); + })); scannerView.onResume(); scannerView.setPreviewCallback(scanningThread); scanningThread.start();