fix tx status update (#3123)

* fix tx status update * fix infobox with disabled address rotation * check transaction direction (edge case)

malik1004x committed Mar 23, 2026 at 21:11 UTC 212441d1bc36a07b23f3def5f881592030f44bd1
4 files changed +12 -4
lib/new-ui/widgets/coins_page/assets_history/history_section.dart
+2 -3
@@ -30,12 +30,11 @@ class HistorySection extends StatelessWidget {
30 return SliverPadding(
31 padding: const EdgeInsets.symmetric(horizontal: 16.0),
32 sliver: Observer(
33 - builder: (_) => (dashboardViewModel.items.isEmpty &&
34 - dashboardViewModel.status is! SyncingSyncStatus)
33 + builder: (_) => (dashboardViewModel.items.isEmpty)
34 ? SliverPadding(
35 padding: EdgeInsets.only(top: 24),
36 sliver: SliverToBoxAdapter(
38 - child: Center(
37 + child: (dashboardViewModel.status is SyncingSyncStatus) ? SizedBox.shrink() : Center(
38 child: Text(S.of(context).transactions_will_appear_here,
39 style: TextStyle(
40 fontSize: 14,
lib/new-ui/widgets/receive_page/receive_info_box.dart
+2
@@ -30,6 +30,8 @@ class ReceiveInfoBox extends StatelessWidget {
30 onDismissed: onDismissed,
31 );
32 default:
33 + if(autoGenerateSubaddressStatus == AutoGenerateSubaddressStatus.disabled)
34 + return null;
35 return ReceiveInfoBox(
36 iconPath: "assets/new-ui/info.svg",
37 message: S.current.infobox_auto_address,
lib/view_model/dashboard/dashboard_view_model.dart
+4
@@ -490,6 +490,10 @@ abstract class DashboardViewModelBase with Store {
490 ))
491 .where((item) => !transactions.contains(item));
492
493 + transactions.removeWhere((item) =>
494 + newTransactions.any((tx) => tx.transaction.txHash == item.transaction.txHash && tx.transaction.direction == item.transaction.direction)
495 + );
496 +
497 transactions.addAll(newTransactions);
498 // transactions.clear();
499 // transactions.addAll(relevantTxs.map((tx) => TransactionListItem(
lib/view_model/dashboard/transaction_list_item.dart
+4 -1
@@ -293,7 +293,10 @@ class TransactionListItem extends ActionListItem with Keyable {
293 @override
294 bool operator ==(Object other) {
295 if (other is TransactionListItem) {
296 - return other.transaction.txHash == transaction.txHash;
296 + return other.transaction.txHash == transaction.txHash &&
297 + other.transaction.confirmations == transaction.confirmations &&
298 + other.transaction.isPending == transaction.isPending &&
299 + other.transaction.direction == transaction.direction;
300 }
301 return false;
302 }