private void InsertLedgerEntry(LedgerEntry ledgerEntry) { if (!LedgerEntries.Any()) { LedgerEntries.Add(ledgerEntry); } else { var index = GetPreviousLedgerEntryIndex(ledgerEntry); if (index.HasValue) { LedgerEntries.Insert(index.Value, ledgerEntry); } else { LedgerEntries.Add(ledgerEntry); } } }
public OverviewViewModel(IWalletRepository walletRepository, IAccountLedgerRunner accountLedgerRunner, IAccountLedgerRepository accountLedgerRepository, IContactRepository contactRepository) { _walletRepository = walletRepository; _accountLedgerRepository = accountLedgerRepository; _contactRepository = contactRepository; InitUiProperties(); MessengerInstance.Register <LedgerEntryMessage>(this, (message) => { DispatcherHelper.CheckBeginInvokeOnUI(() => { if (message.Action == LedgerEntryMessageAction.Added) { InsertLedgerEntry(message.LedgerEntry); } else if (message.Action == LedgerEntryMessageAction.ConfirmationUpdated) { var existingLedgerEntry = LedgerEntries.Single(t => t.Equals(message.LedgerEntry)); existingLedgerEntry.IsConfirmed = message.LedgerEntry.IsConfirmed; } else if (message.Action == LedgerEntryMessageAction.Removed) { LedgerEntries.Remove(LedgerEntries.Single(t => t.Equals(message.LedgerEntry))); } }); }); MessengerInstance.Register <BalanceUpdatedMessage>(this, (message) => { DispatcherHelper.CheckBeginInvokeOnUI(() => NxtBalance = message.NqtBalance.NqtToNxt()); }); MessengerInstance.Register <SecretPhraseResetMessage>(this, (message) => { InitUiProperties(); LedgerEntries.Clear(); }); LedgerEntries = new ObservableCollection <LedgerEntry>(); LoadLedgerEntriesFromRepository(); }
private int?GetPreviousLedgerEntryIndex(LedgerEntry ledgerEntry) { var previousLedgerEntry = GetPreviousLedgerEntry(ledgerEntry); return(previousLedgerEntry == null ? null : (int?)LedgerEntries.IndexOf(previousLedgerEntry)); }
private LedgerEntry GetPreviousLedgerEntry(LedgerEntry ledgerEntry) { return(LedgerEntries.FirstOrDefault(t => t.TransactionTimestamp.CompareTo(ledgerEntry.TransactionTimestamp) < 0 && t.BlockTimestamp.CompareTo(ledgerEntry.BlockTimestamp) < 0)); }