From 925139ea3ba6634a267586db0e60af1ea60cdc6f Mon Sep 17 00:00:00 2001 From: dec05eba Date: Thu, 1 Oct 2020 12:16:14 +0200 Subject: Matrix: fix replying broken formatting, including reply message in body --- src/QuickMedia.cpp | 3 +-- src/plugins/Matrix.cpp | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp index 4234d1c..9460ec6 100644 --- a/src/QuickMedia.cpp +++ b/src/QuickMedia.cpp @@ -1331,7 +1331,6 @@ namespace QuickMedia { return false; } - static int watch_history_get_item_by_id(const Json::Value &video_history_json, const char *id) { assert(video_history_json.isArray()); @@ -3288,7 +3287,7 @@ namespace QuickMedia { else if(index == 0) return ""; else - return str.substr(0, index - 1); + return str.substr(0, index); } void Program::chat_page() { diff --git a/src/plugins/Matrix.cpp b/src/plugins/Matrix.cpp index ed3b0af..257feb4 100644 --- a/src/plugins/Matrix.cpp +++ b/src/plugins/Matrix.cpp @@ -771,14 +771,26 @@ namespace QuickMedia { return PluginResult::OK; } + static std::string remove_reply_formatting(const std::string &str) { + if(strncmp(str.c_str(), "> <@", 4) == 0) { + size_t index = str.find("> ", 4); + if(index != std::string::npos) { + size_t msg_begin = str.find("\n\n", index + 2); + if(msg_begin != std::string::npos) + return str.substr(msg_begin + 2); + } + } + return str; + } + static std::string create_body_for_message_reply(const RoomData *room_data, const Message *message, const std::string &body) { std::string related_to_body; switch(message->type) { case MessageType::TEXT: { if(!message->replaces_event_id.empty() && strncmp(message->body.c_str(), " * ", 3) == 0) - related_to_body = message->body.substr(3); + related_to_body = remove_reply_formatting(message->body.substr(3)); else - related_to_body = message->body; + related_to_body = remove_reply_formatting(message->body); break; } case MessageType::IMAGE: -- cgit v1.2.3