diff --git a/interface/resources/qml/hifi/commerce/wallet/Help.qml b/interface/resources/qml/hifi/commerce/wallet/Help.qml index 2252cbfb59..589143ca84 100644 --- a/interface/resources/qml/hifi/commerce/wallet/Help.qml +++ b/interface/resources/qml/hifi/commerce/wallet/Help.qml @@ -31,6 +31,7 @@ Item { // "Unavailable" RalewayRegular { + id: helpText; text: "Help me!"; // Anchors anchors.fill: parent; @@ -43,6 +44,18 @@ Item { horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; } + HifiControlsUit.Button { + color: hifi.buttons.black; + colorScheme: hifi.colorSchemes.dark; + anchors.bottom: helpText.bottom; + anchors.horizontalCenter: parent.horizontalCenter; + height: 50; + width: 250; + text: "Testing: Reset Wallet!"; + onClicked: { + commerce.reset(); + } + } // // FUNCTION DEFINITIONS START diff --git a/interface/src/commerce/Ledger.cpp b/interface/src/commerce/Ledger.cpp index dddfae6455..08eb79017f 100644 --- a/interface/src/commerce/Ledger.cpp +++ b/interface/src/commerce/Ledger.cpp @@ -111,3 +111,10 @@ void Ledger::inventory(const QStringList& keys) { void Ledger::history(const QStringList& keys) { keysQuery("history", "historySuccess", "historyFailure"); } + +// The api/failResponse is called just for the side effect of logging. +void Ledger::resetSuccess(QNetworkReply& reply) { apiResponse("reset", reply); } +void Ledger::resetFailure(QNetworkReply& reply) { failResponse("reset", reply); } +void Ledger::reset() { + send("reset_user_hfc_account", "resetSuccess", "resetFailure", QNetworkAccessManager::PutOperation, QJsonObject()); +} \ No newline at end of file diff --git a/interface/src/commerce/Ledger.h b/interface/src/commerce/Ledger.h index 7d3fdef0c0..55b648aa4c 100644 --- a/interface/src/commerce/Ledger.h +++ b/interface/src/commerce/Ledger.h @@ -29,6 +29,7 @@ public: void balance(const QStringList& keys); void inventory(const QStringList& keys); void history(const QStringList& keys); + void reset(); signals: void buyResult(QJsonObject result); @@ -48,6 +49,8 @@ public slots: void inventoryFailure(QNetworkReply& reply); void historySuccess(QNetworkReply& reply); void historyFailure(QNetworkReply& reply); + void resetSuccess(QNetworkReply& reply); + void resetFailure(QNetworkReply& reply); private: QJsonObject apiResponse(const QString& label, QNetworkReply& reply); diff --git a/interface/src/commerce/QmlCommerce.cpp b/interface/src/commerce/QmlCommerce.cpp index bf6bcc221c..655f228672 100644 --- a/interface/src/commerce/QmlCommerce.cpp +++ b/interface/src/commerce/QmlCommerce.cpp @@ -85,3 +85,10 @@ void QmlCommerce::getKeyFilePathIfExists() { auto wallet = DependencyManager::get(); wallet->sendKeyFilePathIfExists(); } + +void QmlCommerce::reset() { + auto ledger = DependencyManager::get(); + auto wallet = DependencyManager::get(); + ledger->reset(); + wallet->reset(); +} \ No newline at end of file diff --git a/interface/src/commerce/QmlCommerce.h b/interface/src/commerce/QmlCommerce.h index fd913ae4b7..deb11b7714 100644 --- a/interface/src/commerce/QmlCommerce.h +++ b/interface/src/commerce/QmlCommerce.h @@ -50,6 +50,7 @@ protected: Q_INVOKABLE void setPassphrase(const QString& passphrase); Q_INVOKABLE void getPassphraseSetupStatus(); Q_INVOKABLE void getKeyFilePathIfExists(); + Q_INVOKABLE void reset(); }; #endif // hifi_QmlCommerce_h diff --git a/interface/src/commerce/Wallet.cpp b/interface/src/commerce/Wallet.cpp index 4cbcb5f1d3..363269e9fc 100644 --- a/interface/src/commerce/Wallet.cpp +++ b/interface/src/commerce/Wallet.cpp @@ -464,7 +464,9 @@ void Wallet::getSecurityImage() { } // decrypt and return - if (decryptFile(imageFilePath(), &data, &dataLen)) { + QString filePath(imageFilePath()); + QFileInfo fileInfo(filePath); + if (fileInfo.exists() && decryptFile(filePath, &data, &dataLen)) { // create the pixmap _securityImage = new QPixmap(); _securityImage->loadFromData(data, dataLen, "jpg"); @@ -488,3 +490,13 @@ void Wallet::sendKeyFilePathIfExists() { emit keyFilePathIfExistsResult(""); } } + +void Wallet::reset() { + _publicKeys.clear(); + delete _securityImage; + delete _passphrase; + QFile keyFile(keyFilePath()); + QFile imageFile(imageFilePath()); + keyFile.remove(); + imageFile.remove(); +} \ No newline at end of file diff --git a/interface/src/commerce/Wallet.h b/interface/src/commerce/Wallet.h index 478a35625d..4acd913181 100644 --- a/interface/src/commerce/Wallet.h +++ b/interface/src/commerce/Wallet.h @@ -40,6 +40,8 @@ public: void setPassphrase(const QString& passphrase); QString* getPassphrase() { return _passphrase; } + void reset(); + signals: void securityImageResult(bool exists) ; void keyFilePathIfExistsResult(const QString& path);