dont update on every single block (#776)

This commit is contained in:
m2049r 2021-08-07 11:58:54 +02:00 committed by GitHub
parent d801a50962
commit 303b3aa354
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 21 additions and 16 deletions

View File

@ -108,28 +108,33 @@ public class WalletService extends Service {
Timber.d("unconfirmedMoneyReceived() %d @ %s", amount, txId);
}
int lastTxCount = 0;
private long lastBlockTime = 0;
private int lastTxCount = 0;
public void newBlock(long height) {
final Wallet wallet = getWallet();
if (wallet == null) throw new IllegalStateException("No wallet!");
Timber.d("newBlock() @ %d with observer %s", height, observer);
if (observer != null) {
boolean fullRefresh = false;
updateDaemonState(wallet, wallet.isSynchronized() ? height : 0);
if (!wallet.isSynchronized()) {
updated = true;
// we want to see our transactions as they come in
wallet.getHistory().refresh();
int txCount = wallet.getHistory().getCount();
if (txCount > lastTxCount) {
// update the transaction list only if we have more than before
lastTxCount = txCount;
fullRefresh = true;
// don't flood with an update for every block ...
if (lastBlockTime < System.currentTimeMillis() - 2000) {
lastBlockTime = System.currentTimeMillis();
Timber.d("newBlock() @ %d with observer %s", height, observer);
if (observer != null) {
boolean fullRefresh = false;
updateDaemonState(wallet, wallet.isSynchronized() ? height : 0);
if (!wallet.isSynchronized()) {
updated = true;
// we want to see our transactions as they come in
wallet.getHistory().refresh();
int txCount = wallet.getHistory().getCount();
if (txCount > lastTxCount) {
// update the transaction list only if we have more than before
lastTxCount = txCount;
fullRefresh = true;
}
}
if (observer != null)
observer.onRefreshed(wallet, fullRefresh);
}
if (observer != null)
observer.onRefreshed(wallet, fullRefresh);
}
}