Fix QR scan crash and add exchange data fallback for Create Payment.

This commit is contained in:
Cody Henthorne 2021-09-08 11:00:44 -04:00 committed by Greyson Parrelli
parent bd4dd25460
commit b6a4d01d42
2 changed files with 13 additions and 4 deletions

View file

@ -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();
}
}
});

View file

@ -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();