mirror of
https://github.com/Qortal/qortal.git
synced 2025-04-23 19:37:51 +00:00
Rework of systray statuses
- Show "Minting" as long as online accounts are submitted to the network (previously it related to block signing). - Fixed bug causing it to regularly show "Synchronizing 100%". - Only show "Synchronizing" if the chain falls more than 2 hours behind - anything less is unnecessary noise.
This commit is contained in:
parent
35ce64cc3a
commit
899a6eb104
@ -787,23 +787,24 @@ public class Controller extends Thread {
|
|||||||
String actionText;
|
String actionText;
|
||||||
|
|
||||||
// Use a more tolerant latest block timestamp in the isUpToDate() calls below to reduce misleading statuses.
|
// Use a more tolerant latest block timestamp in the isUpToDate() calls below to reduce misleading statuses.
|
||||||
// Any block in the last 60 minutes is considered "up to date" for the purposes of displaying statuses.
|
// Any block in the last 2 hours is considered "up to date" for the purposes of displaying statuses.
|
||||||
final Long minLatestBlockTimestamp = NTP.getTime() - (60 * 60 * 1000L);
|
// This also aligns with the time interval required for continued online account submission.
|
||||||
|
final Long minLatestBlockTimestamp = NTP.getTime() - (2 * 60 * 60 * 1000L);
|
||||||
|
|
||||||
|
// Only show sync percent if it's less than 100, to avoid confusion
|
||||||
|
final Integer syncPercent = Synchronizer.getInstance().getSyncPercent();
|
||||||
|
final boolean isSyncing = (syncPercent != null && syncPercent < 100);
|
||||||
|
|
||||||
synchronized (Synchronizer.getInstance().syncLock) {
|
synchronized (Synchronizer.getInstance().syncLock) {
|
||||||
if (Settings.getInstance().isLite()) {
|
if (Settings.getInstance().isLite()) {
|
||||||
actionText = Translator.INSTANCE.translate("SysTray", "LITE_NODE");
|
actionText = Translator.INSTANCE.translate("SysTray", "LITE_NODE");
|
||||||
SysTray.getInstance().setTrayIcon(4);
|
SysTray.getInstance().setTrayIcon(4);
|
||||||
}
|
}
|
||||||
else if (this.isMintingPossible) {
|
|
||||||
actionText = Translator.INSTANCE.translate("SysTray", "MINTING_ENABLED");
|
|
||||||
SysTray.getInstance().setTrayIcon(2);
|
|
||||||
}
|
|
||||||
else if (numberOfPeers < Settings.getInstance().getMinBlockchainPeers()) {
|
else if (numberOfPeers < Settings.getInstance().getMinBlockchainPeers()) {
|
||||||
actionText = Translator.INSTANCE.translate("SysTray", "CONNECTING");
|
actionText = Translator.INSTANCE.translate("SysTray", "CONNECTING");
|
||||||
SysTray.getInstance().setTrayIcon(3);
|
SysTray.getInstance().setTrayIcon(3);
|
||||||
}
|
}
|
||||||
else if (!this.isUpToDate(minLatestBlockTimestamp) && Synchronizer.getInstance().isSynchronizing()) {
|
else if (!this.isUpToDate(minLatestBlockTimestamp) && isSyncing) {
|
||||||
actionText = String.format("%s - %d%%", Translator.INSTANCE.translate("SysTray", "SYNCHRONIZING_BLOCKCHAIN"), Synchronizer.getInstance().getSyncPercent());
|
actionText = String.format("%s - %d%%", Translator.INSTANCE.translate("SysTray", "SYNCHRONIZING_BLOCKCHAIN"), Synchronizer.getInstance().getSyncPercent());
|
||||||
SysTray.getInstance().setTrayIcon(3);
|
SysTray.getInstance().setTrayIcon(3);
|
||||||
}
|
}
|
||||||
@ -811,6 +812,10 @@ public class Controller extends Thread {
|
|||||||
actionText = String.format("%s", Translator.INSTANCE.translate("SysTray", "SYNCHRONIZING_BLOCKCHAIN"));
|
actionText = String.format("%s", Translator.INSTANCE.translate("SysTray", "SYNCHRONIZING_BLOCKCHAIN"));
|
||||||
SysTray.getInstance().setTrayIcon(3);
|
SysTray.getInstance().setTrayIcon(3);
|
||||||
}
|
}
|
||||||
|
else if (OnlineAccountsManager.getInstance().hasOnlineAccounts()) {
|
||||||
|
actionText = Translator.INSTANCE.translate("SysTray", "MINTING_ENABLED");
|
||||||
|
SysTray.getInstance().setTrayIcon(2);
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
actionText = Translator.INSTANCE.translate("SysTray", "MINTING_DISABLED");
|
actionText = Translator.INSTANCE.translate("SysTray", "MINTING_DISABLED");
|
||||||
SysTray.getInstance().setTrayIcon(4);
|
SysTray.getInstance().setTrayIcon(4);
|
||||||
|
@ -60,6 +60,8 @@ public class OnlineAccountsManager extends Thread {
|
|||||||
|
|
||||||
private final List<OnlineAccountData> onlineAccountsImportQueue = Collections.synchronizedList(new ArrayList<>());
|
private final List<OnlineAccountData> onlineAccountsImportQueue = Collections.synchronizedList(new ArrayList<>());
|
||||||
|
|
||||||
|
private boolean hasOnlineAccounts = false;
|
||||||
|
|
||||||
|
|
||||||
/** Cache of current 'online accounts' */
|
/** Cache of current 'online accounts' */
|
||||||
List<OnlineAccountData> onlineAccounts = new ArrayList<>();
|
List<OnlineAccountData> onlineAccounts = new ArrayList<>();
|
||||||
@ -116,6 +118,10 @@ public class OnlineAccountsManager extends Thread {
|
|||||||
this.interrupt();
|
this.interrupt();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasOnlineAccounts() {
|
||||||
|
return this.hasOnlineAccounts;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Online accounts import queue
|
// Online accounts import queue
|
||||||
|
|
||||||
@ -327,6 +333,7 @@ public class OnlineAccountsManager extends Thread {
|
|||||||
// 'current' timestamp
|
// 'current' timestamp
|
||||||
final long onlineAccountsTimestamp = toOnlineAccountTimestamp(now);
|
final long onlineAccountsTimestamp = toOnlineAccountTimestamp(now);
|
||||||
boolean hasInfoChanged = false;
|
boolean hasInfoChanged = false;
|
||||||
|
boolean existingAccountsExist = false;
|
||||||
|
|
||||||
byte[] timestampBytes = Longs.toByteArray(onlineAccountsTimestamp);
|
byte[] timestampBytes = Longs.toByteArray(onlineAccountsTimestamp);
|
||||||
List<OnlineAccountData> ourOnlineAccounts = new ArrayList<>();
|
List<OnlineAccountData> ourOnlineAccounts = new ArrayList<>();
|
||||||
@ -347,8 +354,10 @@ public class OnlineAccountsManager extends Thread {
|
|||||||
|
|
||||||
if (Arrays.equals(existingOnlineAccountData.getPublicKey(), ourOnlineAccountData.getPublicKey())) {
|
if (Arrays.equals(existingOnlineAccountData.getPublicKey(), ourOnlineAccountData.getPublicKey())) {
|
||||||
// If our online account is already present, with same timestamp, then move on to next mintingAccount
|
// If our online account is already present, with same timestamp, then move on to next mintingAccount
|
||||||
if (existingOnlineAccountData.getTimestamp() == onlineAccountsTimestamp)
|
if (existingOnlineAccountData.getTimestamp() == onlineAccountsTimestamp) {
|
||||||
|
existingAccountsExist = true;
|
||||||
continue MINTING_ACCOUNTS;
|
continue MINTING_ACCOUNTS;
|
||||||
|
}
|
||||||
|
|
||||||
// If our online account is already present, but with older timestamp, then remove it
|
// If our online account is already present, but with older timestamp, then remove it
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
@ -364,6 +373,9 @@ public class OnlineAccountsManager extends Thread {
|
|||||||
hasInfoChanged = true;
|
hasInfoChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Keep track of whether we have online accounts circulating in the network, for systray status
|
||||||
|
this.hasOnlineAccounts = existingAccountsExist || !ourOnlineAccounts.isEmpty();
|
||||||
|
|
||||||
if (!hasInfoChanged)
|
if (!hasInfoChanged)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user