mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2025-01-03 17:29:23 +00:00
tighten swap estimate refreshing
This commit is contained in:
parent
87ed2af7ce
commit
a1b7c9248b
2 changed files with 42 additions and 11 deletions
|
@ -604,7 +604,7 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
|
|||
}
|
||||
|
||||
Future<void> update() async {
|
||||
ref.read(efRefreshingProvider.notifier).state = true;
|
||||
_addUpdate();
|
||||
for (final exchange in exchanges) {
|
||||
ref.read(efEstimatesListProvider(exchange.name).notifier).state = null;
|
||||
}
|
||||
|
@ -619,7 +619,7 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
|
|||
amount <= Decimal.zero ||
|
||||
pair.send == null ||
|
||||
pair.receive == null) {
|
||||
ref.read(efRefreshingProvider.notifier).state = false;
|
||||
_removeUpdate();
|
||||
return;
|
||||
}
|
||||
final rateType = ref.read(efRateTypeProvider);
|
||||
|
@ -659,18 +659,36 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
|
|||
);
|
||||
}
|
||||
|
||||
if (estimateResponse.value != null &&
|
||||
rangeResponse.value != null &&
|
||||
mounted) {
|
||||
ref.read(efEstimatesListProvider(exchange.name).notifier).state =
|
||||
Tuple2(estimateResponse.value!, rangeResponse.value!);
|
||||
if (mounted) {
|
||||
if (estimateResponse.value != null && rangeResponse.value != null) {
|
||||
ref.read(efEstimatesListProvider(exchange.name).notifier).state =
|
||||
Tuple2(estimateResponse.value!, rangeResponse.value!);
|
||||
} else {
|
||||
ref.read(efEstimatesListProvider(exchange.name).notifier).state =
|
||||
null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
// WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
_removeUpdate();
|
||||
// });
|
||||
}
|
||||
|
||||
int _updateCount = 0;
|
||||
|
||||
void _addUpdate() {
|
||||
_updateCount++;
|
||||
ref.read(efRefreshingProvider.notifier).state = true;
|
||||
}
|
||||
|
||||
void _removeUpdate() {
|
||||
_updateCount--;
|
||||
if (_updateCount <= 0) {
|
||||
_updateCount = 0;
|
||||
ref.read(efRefreshingProvider.notifier).state = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void updateSend(Estimate? estimate) {
|
||||
|
|
|
@ -28,10 +28,23 @@ final efSendAmountProvider = StateProvider<Decimal?>((ref) => null);
|
|||
final efReceiveAmountProvider = StateProvider<Decimal?>((ref) => null);
|
||||
|
||||
final efSendAmountStringProvider = StateProvider<String>((ref) {
|
||||
return ref.watch(efSendAmountProvider)?.toStringAsFixed(8) ?? "";
|
||||
final refreshing = ref.watch(efRefreshingProvider);
|
||||
final reversed = ref.watch(efReversedProvider);
|
||||
if (refreshing && reversed) {
|
||||
return "-";
|
||||
} else {
|
||||
return ref.watch(efSendAmountProvider)?.toStringAsFixed(8) ?? "";
|
||||
}
|
||||
});
|
||||
final efReceiveAmountStringProvider = StateProvider<String>((ref) {
|
||||
return ref.watch(efReceiveAmountProvider)?.toStringAsFixed(8) ?? "";
|
||||
final refreshing = ref.watch(efRefreshingProvider);
|
||||
final reversed = ref.watch(efReversedProvider);
|
||||
|
||||
if (refreshing && reversed == false) {
|
||||
return "-";
|
||||
} else {
|
||||
return ref.watch(efReceiveAmountProvider)?.toStringAsFixed(8) ?? "";
|
||||
}
|
||||
});
|
||||
|
||||
final efReversedProvider = StateProvider<bool>((ref) => false);
|
||||
|
|
Loading…
Reference in a new issue