get history list
ADD
WalletWasabi.Fluent/ViewModels/Wallets/History/HistoryItemViewModel.cs
+using System.Globalization;
+using WalletWasabi.Blockchain.Analysis.Clustering;
+using WalletWasabi.Blockchain.Transactions;
+using WalletWasabi.Models;
+using WalletWasabi.Stores;
+
+namespace WalletWasabi.Fluent.ViewModels.Wallets.History
+{
+ public class HistoryItemViewModel
+ {
+ public HistoryItemViewModel(TransactionSummary transactionSummary, BitcoinStore bitcoinStore)
+ {
+ Date = transactionSummary.DateTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture);
+
+ var confirmations = transactionSummary.Height.Type == HeightType.Chain ? (int) bitcoinStore.SmartHeaderChain.TipHeight - transactionSummary.Height.Value + 1 : 0;
+ Confirmed = confirmations > 0;
+
+ var amount = transactionSummary.Amount;
+ if (amount < 0)
+ {
+ OutgoingAmount = amount.ToString(fplus: true, trimExcessZero: true);
+ }
+ else
+ {
+ IncomingAmount = amount.ToString(fplus: true, trimExcessZero: true);
+ }
+
+ Labels = transactionSummary.Label;
+ }
+
+ public bool Confirmed { get; }
+
+ public string Date { get; }
+
+ public SmartLabel Labels { get; }
+
+ public string? IncomingAmount { get; }
+
+ public string? OutgoingAmount { get; }
+ }
+}

ADD
WalletWasabi.Fluent/ViewModels/Wallets/History/HistoryViewModel.cs
+using System;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Threading.Tasks;
+using DynamicData;
+using WalletWasabi.Blockchain.Transactions;
+using WalletWasabi.Logging;
+using WalletWasabi.Stores;
+using WalletWasabi.Wallets;
+
+namespace WalletWasabi.Fluent.ViewModels.Wallets.History
+{
+ public partial class HistoryViewModel
+ {
+ private readonly Wallet _wallet;
+ private readonly BitcoinStore _bitcoinStore;
+
+ [AutoNotify] private ObservableCollection<HistoryItemViewModel> _histories;
+
+ public HistoryViewModel(Wallet wallet, BitcoinStore bitcoinStore)
+ {
+ _wallet = wallet;
+ _bitcoinStore = bitcoinStore;
+ _histories = new ObservableCollection<HistoryItemViewModel>();
+ }
+
+ private async Task TryRewriteTableAsync()
+ {
+ try
+ {
+ var historyBuilder = new TransactionHistoryBuilder(_wallet);
+ var txRecordList = await Task.Run(historyBuilder.BuildHistorySummary);
+
+ Histories.Clear();
+ var trs = txRecordList.Select(transactionSummary => new HistoryItemViewModel(transactionSummary, _bitcoinStore));
+ Histories.AddRange(trs);
+ }
+ catch (Exception ex)
+ {
+ Logger.LogError(ex);
+ }
+ }
+ }
+}

get history list