mirror of
https://github.com/feather-wallet/feather.git
synced 2025-01-03 17:39:49 +00:00
Warn if wallet file was not created with Feather
This commit is contained in:
parent
6903609e8b
commit
b873d1174e
4 changed files with 24 additions and 5 deletions
|
@ -158,17 +158,21 @@ void WindowManager::tryOpenWallet(const QString &path, const QString &password)
|
||||||
}
|
}
|
||||||
|
|
||||||
void WindowManager::onWalletOpened(Wallet *wallet) {
|
void WindowManager::onWalletOpened(Wallet *wallet) {
|
||||||
if (wallet->status() != Wallet::Status_Ok) {
|
auto status = wallet->status();
|
||||||
|
if (status != Wallet::Status_Ok) {
|
||||||
QString errMsg = wallet->errorString();
|
QString errMsg = wallet->errorString();
|
||||||
if (wallet->status() == Wallet::Status_BadPassword) {
|
QString keysPath = wallet->keysPath();
|
||||||
|
QString cachePath = wallet->cachePath();
|
||||||
|
wallet->deleteLater();
|
||||||
|
if (status == Wallet::Status_BadPassword) {
|
||||||
// Don't show incorrect password when we try with empty password for the first time
|
// Don't show incorrect password when we try with empty password for the first time
|
||||||
bool showIncorrectPassword = m_openWalletTriedOnce;
|
bool showIncorrectPassword = m_openWalletTriedOnce;
|
||||||
m_openWalletTriedOnce = true;
|
m_openWalletTriedOnce = true;
|
||||||
this->onWalletOpenPasswordRequired(showIncorrectPassword, wallet->keysPath());
|
this->onWalletOpenPasswordRequired(showIncorrectPassword, 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")) {
|
||||||
qCritical() << errMsg;
|
qCritical() << errMsg;
|
||||||
WalletManager::clearWalletCache(wallet->cachePath()); // TODO: check this
|
WalletManager::clearWalletCache(cachePath);
|
||||||
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(errMsg);
|
this->handleWalletError(errMsg);
|
||||||
} else {
|
} else {
|
||||||
|
@ -179,6 +183,16 @@ void WindowManager::onWalletOpened(Wallet *wallet) {
|
||||||
|
|
||||||
this->onInitialNetworkConfigured();
|
this->onInitialNetworkConfigured();
|
||||||
|
|
||||||
|
if (!wallet->cacheAttributeExists("feather.xmrig_password") && !wallet->cacheAttributeExists("feather.created")) {
|
||||||
|
auto result = QMessageBox::question(nullptr, "Foreign wallet",
|
||||||
|
"This wallet file was not created with Feather. This may cause unexpected behavior. Please restore your wallet from seed.\n\nOpen this wallet anyway?");
|
||||||
|
if (result == QMessageBox::No) {
|
||||||
|
wallet->deleteLater();
|
||||||
|
this->initWizard();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Create new mainwindow with wallet
|
// Create new mainwindow with wallet
|
||||||
|
|
||||||
m_splashDialog->hide();
|
m_splashDialog->hide();
|
||||||
|
|
|
@ -958,6 +958,10 @@ QString Wallet::integratedAddress(const QString &paymentId) const
|
||||||
return QString::fromStdString(m_walletImpl->integratedAddress(paymentId.toStdString()));
|
return QString::fromStdString(m_walletImpl->integratedAddress(paymentId.toStdString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Wallet::cacheAttributeExists(const QString &key) {
|
||||||
|
return m_walletImpl->cacheAttributeExists(key.toStdString());
|
||||||
|
}
|
||||||
|
|
||||||
QString Wallet::getCacheAttribute(const QString &key) const {
|
QString Wallet::getCacheAttribute(const QString &key) const {
|
||||||
return QString::fromStdString(m_walletImpl->getCacheAttribute(key.toStdString()));
|
return QString::fromStdString(m_walletImpl->getCacheAttribute(key.toStdString()));
|
||||||
}
|
}
|
||||||
|
|
|
@ -394,6 +394,7 @@ public:
|
||||||
QString make_uri(const QString &address, quint64 &amount, const QString &description, const QString &recipient) const;
|
QString make_uri(const QString &address, quint64 &amount, const QString &description, const QString &recipient) const;
|
||||||
|
|
||||||
//! Namespace your cacheAttribute keys to avoid collisions
|
//! Namespace your cacheAttribute keys to avoid collisions
|
||||||
|
bool cacheAttributeExists(const QString &key);
|
||||||
bool setCacheAttribute(const QString &key, const QString &val);
|
bool setCacheAttribute(const QString &key, const QString &val);
|
||||||
QString getCacheAttribute(const QString &key) const;
|
QString getCacheAttribute(const QString &key) const;
|
||||||
|
|
||||||
|
|
|
@ -290,7 +290,7 @@ bool WalletManager::clearWalletCache(const QString &wallet_path)
|
||||||
|
|
||||||
// create unique file name
|
// create unique file name
|
||||||
for (int i = 1; QFile::exists(newFileName); i++) {
|
for (int i = 1; QFile::exists(newFileName); i++) {
|
||||||
newFileName = QString("%1%2.%3").arg(fileName).arg(suffix).arg(i);
|
newFileName = QString("%1%2.%3").arg(fileName, suffix, QString::number(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
return walletCache.rename(newFileName);
|
return walletCache.rename(newFileName);
|
||||||
|
|
Loading…
Reference in a new issue