eth token prices fixes

This commit is contained in:
julian 2024-01-16 13:08:28 -06:00
parent aaa6905f95
commit b0eeec7568
5 changed files with 19 additions and 14 deletions

View file

@ -317,13 +317,6 @@ class _MaterialAppWithThemeState extends ConsumerState<MaterialAppWithTheme>
_desktopHasPassword =
await ref.read(storageCryptoHandlerProvider).hasPassword();
}
ref
.read(priceAnd24hChangeNotifierProvider)
.tokenContractAddressesToCheck
.addAll(
await MainDB.instance.getEthContracts().addressProperty().findAll(),
);
}
Future<void> load() async {

View file

@ -23,6 +23,7 @@ import 'package:stackwallet/pages/add_wallet_views/add_token_view/sub_widgets/ad
import 'package:stackwallet/pages/add_wallet_views/add_token_view/sub_widgets/add_token_text.dart';
import 'package:stackwallet/pages/home_view/home_view.dart';
import 'package:stackwallet/pages_desktop_specific/desktop_home_view.dart';
import 'package:stackwallet/providers/global/price_provider.dart';
import 'package:stackwallet/providers/global/wallets_provider.dart';
import 'package:stackwallet/themes/stack_colors.dart';
import 'package:stackwallet/utilities/assets.dart';
@ -151,6 +152,7 @@ class _EditWalletTokensViewState extends ConsumerState<EditWalletTokensView> {
if (contract != null) {
await MainDB.instance.putEthContract(contract);
unawaited(ref.read(priceAnd24hChangeNotifierProvider).updatePrice());
if (mounted) {
setState(() {
if (tokenEntities
@ -175,7 +177,8 @@ class _EditWalletTokensViewState extends ConsumerState<EditWalletTokensView> {
if (contracts.isEmpty) {
contracts.addAll(DefaultTokens.list);
MainDB.instance.putEthContracts(contracts);
MainDB.instance.putEthContracts(contracts).then(
(_) => ref.read(priceAnd24hChangeNotifierProvider).updatePrice());
}
tokenEntities.addAll(contracts.map((e) => AddTokenListElementData(e)));

View file

@ -8,6 +8,7 @@
*
*/
import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
@ -107,6 +108,7 @@ class _AddWalletViewState extends ConsumerState<AddWalletView> {
if (contract != null) {
await MainDB.instance.putEthContract(contract);
unawaited(ref.read(priceAnd24hChangeNotifierProvider).updatePrice());
if (mounted) {
setState(() {
if (tokenEntities
@ -143,7 +145,8 @@ class _AddWalletViewState extends ConsumerState<AddWalletView> {
if (contracts.isEmpty) {
contracts.addAll(DefaultTokens.list);
MainDB.instance.putEthContracts(contracts);
MainDB.instance.putEthContracts(contracts).then(
(value) => ref.read(priceAnd24hChangeNotifierProvider).updatePrice());
}
tokenEntities.addAll(contracts.map((e) => EthTokenEntity(e)));

View file

@ -104,7 +104,7 @@ class _TransactionCardStateV2 extends ConsumerState<TransactionCardV2> {
final price = ref
.watch(priceAnd24hChangeNotifierProvider.select((value) => isTokenTx
? value.getTokenPrice(_transaction.otherData!)
? value.getTokenPrice(tokenContract!.address)
: value.getPrice(coin)))
.item1;

View file

@ -12,7 +12,9 @@ import 'dart:async';
import 'package:decimal/decimal.dart';
import 'package:flutter/foundation.dart';
import 'package:http/http.dart';
import 'package:isar/isar.dart';
import 'package:stackwallet/db/isar/main_db.dart';
import 'package:stackwallet/models/isar/models/isar_models.dart';
import 'package:stackwallet/networking/http.dart';
import 'package:stackwallet/services/price.dart';
import 'package:stackwallet/utilities/enums/coin_enum.dart';
@ -20,7 +22,9 @@ import 'package:tuple/tuple.dart';
class PriceService extends ChangeNotifier {
late final String baseTicker;
final Set<String> tokenContractAddressesToCheck = {};
Future<Set<String>> get tokenContractAddressesToCheck async =>
(await MainDB.instance.getEthContracts().addressProperty().findAll())
.toSet();
final Duration updateInterval = const Duration(seconds: 60);
Timer? _timer;
@ -52,9 +56,11 @@ class PriceService extends ChangeNotifier {
}
}
if (tokenContractAddressesToCheck.isNotEmpty) {
final _tokenContractAddressesToCheck = await tokenContractAddressesToCheck;
if (_tokenContractAddressesToCheck.isNotEmpty) {
final tokenPriceMap = await _priceAPI.getPricesAnd24hChangeForEthTokens(
contractAddresses: tokenContractAddressesToCheck,
contractAddresses: _tokenContractAddressesToCheck,
baseCurrency: baseTicker,
);