summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2023-01-12 02:49:50 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2023-01-12 03:02:24 +0100
commit0833b3978142bc791a5a99ff291cda9024b5d6de (patch)
treebcc71566a3ef7c0f0e82b14edf0491e241527be2
parenta90b46026bc54303432178acb01fedb3f4207bd5 (diff)
Log registration flows
-rw-r--r--CMakeLists.txt2
-rw-r--r--io.github.NhekoReborn.Nheko.yaml2
-rw-r--r--src/MatrixClient.h113
-rw-r--r--src/RegisterPage.cpp4
4 files changed, 6 insertions, 115 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 079fdcb9..52fe8c9f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -595,7 +595,7 @@ if(USE_BUNDLED_MTXCLIENT)
FetchContent_Declare(
MatrixClient
GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git
- GIT_TAG 176242b1d2c68878c0ce610c109d0779fe7fa8fb
+ GIT_TAG b8f0e821066946fd567ea6a11933ebce69d72b6f
)
set(BUILD_LIB_EXAMPLES OFF CACHE INTERNAL "")
set(BUILD_LIB_TESTS OFF CACHE INTERNAL "")
diff --git a/io.github.NhekoReborn.Nheko.yaml b/io.github.NhekoReborn.Nheko.yaml
index e90fae86..d382e5d4 100644
--- a/io.github.NhekoReborn.Nheko.yaml
+++ b/io.github.NhekoReborn.Nheko.yaml
@@ -182,7 +182,7 @@ modules:
buildsystem: cmake-ninja
name: mtxclient
sources:
- - commit: 176242b1d2c68878c0ce610c109d0779fe7fa8fb
+ - commit: b8f0e821066946fd567ea6a11933ebce69d72b6f
#tag: v0.8.2
type: git
url: https://github.com/Nheko-Reborn/mtxclient.git
diff --git a/src/MatrixClient.h b/src/MatrixClient.h
index 4d313e45..e47812d3 100644
--- a/src/MatrixClient.h
+++ b/src/MatrixClient.h
@@ -8,8 +8,6 @@
#include <mtxclient/http/client.hpp>
-#include <curl/curl.h>
-
#include "Logging.h"
namespace http {
@@ -24,114 +22,3 @@ void
init();
}
-template<>
-struct fmt::formatter<mtx::http::ClientError>
-{
- // Presentation format: 'f' - fixed, 'e' - exponential.
- bool print_network_error = false;
- bool print_http_error = false;
- bool print_parser_error = false;
- bool print_matrix_error = false;
-
- // Parses format specifications of the form ['f' | 'e'].
- constexpr auto parse(fmt::format_parse_context &ctx) -> decltype(ctx.begin())
- {
- // [ctx.begin(), ctx.end()) is a character range that contains a part of
- // the format string starting from the format specifications to be parsed,
- // e.g. in
- //
- // fmt::format("{:f} - point of interest", point{1, 2});
- //
- // the range will contain "f} - point of interest". The formatter should
- // parse specifiers until '}' or the end of the range. In this example
- // the formatter should parse the 'f' specifier and return an iterator
- // pointing to '}'.
-
- // Parse the presentation format and store it in the formatter:
- auto it = ctx.begin(), end = ctx.end();
-
- while (it != end && *it != '}') {
- auto tmp = *it++;
-
- switch (tmp) {
- case 'n':
- print_matrix_error = true;
- break;
- case 'h':
- print_matrix_error = true;
- break;
- case 'p':
- print_matrix_error = true;
- break;
- case 'm':
- print_matrix_error = true;
- break;
- default:
- throw format_error("invalid format specifier for mtx error");
- }
- }
-
- // Check if reached the end of the range:
- if (it != end && *it != '}')
- throw fmt::format_error("invalid format");
-
- // Return an iterator past the end of the parsed range:
- return it;
- }
-
- // Formats the point p using the parsed format specification (presentation)
- // stored in this formatter.
- template<typename FormatContext>
- auto format(const mtx::http::ClientError &e, FormatContext &ctx) -> decltype(ctx.out())
- {
- // ctx.out() is an output iterator to write to.
- bool prepend_comma = false;
- fmt::format_to(ctx.out(), "(");
- if (print_network_error || e.error_code) {
- fmt::format_to(ctx.out(), "connection: {}", e.error_code_string());
- prepend_comma = true;
- }
-
- if (print_http_error ||
- (e.status_code != 0 && (e.status_code < 200 || e.status_code >= 300))) {
- if (prepend_comma)
- fmt::format_to(ctx.out(), ", ");
- fmt::format_to(ctx.out(), "http: {}", e.status_code);
- prepend_comma = true;
- }
-
- if (print_parser_error || !e.parse_error.empty()) {
- if (prepend_comma)
- fmt::format_to(ctx.out(), ", ");
- fmt::format_to(ctx.out(), "parser: {}", e.parse_error);
- prepend_comma = true;
- }
-
- if (print_parser_error ||
- (e.matrix_error.errcode != mtx::errors::ErrorCode::M_UNRECOGNIZED &&
- !e.matrix_error.error.empty())) {
- if (prepend_comma)
- fmt::format_to(ctx.out(), ", ");
- fmt::format_to(ctx.out(),
- "matrix: {}:'{}'",
- to_string(e.matrix_error.errcode),
- e.matrix_error.error);
- }
-
- return fmt::format_to(ctx.out(), ")");
- }
-};
-
-template<>
-struct fmt::formatter<std::optional<mtx::http::ClientError>> : formatter<mtx::http::ClientError>
-{
- // parse is inherited from formatter<string_view>.
- template<typename FormatContext>
- auto format(std::optional<mtx::http::ClientError> c, FormatContext &ctx)
- {
- if (!c)
- return fmt::format_to(ctx.out(), "(no error)");
- else
- return formatter<mtx::http::ClientError>::format(*c, ctx);
- }
-};
diff --git a/src/RegisterPage.cpp b/src/RegisterPage.cpp
index 05fcb9ad..d1b8f265 100644
--- a/src/RegisterPage.cpp
+++ b/src/RegisterPage.cpp
@@ -164,6 +164,10 @@ RegisterPage::versionsCheck()
return;
}
+ for (const auto &f : e->matrix_error.unauthorized.flows)
+ nhlog::ui()->debug("Registration flows for server: {}",
+ fmt::join(f.stages, ", "));
+
supported_ = true;
lookingUpHs_ = false;
emit lookingUpHsChanged();