From b61b2b1630b8e0ef2cca2be68170f8ab4414f7e8 Mon Sep 17 00:00:00 2001 From: dsc Date: Fri, 14 May 2021 22:42:14 +0200 Subject: [PATCH] Improve QR code detection --- src/vr/main.cpp | 26 ++++++++++++++------------ src/vr/qml/wallet/send/SendPageQR.qml | 6 +----- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/vr/main.cpp b/src/vr/main.cpp index da2bce8..bf24757 100644 --- a/src/vr/main.cpp +++ b/src/vr/main.cpp @@ -184,31 +184,33 @@ namespace wowletvr { auto results = m_qrDecoder.decodePNG(path); auto result = wowletvr::WowletVR::checkQRScreenshotResults(results); - qDebug() << "no initial results"; + qDebug() << "QR code try #1: " << result; if(result.isEmpty()) { qDebug() << "trying to invert the image"; - // lets try to invert the image QImage image(path); image.invertPixels(); image.save(pathPreview); results = m_qrDecoder.decodePNG(pathPreview); result = wowletvr::WowletVR::checkQRScreenshotResults(results); - if(!result.isEmpty()) { - qDebug() << "Found QR code after inverting the image."; + qDebug() << "QR code try #2: " << result; + } + + if(!result.isEmpty()) { + qDebug() << "QR code decoded, trying address validation."; + + if(result.toLower().startsWith("wownero:")) + result = result.remove(0, 8); + + if(WalletManager::addressValid(result, NetworkType::MAINNET)) { + qDebug() << "QR code appears valid."; emit qrScreenshotSuccess(result); - QFile file (path); + QFile file(path); file.remove(); return; } - } else { - qDebug() << "QR code found."; - emit qrScreenshotSuccess(result); - QFile file (path); - file.remove(); - return; } - emit qrScreenshotSuccess("No QR code could be detected."); + emit qrScreenshotFailed("No QR code could be detected."); } QString WowletVR::checkQRScreenshotResults(std::vector results) { diff --git a/src/vr/qml/wallet/send/SendPageQR.qml b/src/vr/qml/wallet/send/SendPageQR.qml index c2310ff..9faaa00 100644 --- a/src/vr/qml/wallet/send/SendPageQR.qml +++ b/src/vr/qml/wallet/send/SendPageQR.qml @@ -51,13 +51,9 @@ ColumnLayout { function onQrScreenshotSuccess(address) { root.takingScreenshot = false; console.log("onPinLookupReceived", address); - if(!address.startsWith("wownero:")) { - messagePopup.showMessage("Invalid QR code", "QR data did not start with \"wownero:\""); - return; - } if(sendStateView.currentView === sendStateView.qrPage) { - sendStateController.destinationAddress = address.slice(8); + sendStateController.destinationAddress = address; sendStateView.state = "transferPage"; } }