events: Fix quoting of multiline fallback messages

Previously, a '> ' was prepended only to the first line of the quoted
message.
This commit is contained in:
ftilde 2021-09-11 23:31:15 +02:00 committed by GitHub
parent 09acfb1b0b
commit a875f39648
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -978,6 +978,7 @@ fn get_plain_quote_fallback(original_message: &MessageEvent) -> String {
format!("> <{:?}> {}", original_message.sender, content.body) format!("> <{:?}> {}", original_message.sender, content.body)
} }
} }
.replace('\n', "\n> ")
} }
#[allow(clippy::nonstandard_macro_braces)] #[allow(clippy::nonstandard_macro_braces)]
@ -1190,11 +1191,13 @@ fn formatted_or_plain_body<'a>(formatted: &'a Option<FormattedBody>, body: &'a s
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use std::convert::TryFrom;
use matches::assert_matches; use matches::assert_matches;
use ruma_identifiers::event_id; use ruma_identifiers::{event_id, EventId, RoomId, UserId};
use serde_json::{from_value as from_json_value, json}; use serde_json::{from_value as from_json_value, json};
use super::{InReplyTo, MessageEventContent, MessageType, Relation}; use super::{InReplyTo, MessageEvent, MessageEventContent, MessageType, Relation};
#[test] #[test]
fn deserialize_reply() { fn deserialize_reply() {
@ -1218,4 +1221,20 @@ mod tests {
} if event_id == ev_id } if event_id == ev_id
); );
} }
#[test]
fn plain_quote_fallback_multiline() {
let sender = UserId::try_from("@alice:example.com").unwrap();
assert_eq!(
super::get_plain_quote_fallback(&MessageEvent {
content: MessageEventContent::text_plain("multi\nline"),
event_id: EventId::new(sender.server_name()),
sender,
origin_server_ts: ruma_common::MilliSecondsSinceUnixEpoch::now(),
room_id: RoomId::try_from("!n8f893n9:example.com").unwrap(),
unsigned: crate::Unsigned::new(),
}),
"> <@alice:example.com> multi\n> line"
);
}
} }