feat(seed): glow the Migrate-to-seed button for a legacy wallet
A pre-seed-phrase (legacy, non-mnemonic) wallet is exactly the one that benefits from migrating — so nudge the user by glowing the Settings "Migrate to seed" button with a soft pulsing accent halo. Adds a cached wallet mnemonic status (probeWalletSeedStatus), classified once per connect via z_exportmnemonic (the same signal the migration Intro pre-flight uses): NoMnemonic = legacy → glow; HasMnemonic / Incapable (old daemon) / while locked or on lite = no glow. Reset on disconnect so it re-probes after a wallet switch or a post-migration adopt, with a small attempt cap to avoid re-probing on a persistent transient error. The sweep forces the status so the glow is captured (restored after). Verified dark + light. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1336,10 +1336,24 @@ void RenderSettingsPage(App* app) {
|
||||
if (TactileButton(TR("seed_backup_button"), ImVec2(0, 0), btnFont))
|
||||
app->showSeedBackupDialog();
|
||||
if (ImGui::IsItemHovered()) material::Tooltip("%s", TR("tt_seed_backup"));
|
||||
// Migrate to a new seed-phrase wallet (create in isolation, then sweep funds).
|
||||
// Migrate to a new seed-phrase wallet (create in isolation, then sweep funds). A
|
||||
// legacy (pre-seed-phrase) wallet glows the button to nudge the user toward migrating.
|
||||
ImGui::SameLine(0, scaledSp);
|
||||
const bool migrateGlow = app->isPreSeedWallet();
|
||||
if (TactileButton(TR("seed_migrate_button"), ImVec2(0, 0), btnFont))
|
||||
app->showSeedMigrationDialog();
|
||||
if (migrateGlow) {
|
||||
const ImVec2 gmn = ImGui::GetItemRectMin(), gmx = ImGui::GetItemRectMax();
|
||||
const float gdp = Layout::dpiScale();
|
||||
const float pulse = 0.5f + 0.5f * std::sin((float)ImGui::GetTime() * 3.2f); // 0..1
|
||||
ImDrawList* gdl = ImGui::GetWindowDrawList();
|
||||
for (int g = 3; g >= 1; --g) { // soft, pulsing outward halo in the accent color
|
||||
const float e = (float)g * 2.2f * gdp;
|
||||
const int a = (int)((70.0f + pulse * 95.0f) / (float)g);
|
||||
gdl->AddRect(ImVec2(gmn.x - e, gmn.y - e), ImVec2(gmx.x + e, gmx.y + e),
|
||||
material::WithAlpha(material::Primary(), a), 6.0f * gdp + e, 0, 1.6f * gdp);
|
||||
}
|
||||
}
|
||||
if (ImGui::IsItemHovered()) material::Tooltip("%s", TR("tt_seed_migrate"));
|
||||
// Multi-wallet: list wallet files + switch the active one.
|
||||
ImGui::SameLine(0, scaledSp);
|
||||
|
||||
Reference in New Issue
Block a user