mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2024-12-23 11:59:30 +00:00
fix: swap currency updating bug and some updating optimizations
This commit is contained in:
parent
bea6cd366d
commit
51acd366b4
1 changed files with 22 additions and 16 deletions
|
@ -614,13 +614,15 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
|
|||
? ref.read(efReceiveAmountProvider)
|
||||
: ref.read(efSendAmountProvider);
|
||||
|
||||
if (amount == null || amount <= Decimal.zero) {
|
||||
final pair = ref.read(efCurrencyPairProvider);
|
||||
if (amount == null ||
|
||||
amount <= Decimal.zero ||
|
||||
pair.send == null ||
|
||||
pair.receive == null) {
|
||||
ref.read(efRefreshingProvider.notifier).state = false;
|
||||
return;
|
||||
}
|
||||
|
||||
final rateType = ref.read(efRateTypeProvider);
|
||||
final pair = ref.read(efCurrencyPairProvider);
|
||||
|
||||
for (final exchange in exchanges) {
|
||||
final sendCurrency = pair.send?.forExchange(exchange.name);
|
||||
|
@ -657,7 +659,9 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
|
|||
);
|
||||
}
|
||||
|
||||
if (estimateResponse.value != null && rangeResponse.value != null) {
|
||||
if (estimateResponse.value != null &&
|
||||
rangeResponse.value != null &&
|
||||
mounted) {
|
||||
ref.read(efEstimatesListProvider(exchange.name).notifier).state =
|
||||
Tuple2(estimateResponse.value!, rangeResponse.value!);
|
||||
}
|
||||
|
@ -670,16 +674,12 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
|
|||
}
|
||||
|
||||
void updateSend(Estimate? estimate) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
ref.read(efSendAmountProvider.notifier).state = estimate?.estimatedAmount;
|
||||
});
|
||||
ref.read(efSendAmountProvider.notifier).state = estimate?.estimatedAmount;
|
||||
}
|
||||
|
||||
void updateReceive(Estimate? estimate) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
ref.read(efReceiveAmountProvider.notifier).state =
|
||||
estimate?.estimatedAmount;
|
||||
});
|
||||
ref.read(efReceiveAmountProvider.notifier).state =
|
||||
estimate?.estimatedAmount;
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -699,7 +699,8 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
|
|||
}
|
||||
});
|
||||
_receiveFocusNode.addListener(() {
|
||||
if (_receiveFocusNode.hasFocus) {
|
||||
if (_receiveFocusNode.hasFocus &&
|
||||
ref.read(efExchangeProvider).name != ChangeNowExchange.exchangeName) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
ref.read(efReversedProvider.notifier).state = true;
|
||||
});
|
||||
|
@ -746,6 +747,8 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
|
|||
void dispose() {
|
||||
_receiveController.dispose();
|
||||
_sendController.dispose();
|
||||
_receiveFocusNode.dispose();
|
||||
_sendFocusNode.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
|
@ -778,15 +781,18 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
|
|||
});
|
||||
|
||||
ref.listen(efEstimateProvider.notifier, (previous, next) {
|
||||
final estimate = (next as StateController<Estimate?>).state;
|
||||
if (ref.read(efReversedProvider)) {
|
||||
updateSend((next as StateController<Estimate?>).state);
|
||||
updateSend(estimate);
|
||||
} else {
|
||||
updateReceive((next as StateController<Estimate?>).state);
|
||||
updateReceive(estimate);
|
||||
}
|
||||
});
|
||||
|
||||
ref.listen(efCurrencyPairProvider, (previous, next) {
|
||||
update();
|
||||
if (!_swapLock) {
|
||||
update();
|
||||
}
|
||||
});
|
||||
|
||||
return Column(
|
||||
|
@ -883,7 +889,7 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
|
|||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
Loading…
Reference in a new issue