WindowManager: improve wallet cache corruption error handling

This commit is contained in:
tobtoht 2024-05-07 14:40:49 +02:00
parent 87ee96cb9a
commit af9d9ddc21
No known key found for this signature in database
GPG key ID: E45B10DD027D2472

View file

@ -274,11 +274,11 @@ void WindowManager::onWalletOpened(Wallet *wallet) {
m_openWalletTriedOnce = true; m_openWalletTriedOnce = true;
this->onWalletOpenPasswordRequired(showIncorrectPassword, wallet->keysPath()); this->onWalletOpenPasswordRequired(showIncorrectPassword, wallet->keysPath());
} }
else if (errMsg == QString("basic_string::_M_replace_aux") || errMsg == QString("std::bad_alloc")) { else if (errMsg == QString("basic_string::_M_replace_aux") || errMsg == QString("std::bad_alloc") || errMsg == "invalid signature") {
qCritical() << errMsg; qCritical() << errMsg;
WalletManager::clearWalletCache(wallet->cachePath()); WalletManager::clearWalletCache(wallet->cachePath());
errMsg = QString("%1\n\nAttempted to clean wallet cache. Please restart Feather.").arg(errMsg); errMsg = QString("%1\n\nWallet cache is unusable, moving it.").arg(errMsg);
this->handleWalletError({nullptr, Utils::ERROR, "Unable to open wallet", errMsg}); this->handleWalletError({nullptr, Utils::ERROR, "Unable to open wallet", errMsg, {"Try opening this wallet again.", "If this keeps happening, please file a bug report."}, "report_an_issue"});
} else { } else {
Utils::Message message{nullptr, Utils::ERROR, "Unable to open wallet"}; Utils::Message message{nullptr, Utils::ERROR, "Unable to open wallet"};
this->handleDeviceError(errMsg, message); this->handleDeviceError(errMsg, message);
@ -498,6 +498,9 @@ void WindowManager::handleDeviceError(const QString &error, Utils::Message &msg)
else if (error.contains("Wrong Channel")) { else if (error.contains("Wrong Channel")) {
msg.helpItems = {"Restart the hardware device and try again."}; msg.helpItems = {"Restart the hardware device and try again."};
} }
else {
msg.doc = "report_an_issue";
}
} }
void WindowManager::showCrashLogs() { void WindowManager::showCrashLogs() {