From e64b0861a1aa9de93c974aec725dad562e90624a Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 3 Oct 2017 10:53:10 -0700 Subject: [PATCH] Change passphrase working --- .../qml/hifi/commerce/wallet/PassphraseChange.qml | 9 +++++---- .../hifi/commerce/wallet/PassphraseSelection.qml | 6 +++--- interface/src/commerce/QmlCommerce.cpp | 15 ++++++++++----- interface/src/commerce/QmlCommerce.h | 2 ++ 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/interface/resources/qml/hifi/commerce/wallet/PassphraseChange.qml b/interface/resources/qml/hifi/commerce/wallet/PassphraseChange.qml index e560384807..a75d511793 100644 --- a/interface/resources/qml/hifi/commerce/wallet/PassphraseChange.qml +++ b/interface/resources/qml/hifi/commerce/wallet/PassphraseChange.qml @@ -90,7 +90,7 @@ Item { } else { // Error submitting new passphrase resetSubmitButton(); - passphraseSelection.setErrorText("Backend error"); + passphraseSelection.setErrorText("Current passphrase incorrect - try again"); } } else { sendSignalToWallet(msg); @@ -137,9 +137,10 @@ Item { width: 150; text: "Submit"; onClicked: { - if (passphraseSelection.validateAndSubmitPassphrase()) { - passphraseSubmitButton.text = "Submitting..."; - passphraseSubmitButton.enabled = false; + passphraseSubmitButton.text = "Submitting..."; + passphraseSubmitButton.enabled = false; + if (!passphraseSelection.validateAndSubmitPassphrase()) { + resetSubmitButton(); } } } diff --git a/interface/resources/qml/hifi/commerce/wallet/PassphraseSelection.qml b/interface/resources/qml/hifi/commerce/wallet/PassphraseSelection.qml index 46c7e36eaf..7c0cecd98d 100644 --- a/interface/resources/qml/hifi/commerce/wallet/PassphraseSelection.qml +++ b/interface/resources/qml/hifi/commerce/wallet/PassphraseSelection.qml @@ -43,8 +43,8 @@ Item { passphrasePageSecurityImage.source = "image://security/securityImage"; } - onWalletAuthenticatedStatusResult: { - sendMessageToLightbox({method: 'statusResult', status: isAuthenticated}); + onChangePassphraseStatusResult: { + sendMessageToLightbox({method: 'statusResult', status: changeSuccess}); } } @@ -310,7 +310,7 @@ Item { passphraseFieldAgain.error = false; currentPassphraseField.error = false; setErrorText(""); - commerce.setPassphrase(passphraseField.text); + commerce.changePassphrase(currentPassphraseField.text, passphraseField.text); return true; } } diff --git a/interface/src/commerce/QmlCommerce.cpp b/interface/src/commerce/QmlCommerce.cpp index b735cfcd17..dbd84594bc 100644 --- a/interface/src/commerce/QmlCommerce.cpp +++ b/interface/src/commerce/QmlCommerce.cpp @@ -117,13 +117,18 @@ void QmlCommerce::history() { ledger->history(wallet->listPublicKeys()); } +void QmlCommerce::changePassphrase(const QString& oldPassphrase, const QString& newPassphrase) { + auto wallet = DependencyManager::get(); + if ((wallet->getPassphrase()->isEmpty() || wallet->getPassphrase() == oldPassphrase) && !newPassphrase.isEmpty()) { + emit changePassphraseStatusResult(wallet->changePassphrase(newPassphrase)); + } else { + emit changePassphraseStatusResult(false); + } +} + void QmlCommerce::setPassphrase(const QString& passphrase) { auto wallet = DependencyManager::get(); - if(wallet->getPassphrase() && !wallet->getPassphrase()->isEmpty() && !passphrase.isEmpty()) { - wallet->changePassphrase(passphrase); - } else { - wallet->setPassphrase(passphrase); - } + wallet->setPassphrase(passphrase); getWalletAuthenticatedStatus(); } diff --git a/interface/src/commerce/QmlCommerce.h b/interface/src/commerce/QmlCommerce.h index 9323791a82..8e6af6da65 100644 --- a/interface/src/commerce/QmlCommerce.h +++ b/interface/src/commerce/QmlCommerce.h @@ -41,6 +41,7 @@ signals: void keyFilePathIfExistsResult(const QString& path); void securityImageResult(bool exists); void walletAuthenticatedStatusResult(bool isAuthenticated); + void changePassphraseStatusResult(bool changeSuccess); void buyResult(QJsonObject result); // Balance and Inventory are NOT properties, because QML can't change them (without risk of failure), and @@ -60,6 +61,7 @@ protected: Q_INVOKABLE void chooseSecurityImage(const QString& imageFile); Q_INVOKABLE void setPassphrase(const QString& passphrase); + Q_INVOKABLE void changePassphrase(const QString& oldPassphrase, const QString& newPassphrase); Q_INVOKABLE void buy(const QString& assetId, int cost, const bool controlledFailure = false); Q_INVOKABLE void balance();