commit 7b70793052e54e4b0c8a611236ba2e491b5f1649
parent afa0a773558f0ce4821c46f7371e56326527f24e
Author: Joris Hartog <jorishartog@hotmail.com>
Date: Wed, 22 Jul 2026 14:29:06 +0200
Keep burn rate edits stable during polling
Diffstat:
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/assets/mivora-ui.js b/assets/mivora-ui.js
@@ -19,6 +19,8 @@ window.mivoraApp = function mivoraApp() {
walletVerified: false,
setupFeedback: null,
burnAmount: 0,
+ burnAmountDraft: 0,
+ burnAmountDirty: false,
transferTo: "",
transferAmount: 25,
peerAddress: "",
@@ -260,6 +262,9 @@ window.mivoraApp = function mivoraApp() {
this.mempool = mempool;
this.peers = peers;
this.burnAmount = status.mining?.burn_per_block ?? this.burnAmount;
+ if (!this.burnAmountDirty) {
+ this.burnAmountDraft = this.burnAmount;
+ }
this.lastUpdated = new Date();
} catch (error) {
this.showFlash(error.message, "error");
@@ -398,11 +403,15 @@ window.mivoraApp = function mivoraApp() {
async saveBurn() {
try {
+ const amount = Math.max(0, Math.trunc(Number(this.burnAmountDraft) || 0));
+ this.burnAmountDraft = amount;
await this.postForm(
"/api/settings/burn-per-block",
- { amount: this.burnAmount || 0 },
- `Burn rate set to ${this.burnAmount || 0} coin(s) per block`
+ { amount },
+ `Burn rate set to ${amount} coin(s) per block`
);
+ this.burnAmountDirty = false;
+ this.burnAmount = amount;
} catch (error) {
this.showFlash(error.message, "error");
}
diff --git a/src/adapters/http.rs b/src/adapters/http.rs
@@ -536,7 +536,7 @@ const INDEX_HTML: &str = r#"<!doctype html>
.block-card { flex-basis: 108px; }
}
</style>
- <script defer src="/assets/mivora-ui.js?v=22"></script>
+ <script defer src="/assets/mivora-ui.js?v=23"></script>
<script defer src="/assets/alpine.min.js"></script>
</head>
<body x-data="mivoraApp()" x-init="init()" x-cloak>
@@ -672,7 +672,7 @@ const INDEX_HTML: &str = r#"<!doctype html>
<div class="panel">
<h3>Mining</h3>
<form @submit.prevent="saveBurn">
- <label>Coins per block<input x-model.number="burnAmount" type="number" min="0"></label>
+ <label>Coins per block<input x-model.number="burnAmountDraft" @input="burnAmountDirty = true" type="number" min="0"></label>
<button class="primary" type="submit">Save</button>
</form>
</div>