Skip to content

Commit d5aa4e1

Browse files
author
Cyrix126
committed
fix: avoid passing WidgetRef to OCP handler
1 parent ca05be0 commit d5aa4e1

8 files changed

Lines changed: 47 additions & 26 deletions

File tree

lib/pages/open_crypto_pay/open_crypto_pay_send_handler.dart

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,11 @@
1111
import 'dart:async';
1212

1313
import 'package:flutter/material.dart';
14-
import 'package:flutter_riverpod/flutter_riverpod.dart';
1514
import 'package:opencryptopay/opencryptopay.dart';
1615

1716
import '../../networking/http.dart';
1817
import '../../notifications/show_flush_bar.dart';
19-
import '../../providers/ui/preview_tx_button_state_provider.dart';
2018
import '../../utilities/amount/amount.dart';
21-
import '../../utilities/amount/amount_formatter.dart';
2219
import '../../utilities/logger.dart';
2320
import '../../utilities/show_loading.dart';
2421
import '../../utilities/util.dart';
@@ -36,10 +33,9 @@ CryptoCoin cryptoCoinFor(CryptoCurrency currency, {String? tokenSymbol}) =>
3633

3734
class OpenCryptoPaySendHandler {
3835
OpenCryptoPaySendHandler({
39-
required this.ref,
4036
required this.coin,
4137
required this.sendToController,
42-
required this.cryptoAmountController,
38+
required this.onAmountReceived,
4339
required this.setValidAddress,
4440
required this.isMounted,
4541
this.tokenSymbol,
@@ -51,10 +47,9 @@ class OpenCryptoPaySendHandler {
5147
service: OpenCryptoPayService(client: StackClient()),
5248
);
5349

54-
final WidgetRef ref;
5550
final CryptoCurrency coin;
5651
final TextEditingController sendToController;
57-
final TextEditingController cryptoAmountController;
52+
final void Function(Amount amount) onAmountReceived;
5853
final void Function(String address) setValidAddress;
5954
final bool Function() isMounted;
6055

@@ -151,10 +146,7 @@ class OpenCryptoPaySendHandler {
151146
rawValue: rawAmount,
152147
fractionDigits: _fractionDigits,
153148
);
154-
cryptoAmountController.text = ref
155-
.read(pAmountFormatter(coin))
156-
.format(parsed, withUnitName: false);
157-
ref.read(pSendAmount.notifier).state = parsed;
149+
onAmountReceived(parsed);
158150
}
159151

160152
setValidAddress(address);

lib/pages/send_view/send_view.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1513,10 +1513,14 @@ class _SendViewState extends ConsumerState<SendView> {
15131513
cryptoAmountController.addListener(onCryptoAmountChanged);
15141514
baseAmountController.addListener(_baseAmountChanged);
15151515
_openCryptoPay = OpenCryptoPaySendHandler(
1516-
ref: ref,
15171516
coin: coin,
15181517
sendToController: sendToController,
1519-
cryptoAmountController: cryptoAmountController,
1518+
onAmountReceived: (parsed) {
1519+
cryptoAmountController.text = ref
1520+
.read(pAmountFormatter(coin))
1521+
.format(parsed, withUnitName: false);
1522+
ref.read(pSendAmount.notifier).state = parsed;
1523+
},
15201524
setValidAddress: _openCryptoPaySetValidAddress,
15211525
isMounted: () => mounted,
15221526
);

lib/pages/send_view/sol_token_send_view.dart

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -608,11 +608,16 @@ class _SolTokenSendViewState extends ConsumerState<SolTokenSendView> {
608608
}
609609

610610
final tokenWallet = ref.read(pCurrentSolanaTokenWallet);
611+
final coin = ref.read(pWallets).getWallet(walletId).info.coin;
611612
_openCryptoPay = OpenCryptoPaySendHandler(
612-
ref: ref,
613-
coin: ref.read(pWallets).getWallet(walletId).info.coin,
613+
coin: coin,
614614
sendToController: sendToController,
615-
cryptoAmountController: cryptoAmountController,
615+
onAmountReceived: (parsed) {
616+
cryptoAmountController.text = ref
617+
.read(pAmountFormatter(coin))
618+
.format(parsed, withUnitName: false);
619+
ref.read(pSendAmount.notifier).state = parsed;
620+
},
616621
setValidAddress: _openCryptoPaySetValidAddress,
617622
isMounted: () => mounted,
618623
tokenSymbol: tokenWallet?.tokenSymbol,

lib/pages/send_view/token_send_view.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -636,10 +636,14 @@ class _TokenSendViewState extends ConsumerState<TokenSendView> {
636636
}
637637

638638
_openCryptoPay = OpenCryptoPaySendHandler(
639-
ref: ref,
640639
coin: coin,
641640
sendToController: sendToController,
642-
cryptoAmountController: cryptoAmountController,
641+
onAmountReceived: (parsed) {
642+
cryptoAmountController.text = ref
643+
.read(pAmountFormatter(coin))
644+
.format(parsed, withUnitName: false);
645+
ref.read(pSendAmount.notifier).state = parsed;
646+
},
643647
setValidAddress: _openCryptoPaySetValidAddress,
644648
isMounted: () => mounted,
645649
tokenSymbol: tokenContract.symbol,

lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_send.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1263,10 +1263,14 @@ class _DesktopSendState extends ConsumerState<DesktopSend> {
12631263
onCryptoAmountChanged = _cryptoAmountChanged;
12641264
cryptoAmountController.addListener(onCryptoAmountChanged);
12651265
_openCryptoPay = OpenCryptoPaySendHandler(
1266-
ref: ref,
12671266
coin: coin,
12681267
sendToController: sendToController,
1269-
cryptoAmountController: cryptoAmountController,
1268+
onAmountReceived: (parsed) {
1269+
cryptoAmountController.text = ref
1270+
.read(pAmountFormatter(coin))
1271+
.format(parsed, withUnitName: false);
1272+
ref.read(pSendAmount.notifier).state = parsed;
1273+
},
12701274
setValidAddress: _openCryptoPaySetValidAddress,
12711275
isMounted: () => mounted,
12721276
);

lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_sol_token_send.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -667,10 +667,14 @@ class _DesktopSolTokenSendState extends ConsumerState<DesktopSolTokenSend> {
667667

668668
final tokenWallet = ref.read(pCurrentSolanaTokenWallet);
669669
_openCryptoPay = OpenCryptoPaySendHandler(
670-
ref: ref,
671670
coin: coin,
672671
sendToController: sendToController,
673-
cryptoAmountController: cryptoAmountController,
672+
onAmountReceived: (parsed) {
673+
cryptoAmountController.text = ref
674+
.read(pAmountFormatter(coin))
675+
.format(parsed, withUnitName: false);
676+
ref.read(pSendAmount.notifier).state = parsed;
677+
},
674678
setValidAddress: _openCryptoPaySetValidAddress,
675679
isMounted: () => mounted,
676680
tokenSymbol: tokenWallet?.tokenSymbol,

lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_token_send.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -641,10 +641,14 @@ class _DesktopTokenSendState extends ConsumerState<DesktopTokenSend> {
641641

642642
final tokenContract = ref.read(pCurrentTokenWallet)?.tokenContract;
643643
_openCryptoPay = OpenCryptoPaySendHandler(
644-
ref: ref,
645644
coin: coin,
646645
sendToController: sendToController,
647-
cryptoAmountController: cryptoAmountController,
646+
onAmountReceived: (parsed) {
647+
cryptoAmountController.text = ref
648+
.read(pAmountFormatter(coin))
649+
.format(parsed, withUnitName: false);
650+
ref.read(pSendAmount.notifier).state = parsed;
651+
},
648652
setValidAddress: _openCryptoPaySetValidAddress,
649653
isMounted: () => mounted,
650654
tokenSymbol: tokenContract?.symbol,

test/pages/open_crypto_pay/open_crypto_pay_send_handler_test.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,14 @@ _HandlerSetup _makeHandler({
189189
final amount = TextEditingController();
190190
final validAddresses = <String>[];
191191
final handler = OpenCryptoPaySendHandler(
192-
ref: harness.ref,
193192
coin: coin,
194193
sendToController: sendTo,
195-
cryptoAmountController: amount,
194+
onAmountReceived: (parsed) {
195+
amount.text = harness.ref
196+
.read(pAmountFormatter(coin))
197+
.format(parsed, withUnitName: false);
198+
harness.ref.read(pSendAmount.notifier).state = parsed;
199+
},
196200
setValidAddress: validAddresses.add,
197201
isMounted: isMounted ?? () => true,
198202
tokenSymbol: tokenSymbol,

0 commit comments

Comments
 (0)