Allow incoming messages to be seen by Empathy

MDNs don't work because the sender is not in a "real chat" yet- it's
coming from an unknown user - but we mark them as seen anyway.
This commit is contained in:
2020-05-18 21:15:56 +01:00
parent b511dd873b
commit 72947bc99d
5 changed files with 115 additions and 56 deletions

View File

@@ -1,4 +1,4 @@
use crate::padfoot::{var_i64, var_str, var_u32, VarArg};
use crate::padfoot::{convert_msg, VarArg};
use crate::telepathy;
use dbus::tree::MethodErr;
@@ -61,50 +61,7 @@ impl telepathy::ChannelInterfaceMessages for Channel {
if let Ok(msg) = dc::message::Message::load_from_db(&ctx, msg_id) {
println!(" A message: {:?}", msg);
match msg.get_state() {
MessageState::InFresh | MessageState::InNoticed => {
let mut parts = Vec::new();
let mut props = HashMap::new();
props.insert(
"message-token".to_string(),
var_str(format!("{}", msg_id.to_u32())),
);
props.insert("message-sent".to_string(), var_i64(msg.get_timestamp()));
props.insert(
"message-received".to_string(),
var_i64(msg.get_received_timestamp()),
);
props.insert("message-sender".to_string(), var_u32(msg.get_from_id()));
// props.insert("message-sender-id", var_str()); // This doesn't need to be sent
// props.insert("sender-nickname", var_str()); // Can we get away without this one?
props.insert("message-type".to_string(), var_u32(0)); // normal
// These relate to superseded messages
// props.insert("supersedes", var_str());
// props.insert("original-message-sent", var_i64());
// props.insert("original-message-received", var_i64());
props.insert("pending-message-id".to_string(), var_u32(msg_id.to_u32()));
parts.push(props);
// Don't need these
// props.insert("interface", var_str());
// props.insert("scrollback", var_vool());
// props.insert("silent", var_bool());
// props.insert("rescued", var_bool());
if let Some(text) = msg.get_text() {
let mut part = HashMap::new();
part.insert(
"content-type".to_string(),
var_str("text/plain".to_string()),
);
part.insert("content".to_string(), var_str(text));
parts.push(part);
}
out.push(parts);
}
MessageState::InFresh | MessageState::InNoticed => out.push(convert_msg(msg)),
_ => continue,
}
}