From 212441d1bc36a07b23f3def5f881592030f44bd1 Mon Sep 17 00:00:00 2001 From: malik1004x Date: Mon, 23 Mar 2026 21:11:01 +0100 Subject: [PATCH] fix tx status update (#3123) * fix tx status update * fix infobox with disabled address rotation * check transaction direction (edge case) --- .../widgets/coins_page/assets_history/history_section.dart | 5 ++--- lib/new-ui/widgets/receive_page/receive_info_box.dart | 2 ++ lib/view_model/dashboard/dashboard_view_model.dart | 4 ++++ lib/view_model/dashboard/transaction_list_item.dart | 5 ++++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/new-ui/widgets/coins_page/assets_history/history_section.dart b/lib/new-ui/widgets/coins_page/assets_history/history_section.dart index 82109190c..aa6672fdf 100644 --- a/lib/new-ui/widgets/coins_page/assets_history/history_section.dart +++ b/lib/new-ui/widgets/coins_page/assets_history/history_section.dart @@ -30,12 +30,11 @@ class HistorySection extends StatelessWidget { return SliverPadding( padding: const EdgeInsets.symmetric(horizontal: 16.0), sliver: Observer( - builder: (_) => (dashboardViewModel.items.isEmpty && - dashboardViewModel.status is! SyncingSyncStatus) + builder: (_) => (dashboardViewModel.items.isEmpty) ? SliverPadding( padding: EdgeInsets.only(top: 24), sliver: SliverToBoxAdapter( - child: Center( + child: (dashboardViewModel.status is SyncingSyncStatus) ? SizedBox.shrink() : Center( child: Text(S.of(context).transactions_will_appear_here, style: TextStyle( fontSize: 14, diff --git a/lib/new-ui/widgets/receive_page/receive_info_box.dart b/lib/new-ui/widgets/receive_page/receive_info_box.dart index f99a8f0cb..9b6b65dfd 100644 --- a/lib/new-ui/widgets/receive_page/receive_info_box.dart +++ b/lib/new-ui/widgets/receive_page/receive_info_box.dart @@ -30,6 +30,8 @@ class ReceiveInfoBox extends StatelessWidget { onDismissed: onDismissed, ); default: + if(autoGenerateSubaddressStatus == AutoGenerateSubaddressStatus.disabled) + return null; return ReceiveInfoBox( iconPath: "assets/new-ui/info.svg", message: S.current.infobox_auto_address, diff --git a/lib/view_model/dashboard/dashboard_view_model.dart b/lib/view_model/dashboard/dashboard_view_model.dart index 2a699e384..3dbc0eaf8 100644 --- a/lib/view_model/dashboard/dashboard_view_model.dart +++ b/lib/view_model/dashboard/dashboard_view_model.dart @@ -490,6 +490,10 @@ abstract class DashboardViewModelBase with Store { )) .where((item) => !transactions.contains(item)); + transactions.removeWhere((item) => + newTransactions.any((tx) => tx.transaction.txHash == item.transaction.txHash && tx.transaction.direction == item.transaction.direction) + ); + transactions.addAll(newTransactions); // transactions.clear(); // transactions.addAll(relevantTxs.map((tx) => TransactionListItem( diff --git a/lib/view_model/dashboard/transaction_list_item.dart b/lib/view_model/dashboard/transaction_list_item.dart index de025e114..1fb3f3043 100644 --- a/lib/view_model/dashboard/transaction_list_item.dart +++ b/lib/view_model/dashboard/transaction_list_item.dart @@ -293,7 +293,10 @@ class TransactionListItem extends ActionListItem with Keyable { @override bool operator ==(Object other) { if (other is TransactionListItem) { - return other.transaction.txHash == transaction.txHash; + return other.transaction.txHash == transaction.txHash && + other.transaction.confirmations == transaction.confirmations && + other.transaction.isPending == transaction.isPending && + other.transaction.direction == transaction.direction; } return false; }