mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-17 05:41:29 +02:00
fix: add OpenCryptoPay request handling to SendViewModel (#3105)
This commit is contained in:
@@ -62,7 +62,6 @@ import 'package:cw_core/unspent_coin_type.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
import 'package:mobx/mobx.dart';
|
||||
import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
|
||||
|
||||
@@ -838,7 +837,9 @@ class _NewSendPageState extends State<NewSendPage> {
|
||||
|
||||
if (OpenCryptoPayService.isOpenCryptoPayQR(uri) &&
|
||||
widget.sendViewModel.selectedCryptoCurrency != CryptoCurrency.btcln) {
|
||||
widget.sendViewModel.createOpenCryptoPayTransaction(uri);
|
||||
final request = await widget.sendViewModel.getOpenCryptoPayRequest(uri);
|
||||
if (request == null) return;
|
||||
_applyPaymentRequest(request);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -529,6 +529,33 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
|
||||
}
|
||||
}
|
||||
|
||||
@action
|
||||
Future<PaymentRequest?> getOpenCryptoPayRequest(String uri) async {
|
||||
try {
|
||||
final originalOCPRequest = await _ocpService.getOpenCryptoPayInvoice(uri.toString());
|
||||
final paymentUri = await _ocpService.getOpenCryptoPayAddress(
|
||||
originalOCPRequest,
|
||||
selectedCryptoCurrency,
|
||||
);
|
||||
|
||||
ocpRequest = originalOCPRequest;
|
||||
|
||||
clearOutputs();
|
||||
return PaymentRequest.fromUri(paymentUri);
|
||||
} on OpenCryptoPayNotSupportedException catch (e) {
|
||||
printV(e.message);
|
||||
if (walletType == WalletType.bitcoin) {
|
||||
state = InitialExecutionState();
|
||||
} else {
|
||||
state = FailureState(translateErrorMessage(e, walletType, currency));
|
||||
}
|
||||
} catch (e) {
|
||||
printV(e);
|
||||
state = FailureState(translateErrorMessage(e, walletType, currency));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@action
|
||||
Future<PendingTransaction?> createOpenCryptoPayTransaction(String uri) async {
|
||||
state = IsExecutingState();
|
||||
|
||||
Reference in New Issue
Block a user