diff options
Diffstat (limited to 'src/RegisterPage.cpp')
-rw-r--r-- | src/RegisterPage.cpp | 74 |
1 files changed, 37 insertions, 37 deletions
diff --git a/src/RegisterPage.cpp b/src/RegisterPage.cpp index 5a02713a..dcf60dee 100644 --- a/src/RegisterPage.cpp +++ b/src/RegisterPage.cpp @@ -134,43 +134,43 @@ RegisterPage::RegisterPage(QWidget *parent) [this](const std::string &user, const std::string &pass, const std::string &session) { emit errorOccurred(); - if (!captchaDialog_) { - captchaDialog_ = std::make_shared<dialogs::ReCaptcha>( - QString::fromStdString(session), this); - connect( - captchaDialog_.get(), - &dialogs::ReCaptcha::closing, - this, - [this, user, pass, session]() { - captchaDialog_->close(); - emit registering(); - - http::client()->flow_response( - user, - pass, - session, - "m.login.recaptcha", - [this](const mtx::responses::Register &res, - mtx::http::RequestErr err) { - if (err) { - nhlog::net()->warn( - "failed to retrieve registration flows: {}", - err->matrix_error.error); - emit errorOccurred(); - emit registerErrorCb(QString::fromStdString( - err->matrix_error.error)); - return; - } - - http::client()->set_user(res.user_id); - http::client()->set_access_token(res.access_token); - - emit registerOk(); - }); - }); - } - - QTimer::singleShot(1000, this, [this]() { captchaDialog_->show(); }); + auto captchaDialog = + new dialogs::ReCaptcha(QString::fromStdString(session), this); + + connect(captchaDialog, + &dialogs::ReCaptcha::closing, + this, + [this, user, pass, session, captchaDialog]() { + captchaDialog->close(); + captchaDialog->deleteLater(); + + emit registering(); + + http::client()->flow_response( + user, + pass, + session, + "m.login.recaptcha", + [this](const mtx::responses::Register &res, + mtx::http::RequestErr err) { + if (err) { + nhlog::net()->warn( + "failed to retrieve registration flows: {}", + err->matrix_error.error); + emit errorOccurred(); + emit registerErrorCb(QString::fromStdString( + err->matrix_error.error)); + return; + } + + http::client()->set_user(res.user_id); + http::client()->set_access_token(res.access_token); + + emit registerOk(); + }); + }); + + QTimer::singleShot(1000, this, [captchaDialog]() { captchaDialog->show(); }); }); setLayout(top_layout_); |