コード例 #1
0
 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);
         }
     }
 }
コード例 #2
0
        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();
        }
コード例 #3
0
        private int?GetPreviousLedgerEntryIndex(LedgerEntry ledgerEntry)
        {
            var previousLedgerEntry = GetPreviousLedgerEntry(ledgerEntry);

            return(previousLedgerEntry == null ? null : (int?)LedgerEntries.IndexOf(previousLedgerEntry));
        }
コード例 #4
0
 private LedgerEntry GetPreviousLedgerEntry(LedgerEntry ledgerEntry)
 {
     return(LedgerEntries.FirstOrDefault(t => t.TransactionTimestamp.CompareTo(ledgerEntry.TransactionTimestamp) < 0 &&
                                         t.BlockTimestamp.CompareTo(ledgerEntry.BlockTimestamp) < 0));
 }