summary refs log tree commit diff
path: root/src/ui/UIA.cpp
diff options
context:
space:
mode:
authorLoren Burkholder <computersemiexpert@outlook.com>2023-06-28 17:00:34 -0400
committerLoren Burkholder <computersemiexpert@outlook.com>2023-07-06 08:35:37 -0400
commitfedc178827c5648b0ccbdd2cd08dcebc920ac416 (patch)
tree7c6c59b60899d8c7a321bea8fe44c7d04f79040f /src/ui/UIA.cpp
parentRemove unneeded forward declaration (diff)
downloadnheko-fedc178827c5648b0ccbdd2cd08dcebc920ac416.tar.xz
Port the reCAPTCHA dialog to QML
Diffstat (limited to 'src/ui/UIA.cpp')
-rw-r--r--src/ui/UIA.cpp28
1 files changed, 10 insertions, 18 deletions
diff --git a/src/ui/UIA.cpp b/src/ui/UIA.cpp

index 2b6b059a..ba35df9b 100644 --- a/src/ui/UIA.cpp +++ b/src/ui/UIA.cpp
@@ -14,12 +14,12 @@ #include "Logging.h" #include "MatrixClient.h" #include "dialogs/FallbackAuth.h" -#include "dialogs/ReCaptcha.h" +#include "ReCaptcha.h" UIA * UIA::instance() { - static UIA uia; + static UIA uia{nullptr}; return &uia; } @@ -99,24 +99,16 @@ UIA::genericHandler(QString context) } else if (current_stage == mtx::user_interactive::auth_types::msisdn) { emit phoneNumber(); } else if (current_stage == mtx::user_interactive::auth_types::recaptcha) { - auto captchaDialog = - new dialogs::ReCaptcha(QString::fromStdString(u.session), nullptr); - captchaDialog->setWindowTitle(context); - - connect( - captchaDialog, &dialogs::ReCaptcha::confirmation, this, [captchaDialog, h, u]() { - captchaDialog->close(); - captchaDialog->deleteLater(); - h.next(mtx::user_interactive::Auth{u.session, - mtx::user_interactive::auth::Fallback{}}); - }); - - connect(captchaDialog, &dialogs::ReCaptcha::cancel, this, [this]() { + auto captcha = new ReCaptcha(QString::fromStdString(u.session), context, nullptr); + QQmlEngine::setObjectOwnership(captcha, QQmlEngine::JavaScriptOwnership); + connect(captcha, &ReCaptcha::confirmation, this, [h, u]() { + h.next(mtx::user_interactive::Auth{u.session, + mtx::user_interactive::auth::Fallback{}}); + }); + connect(captcha, &ReCaptcha::cancelled, this, [this]() { emit error(tr("Registration aborted")); }); - - QTimer::singleShot(0, this, [captchaDialog]() { captchaDialog->show(); }); - + emit reCaptcha(captcha); } else if (current_stage == mtx::user_interactive::auth_types::dummy) { h.next( mtx::user_interactive::Auth{u.session, mtx::user_interactive::auth::Dummy{}});