trezor: disable bridge transport, improve error messages

This commit is contained in:
tobtoht 2024-04-19 13:14:29 +02:00
parent 485913c7fc
commit 0da98d2003
No known key found for this signature in database
GPG key ID: E45B10DD027D2472
3 changed files with 60 additions and 60 deletions

2
monero

@ -1 +1 @@
Subproject commit 892a9a16d169ecd8f15e892f1e14fdd84cfce0f3 Subproject commit 85ea9458c8a27814729b24c3b932f60ff331903e

View file

@ -278,12 +278,9 @@ void WindowManager::onWalletOpened(Wallet *wallet) {
errMsg = QString("%1\n\nAttempted to clean wallet cache. Please restart Feather.").arg(errMsg); errMsg = QString("%1\n\nAttempted to clean wallet cache. Please restart Feather.").arg(errMsg);
this->handleWalletError({nullptr, Utils::ERROR, "Unable to open wallet", errMsg}); this->handleWalletError({nullptr, Utils::ERROR, "Unable to open wallet", errMsg});
} else { } else {
QStringList helpItems = {}; Utils::Message message{nullptr, Utils::ERROR, "Unable to open wallet"};
if (errMsg == "Failed to acquire device") { this->handleDeviceError(errMsg, message);
helpItems.append("Try closing Trezor suite"); this->handleWalletError(message);
}
this->handleWalletError({nullptr, Utils::ERROR, "Unable to open wallet", errMsg, helpItems});
} }
return; return;
} }
@ -430,60 +427,10 @@ void WindowManager::onWalletCreated(Wallet *wallet) {
auto state = wallet->status(); auto state = wallet->status();
if (state != Wallet::Status_Ok) { if (state != Wallet::Status_Ok) {
QString error = wallet->errorString(); QString error = wallet->errorString();
QStringList helpItems; Utils::Message message{m_wizard, Utils::ERROR, "Failed to create wallet from device"};
QString link; this->handleDeviceError(error, message);
QString doc;
// Ledger
if (error.contains("No device found")) {
error = "No Ledger device found.";
helpItems = {"Make sure the Monero app is open on the device.", "If the problem persists, try restarting Feather."};
doc = "create_wallet_hardware_device";
}
else if (error.contains("Unable to open device")) {
error = "Unable to open device.";
helpItems = {"The device might be in use by a different application."};
#if defined(Q_OS_LINUX)
helpItems.append("On Linux you may need to follow the instructions in the link below before the device can be opened:\n"
"https://support.ledger.com/hc/en-us/articles/115005165269-Fix-connection-issues");
link = "https://support.ledger.com/hc/en-us/articles/115005165269-Fix-connection-issues";
#endif
}
// Trezor
else if (error.contains("Unable to claim libusb device")) {
error = "Unable to claim Trezor device";
helpItems = {"Please make sure the device is not used by another program and try again."};
}
else if (error.contains("Cannot get a device address")) {
error = "Cannot get a device address";
helpItems = {"Restart the Trezor device and try again"};
}
else if (error.contains("Could not connect to the device Trezor") || error.contains("Device connect failed")) {
error = "Could not connect to the Trezor device";
helpItems = {"Make sure the device is connected to your computer and unlocked."};
#if defined(Q_OS_LINUX)
helpItems.append("On Linux you may need to follow the instructions in the link below before the device can be opened:\n"
"https://wiki.trezor.io/Udev_rules");
link = "https://wiki.trezor.io/Udev_rules";
#endif
}
else if (error.contains("Failed to acquire device")) {
helpItems = {"Try closing Trezor suite"};
}
if (error.contains("SW_CLIENT_NOT_SUPPORTED")) {
helpItems = {"Upgrade your Ledger device firmware to the latest version using Ledger Live.\n"
"Then upgrade the Monero app for the Ledger device to the latest version."};
}
else if (error.contains("Wrong Device Status")) {
helpItems = {"The device may need to be unlocked."};
}
else if (error.contains("Wrong Channel")) {
helpItems = {"Restart the hardware device and try again."};
}
this->showWizard(WalletWizard::Page_Menu); this->showWizard(WalletWizard::Page_Menu);
Utils::showMsg({m_wizard, Utils::ERROR, "Failed to create wallet from device", error, helpItems, doc, "", link}); Utils::showMsg(message);
m_splashDialog->hide(); m_splashDialog->hide();
m_openingWallet = false; m_openingWallet = false;
return; return;
@ -499,6 +446,58 @@ void WindowManager::handleWalletError(const Utils::Message &message) {
this->initWizard(); this->initWizard();
} }
void WindowManager::handleDeviceError(const QString &error, Utils::Message &msg) {
msg.description = error;
// Ledger
if (error.contains("No device found")) {
msg.description = "No Ledger device found.";
msg.helpItems = {"Make sure the Monero app is open on the device.", "If the problem persists, try restarting Feather."};
msg.doc = "create_wallet_hardware_device";
}
else if (error.contains("Unable to open device")) {
msg.description = "Unable to open device.";
msg.helpItems = {"The device might be in use by a different application."};
#if defined(Q_OS_LINUX)
msg.helpItems.append("On Linux you may need to follow the instructions in the link below before the device can be opened:\n"
"https://support.ledger.com/hc/en-us/articles/115005165269-Fix-connection-issues");
msg.link = "https://support.ledger.com/hc/en-us/articles/115005165269-Fix-connection-issues";
#endif
}
// Trezor
else if (error.contains("Unable to claim libusb device")) {
msg.description = "Unable to claim Trezor device";
msg.helpItems = {"Please make sure the device is not used by another program, like Trezor Suite or trezord, and try again."};
}
else if (error.contains("Cannot get a device address")) {
msg.description = "Cannot get a device address";
msg.helpItems = {"Reattach the Trezor device and try again"};
}
else if (error.contains("Could not connect to the device Trezor") || error.contains("Device connect failed")) {
msg.description = "Could not connect to the Trezor device";
msg.helpItems = {"Make sure the device is connected to your computer and unlocked."};
#if defined(Q_OS_LINUX)
msg.helpItems.append("On Linux you may need to follow the instructions in the link below before the device can be opened:\n"
"https://wiki.trezor.io/Udev_rules");
msg.link = "https://wiki.trezor.io/Udev_rules";
#endif
}
else if (error.contains("Failed to acquire device")) {
msg.helpItems = {"Make sure Trezor Suite and trezord are closed."};
}
else if (error.contains("SW_CLIENT_NOT_SUPPORTED")) {
msg.helpItems = {"Upgrade your Ledger device firmware to the latest version using Ledger Live.\n"
"Then upgrade the Monero app for the Ledger device to the latest version."};
}
else if (error.contains("Wrong Device Status")) {
msg.helpItems = {"The device may need to be unlocked."};
}
else if (error.contains("Wrong Channel")) {
msg.helpItems = {"Restart the hardware device and try again."};
}
}
void WindowManager::showCrashLogs() { void WindowManager::showCrashLogs() {
QString crashLogPath{Config::defaultConfigDir().path() + "/crash_report.txt"}; QString crashLogPath{Config::defaultConfigDir().path() + "/crash_report.txt"};
QFile crashLogFile{crashLogPath}; QFile crashLogFile{crashLogPath};

View file

@ -78,6 +78,7 @@ private:
WalletWizard* createWizard(WalletWizard::Page startPage); WalletWizard* createWizard(WalletWizard::Page startPage);
void handleWalletError(const Utils::Message &message); void handleWalletError(const Utils::Message &message);
void handleDeviceError(const QString &error, Utils::Message &msg);
void displayWalletErrorMessage(const QString &message); void displayWalletErrorMessage(const QString &message);
void initSkins(); void initSkins();