From a48e7b2f5819a061753013715349e96dc449e013 Mon Sep 17 00:00:00 2001 From: redDwarf03 Date: Tue, 14 Jan 2025 23:43:29 +0100 Subject: [PATCH] Fix bugs --- lib/application/account/account_notifier.dart | 34 +++++++++---------- .../account/account_notifier.g.dart | 2 +- lib/application/account/selected_account.dart | 24 +++++++++++++ .../account/selected_account.g.dart | 20 +++++++++++ lib/ui/views/main/bloc/providers.dart | 30 ++++++++-------- lib/ui/views/main/bloc/providers.g.dart | 2 +- .../main/components/menu_widget_wallet.dart | 2 +- .../nft/layouts/components/nft_list.dart | 13 ++----- lib/util/account_formatters.dart | 15 +------- 9 files changed, 81 insertions(+), 61 deletions(-) diff --git a/lib/application/account/account_notifier.dart b/lib/application/account/account_notifier.dart index 1c4363c2f..bfcafe8d2 100644 --- a/lib/application/account/account_notifier.dart +++ b/lib/application/account/account_notifier.dart @@ -2,7 +2,6 @@ import 'dart:async'; -import 'package:aewallet/application/account/selected_account.dart'; import 'package:aewallet/application/app_service.dart'; import 'package:aewallet/application/nft/nft.dart'; import 'package:aewallet/application/refresh_in_progress.dart'; @@ -13,7 +12,6 @@ import 'package:aewallet/model/data/account.dart'; import 'package:aewallet/model/data/account_balance.dart'; import 'package:aewallet/modules/aeswap/application/pool/dex_pool.dart'; import 'package:aewallet/modules/aeswap/application/session/provider.dart'; -import 'package:aewallet/util/account_formatters.dart'; import 'package:archethic_dapp_framework_flutter/archethic_dapp_framework_flutter.dart' as aedappfm; import 'package:archethic_lib_dart/archethic_lib_dart.dart'; @@ -58,17 +56,9 @@ class AccountNotifier extends _$AccountNotifier { Future refreshRecentTransactions() async { await _refresh([ (account) async { - _logger.fine( - 'Start method refreshRecentTransactions for ${account.nameDisplayed}', - ); await updateRecentTransactions(); - _logger.fine( - 'End method refreshRecentTransactions for ${account.nameDisplayed}', - ); }, ]); - - ref.invalidate(selectedAccountRecentTransactionsProvider); } Future refreshFungibleTokens() async { @@ -79,6 +69,14 @@ class AccountNotifier extends _$AccountNotifier { ]); } + Future refreshNFT() async { + await _refresh([ + (account) async { + await updateNFT(); + }, + ]); + } + Future refreshBalance() async { await _refresh([ (account) async { @@ -91,30 +89,23 @@ class AccountNotifier extends _$AccountNotifier { await _refresh( [ (account) async { - _logger.fine('RefreshAll - Start Balance refresh'); await updateBalance(); - _logger.fine('RefreshAll - End Balance refresh'); }, (account) async { - _logger.fine('RefreshAll - Start recent transactions refresh'); await updateRecentTransactions(); - _logger.fine('RefreshAll - End recent transactions refresh'); }, (account) async { - _logger.fine('RefreshAll - Start Fungible Tokens refresh'); await updateFungiblesTokens(); - _logger.fine('RefreshAll - End Fungible Tokens refresh'); }, (account) async { - _logger.fine('RefreshAll - Start NFT refresh'); await updateNFT(); - _logger.fine('RefreshAll - End NFT refresh'); }, ], ); } Future updateBalance() async { + _logger.fine('RefreshAll - Start Balance refresh'); await _update((account) async { var totalUSD = 0.0; @@ -179,9 +170,11 @@ class AccountNotifier extends _$AccountNotifier { return account.copyWith(balance: accountBalance); }); + _logger.fine('RefreshAll - End Balance refresh'); } Future updateFungiblesTokens() async { + _logger.fine('RefreshAll - Start Fungible Tokens refresh'); await _update((account) async { final appService = ref.read(appServiceProvider); final poolsListRaw = @@ -194,9 +187,11 @@ class AccountNotifier extends _$AccountNotifier { ), ); }); + _logger.fine('RefreshAll - End Fungible Tokens refresh'); } Future updateRecentTransactions() async { + _logger.fine('RefreshAll - Start recent transactions refresh'); await _update((account) async { final session = ref.read(sessionNotifierProvider).loggedIn!; final appService = ref.read(appServiceProvider); @@ -212,6 +207,7 @@ class AccountNotifier extends _$AccountNotifier { Duration.millisecondsPerSecond, ); }); + _logger.fine('RefreshAll - End recent transactions refresh'); } Future addCustomTokenAddress(String tokenAddress) async { @@ -254,6 +250,7 @@ class AccountNotifier extends _$AccountNotifier { } Future updateNFT() async { + _logger.fine('RefreshAll - Start NFT refresh'); await _update( (account) async { final session = ref.read(sessionNotifierProvider).loggedIn!; @@ -271,6 +268,7 @@ class AccountNotifier extends _$AccountNotifier { ); }, ); + _logger.fine('RefreshAll - End NFT refresh'); } Future clearRecentTransactionsFromCache() async { diff --git a/lib/application/account/account_notifier.g.dart b/lib/application/account/account_notifier.g.dart index bba848c53..44cb5529c 100644 --- a/lib/application/account/account_notifier.g.dart +++ b/lib/application/account/account_notifier.g.dart @@ -6,7 +6,7 @@ part of 'account_notifier.dart'; // RiverpodGenerator // ************************************************************************** -String _$accountNotifierHash() => r'33410ce13c1065c8a2840153d20ff40456ac07cc'; +String _$accountNotifierHash() => r'de8963b79efec47c784a345e2fda8bed1be89951'; /// Copied from Dart SDK class _SystemHash { diff --git a/lib/application/account/selected_account.dart b/lib/application/account/selected_account.dart index 2b60525cc..3c857a095 100644 --- a/lib/application/account/selected_account.dart +++ b/lib/application/account/selected_account.dart @@ -4,6 +4,7 @@ import 'dart:async'; import 'package:aewallet/application/account/accounts_notifier.dart'; import 'package:aewallet/model/blockchain/recent_transaction.dart'; +import 'package:aewallet/model/data/account_token.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; @@ -21,3 +22,26 @@ Future?> selectedAccountRecentTransactions( ) ?.recentTransactions; } + +@riverpod +List selectedAccountNFTFiltered( + Ref ref, +) { + final selectedAccount = ref.watch( + accountsNotifierProvider.select( + (accounts) => accounts.valueOrNull?.selectedAccount, + ), + ); + if (selectedAccount == null) { + return []; + } + + return [ + ...selectedAccount.accountNFT ?? [], + // A collection of NFT has the same address for all the sub NFT, we only want to display one NFT in that case + ...(selectedAccount.accountNFTCollections?.where( + (e) => {}.add(e.tokenInformation?.address ?? ''), + ) ?? + []), + ]; +} diff --git a/lib/application/account/selected_account.g.dart b/lib/application/account/selected_account.g.dart index e07c4068e..4e7f04780 100644 --- a/lib/application/account/selected_account.g.dart +++ b/lib/application/account/selected_account.g.dart @@ -26,5 +26,25 @@ final selectedAccountRecentTransactionsProvider = // ignore: unused_element typedef SelectedAccountRecentTransactionsRef = AutoDisposeFutureProviderRef?>; +String _$selectedAccountNFTFilteredHash() => + r'5bab7f1eab6363f522fe9ee7b4f59dff7bb09acc'; + +/// See also [selectedAccountNFTFiltered]. +@ProviderFor(selectedAccountNFTFiltered) +final selectedAccountNFTFilteredProvider = + AutoDisposeProvider>.internal( + selectedAccountNFTFiltered, + name: r'selectedAccountNFTFilteredProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$selectedAccountNFTFilteredHash, + dependencies: null, + allTransitiveDependencies: null, +); + +@Deprecated('Will be removed in 3.0. Use Ref instead') +// ignore: unused_element +typedef SelectedAccountNFTFilteredRef + = AutoDisposeProviderRef>; // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/lib/ui/views/main/bloc/providers.dart b/lib/ui/views/main/bloc/providers.dart index 010c0b768..7dfb22368 100644 --- a/lib/ui/views/main/bloc/providers.dart +++ b/lib/ui/views/main/bloc/providers.dart @@ -32,10 +32,10 @@ class HomePage extends _$HomePage { ..watch(verifiedTokensProvider) ..watch(DexTokensProviders.tokensFromAccount) ..watch(farmLockFormFarmLockProvider) - // ..watch( - // aedappfm.ArchethicOracleUCOProviders.archethicOracleUCO, - // ) - // ..watch(aedappfm.CoinPriceProviders.coinPrices) + ..watch( + aedappfm.ArchethicOracleUCOProviders.archethicOracleUCO, + ) + ..watch(aedappfm.CoinPriceProviders.coinPrices) ..listen( connectivityStatusProviders, (previous, next) async { @@ -60,17 +60,17 @@ class HomePage extends _$HomePage { } Future startSubscriptions() async { - // await ref - // .read( - // aedappfm.ArchethicOracleUCOProviders.archethicOracleUCO.notifier, - // ) - // .startSubscription(); - - // await ref - // .read( - // aedappfm.CoinPriceProviders.coinPrices.notifier, - // ) - // .startTimer(); + await ref + .read( + aedappfm.ArchethicOracleUCOProviders.archethicOracleUCO.notifier, + ) + .startSubscription(); + + await ref + .read( + aedappfm.CoinPriceProviders.coinPrices.notifier, + ) + .startTimer(); } Future stopSubscriptions() async { diff --git a/lib/ui/views/main/bloc/providers.g.dart b/lib/ui/views/main/bloc/providers.g.dart index 4257be341..5285c5df8 100644 --- a/lib/ui/views/main/bloc/providers.g.dart +++ b/lib/ui/views/main/bloc/providers.g.dart @@ -6,7 +6,7 @@ part of 'providers.dart'; // RiverpodGenerator // ************************************************************************** -String _$homePageHash() => r'048f93f65373efbed56acfe689b166b9f0aeea4d'; +String _$homePageHash() => r'b3a7e0d8b8465ba8f13decf492db4b8eeae87ec9'; /// Eagerly initializes providers (https://riverpod.dev/docs/essentials/eager_initialization). /// diff --git a/lib/ui/views/main/components/menu_widget_wallet.dart b/lib/ui/views/main/components/menu_widget_wallet.dart index a0959a5d2..8a15ffae7 100644 --- a/lib/ui/views/main/components/menu_widget_wallet.dart +++ b/lib/ui/views/main/components/menu_widget_wallet.dart @@ -132,7 +132,7 @@ class MenuWidgetWallet extends ConsumerWidget { await (await ref .read(accountsNotifierProvider.notifier) .selectedAccountNotifier) - ?.refreshRecentTransactions(); + ?.refreshAll(); }, ) .animate() diff --git a/lib/ui/views/nft/layouts/components/nft_list.dart b/lib/ui/views/nft/layouts/components/nft_list.dart index 6c8b5c417..75f3bfc86 100644 --- a/lib/ui/views/nft/layouts/components/nft_list.dart +++ b/lib/ui/views/nft/layouts/components/nft_list.dart @@ -1,9 +1,8 @@ /// SPDX-License-Identifier: AGPL-3.0-or-later -import 'package:aewallet/application/account/accounts_notifier.dart'; +import 'package:aewallet/application/account/selected_account.dart'; import 'package:aewallet/ui/themes/styles.dart'; import 'package:aewallet/ui/views/nft/layouts/components/nft_list_detail.dart'; import 'package:aewallet/ui/widgets/components/dynamic_height_grid_view.dart'; -import 'package:aewallet/util/account_formatters.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/localizations.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; @@ -24,15 +23,7 @@ class _NFTListState extends ConsumerState Widget build(BuildContext context) { super.build(context); - final accountSelected = ref.watch( - accountsNotifierProvider.select( - (accounts) => accounts.valueOrNull?.selectedAccount, - ), - ); - - if (accountSelected == null) return const _EmptyNFTList(); - - final accountTokenList = accountSelected.getAccountNFTFiltered(); + final accountTokenList = ref.watch(selectedAccountNFTFilteredProvider); if (accountTokenList.isEmpty) { return const _EmptyNFTList(); } diff --git a/lib/util/account_formatters.dart b/lib/util/account_formatters.dart index b8c2b9dab..cd0b97442 100644 --- a/lib/util/account_formatters.dart +++ b/lib/util/account_formatters.dart @@ -1,5 +1,4 @@ import 'package:aewallet/model/data/account.dart'; -import 'package:aewallet/model/data/account_token.dart'; extension AccountFormatters on Account { String get format { @@ -10,8 +9,7 @@ extension AccountFormatters on Account { var result = name; if (name.startsWith('archethic-wallet-')) { result = result.replaceFirst('archethic-wallet-', ''); - } - if (name.startsWith('aeweb-')) { + } else if (name.startsWith('aeweb-')) { result = result.replaceFirst('aeweb-', ''); } @@ -19,15 +17,4 @@ extension AccountFormatters on Account { result, ); } - - List getAccountNFTFiltered() { - return [ - ...accountNFT ?? [], - // A collection of NFT has the same address for all the sub NFT, we only want to display one NFT in that case - ...(accountNFTCollections?.where( - (e) => {}.add(e.tokenInformation?.address ?? ''), - ) ?? - []), - ]; - } }