From 695c3c0814e74350b1155f84b309ea07accac0b7 Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Fri, 17 Apr 2020 00:27:43 +0200
Subject: [PATCH] Fix registration on construct

---
 CMakeLists.txt       |  2 +-
 src/RegisterPage.cpp | 18 +++++++++++-------
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 87a6ebd3a..2fab6c93e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -335,7 +335,7 @@ if(USE_BUNDLED_MTXCLIENT)
 	FetchContent_Declare(
 		MatrixClient
 		GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git
-		GIT_TAG        729d9b086d645799dda2a803c64e5b72d5e1959d
+		GIT_TAG        48e100e09b470c5c8be1f13837d4abd990283068
 		)
 	FetchContent_MakeAvailable(MatrixClient)
 else()
diff --git a/src/RegisterPage.cpp b/src/RegisterPage.cpp
index 39a69a341..2833381d8 100644
--- a/src/RegisterPage.cpp
+++ b/src/RegisterPage.cpp
@@ -145,7 +145,8 @@ RegisterPage::RegisterPage(QWidget *parent)
                  const mtx::user_interactive::Unauthorized &unauthorized) {
                   auto completed_stages = unauthorized.completed;
                   auto flows            = unauthorized.flows;
-                  auto session          = unauthorized.session;
+                  auto session = unauthorized.session.empty() ? http::client()->generate_txn_id()
+                                                              : unauthorized.session;
 
                   nhlog::ui()->info("Completed stages: {}", completed_stages.size());
 
@@ -252,7 +253,7 @@ RegisterPage::RegisterPage(QWidget *parent)
 
                             // The server requires registration flows.
                             if (err->status_code == boost::beast::http::status::unauthorized) {
-                                    if (err->matrix_error.unauthorized.session.empty()) {
+                                    if (err->matrix_error.unauthorized.flows.empty()) {
                                             nhlog::net()->warn(
                                               "failed to retrieve registration flows: ({}) "
                                               "{}",
@@ -268,8 +269,11 @@ RegisterPage::RegisterPage(QWidget *parent)
                                     return;
                             }
 
-                            nhlog::net()->warn("failed to register: status_code ({})",
-                                               static_cast<int>(err->status_code));
+                            nhlog::net()->warn("failed to register: status_code ({}), "
+                                               "matrix_error: ({}), parser error ({})",
+                                               static_cast<int>(err->status_code),
+                                               err->matrix_error.error,
+                                               err->parse_error);
 
                             emit registerErrorCb(QString::fromStdString(err->matrix_error.error));
                     });
@@ -325,9 +329,9 @@ RegisterPage::onRegisterButtonClicked()
 
                           // The server requires registration flows.
                           if (err->status_code == boost::beast::http::status::unauthorized) {
-                                  if (err->matrix_error.unauthorized.session.empty()) {
+                                  if (err->matrix_error.unauthorized.flows.empty()) {
                                           nhlog::net()->warn(
-                                            "failed to retrieve registration flows: ({}) "
+                                            "failed to retrieve registration flows1: ({}) "
                                             "{}",
                                             static_cast<int>(err->status_code),
                                             err->matrix_error.error);
@@ -342,7 +346,7 @@ RegisterPage::onRegisterButtonClicked()
                                   return;
                           }
 
-                          nhlog::net()->warn(
+                          nhlog::net()->error(
                             "failed to register: status_code ({}), matrix_error({})",
                             static_cast<int>(err->status_code),
                             err->matrix_error.error);
-- 
GitLab