From b9c5c06d53f5b3927e125ec46e3d1d7efcae6f12 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 28 Sep 2020 00:30:13 +0200 Subject: Matrix: remove deprecated login method Scroll to bottom if the last item is the selected item, or when selecting another room. --- src/QuickMedia.cpp | 7 ++++++- src/plugins/Matrix.cpp | 8 +++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp index e07c30a..994d14c 100644 --- a/src/QuickMedia.cpp +++ b/src/QuickMedia.cpp @@ -3533,6 +3533,7 @@ namespace QuickMedia { // TODO: Make asynchronous if(matrix->get_all_synced_room_messages(current_room_id, new_items) == PluginResult::OK) { tabs[MESSAGES_TAB_INDEX].body->append_items(std::move(new_items)); + tabs[MESSAGES_TAB_INDEX].body->select_last_item(); } else { std::string err_msg = "Failed to get messages in room: " + current_room_id; show_notification("QuickMedia", err_msg, Urgency::CRITICAL); @@ -3636,7 +3637,7 @@ namespace QuickMedia { BodyItems result_items; if(matrix->sync() == PluginResult::OK) { fprintf(stderr, "Synced matrix\n"); - if(matrix->get_new_room_messages(sync_future_room_id, result_items) != PluginResult::OK) { + if(matrix->get_new_room_messages(sync_future_room_id, result_items) == PluginResult::OK) { fprintf(stderr, "Failed to get new matrix messages in room: %s\n", sync_future_room_id.c_str()); } } else { @@ -3651,7 +3652,11 @@ namespace QuickMedia { BodyItems new_body_items = sync_future.get(); // Ignore finished sync if it happened in another room. When we navigate back to the room we will get the messages again if(sync_future_room_id == current_room_id) { + int num_items = tabs[MESSAGES_TAB_INDEX].body->items.size(); + bool scroll_to_end = (num_items > 0 && tabs[MESSAGES_TAB_INDEX].body->get_selected_item() == num_items - 1); tabs[MESSAGES_TAB_INDEX].body->append_items(std::move(new_body_items)); + if(scroll_to_end) + tabs[MESSAGES_TAB_INDEX].body->select_last_item(); } sync_running = false; } diff --git a/src/plugins/Matrix.cpp b/src/plugins/Matrix.cpp index d709f73..d364b16 100644 --- a/src/plugins/Matrix.cpp +++ b/src/plugins/Matrix.cpp @@ -832,11 +832,13 @@ namespace QuickMedia { } PluginResult Matrix::login(const std::string &username, const std::string &password, const std::string &homeserver, std::string &err_msg) { - // TODO: this is deprecated but not all homeservers have the new version. - // When this is removed from future version then switch to the new login method (identifier object with the username). + Json::Value identifier_json(Json::objectValue); + identifier_json["type"] = "m.id.user"; // TODO: What if the server doesn't support this login type? redirect to sso web page etc + identifier_json["user"] = username; + Json::Value request_data(Json::objectValue); request_data["type"] = "m.login.password"; - request_data["user"] = username; + request_data["identifier"] = std::move(identifier_json); request_data["password"] = password; Json::StreamWriterBuilder builder; -- cgit v1.2.3