aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2020-10-01 12:16:14 +0200
committerdec05eba <dec05eba@protonmail.com>2020-10-01 12:16:14 +0200
commit925139ea3ba6634a267586db0e60af1ea60cdc6f (patch)
tree50e1c0dd5061642f3a7ce3ebece524eb24666c3f /src
parenta1ff5cb86eaa32e6e4ee194e87d8036c74be8dc9 (diff)
Matrix: fix replying broken formatting, including reply message in body
Diffstat (limited to 'src')
-rw-r--r--src/QuickMedia.cpp3
-rw-r--r--src/plugins/Matrix.cpp16
2 files changed, 15 insertions, 4 deletions
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: