perf(migrate): gate the seed-migration confirming balance scan
While the seed migration sits on the Confirming gate it polled the sweep's confirmations and a full wallet balance together on every pass. That balance call is the expensive one, and it only matters once the sweep is mined and we do not yet have a post-mine figure, yet it ran every poll even mid-sync when it cannot move the gate. - The confirmation count is still read on every poll. - The balance scan now runs only when it can actually advance the adopt gate: the sweep is mined, no post-mine balance has been recorded yet, and no sync is in progress. The manual Refresh button forces it regardless. - The decision lives in a small pure helper, and the poller snapshots the main-thread state it needs rather than reading members off the worker thread. - The Confirming screen now claims a leftover remainder (and offers the re-sweep button) only once the balance has actually been measured; while it is still unknown it keeps waiting instead of prompting on a sentinel. Tests cover the gate helper across the forced, syncing, and mined cases. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+5
-2
@@ -5015,7 +5015,10 @@ void App::renderSeedMigrationDialog()
|
||||
if (confirmed && legacyEmpty) {
|
||||
if (ui::material::TactileButton(TR("mig_adopt"), ImVec2(180 * dp, 0)))
|
||||
beginAdoptSeedWallet();
|
||||
} else if (confirmed && !legacyEmpty) {
|
||||
} else if (confirmed && seed_migration_legacy_remaining_ >= 0.0 && !legacyEmpty) {
|
||||
// Only claim a remainder once the legacy balance was actually measured; while a sweep is
|
||||
// mined but the balance scan is still gated (node syncing), remaining stays at the -1.0
|
||||
// sentinel, so fall through to the waiting state rather than offering a sweep on an unknown.
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, ui::material::ReadableError());
|
||||
ImGui::TextWrapped("%s", TR("mig_remainder"));
|
||||
ImGui::PopStyleColor();
|
||||
@@ -5026,7 +5029,7 @@ void App::renderSeedMigrationDialog()
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ui::material::TactileButton(TR("refresh"), ImVec2(110 * dp, 0)))
|
||||
pollSweepStatus();
|
||||
pollSweepStatus(/*forceBalance=*/true);
|
||||
ImGui::SameLine();
|
||||
if (ui::material::TactileButton(TR("mig_later"), ImVec2(100 * dp, 0)))
|
||||
close(); // pending state + txid persist; resumes here next time
|
||||
|
||||
Reference in New Issue
Block a user