fix(lite): keep a rejected import key out of the log and Settings

The backend's error for a key it doesn't recognize repeats the key
("'<key>' was not recognized as either a spending key or a viewing
key"). Import passed that text on as its error, so a mistyped private
key was written to the lite log (shown in the Console tab) and to the
Settings status line. A failed import now carries a fixed reason
(unrecognized format, wallet locked, key already exists, could not be
decoded, or rejected), which is all the log records. Settings shows
"Couldn't import the key — check it, unlock the wallet (if encrypted)
and try again." instead, translated in all eight languages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-09 21:09:48 -05:00
co-authored by Claude Opus 5.5
parent 7c24400c83
commit bb84243114
13 changed files with 69 additions and 6 deletions
+2 -1
View File
@@ -1916,8 +1916,9 @@ void RenderSettingsPage(App* app) {
} else {
s_settingsState.lite_backup_status = TR("lite_working");
app->liteWallet()->importKeyAsync(liteKey, [](const wallet::LiteImportResult& r) {
// Generic text: the reason (non-secret) is in the lite log.
s_settingsState.lite_backup_status =
r.ok ? std::string(TR("lite_key_imported")) : r.error;
r.ok ? TR("lite_key_imported") : TR("lite_key_import_failed");
});
sodium_memzero(s_settingsState.lite_import_key, sizeof(s_settingsState.lite_import_key));
}