Skip to content

Commit ccbf59c

Browse files
committed
show all call state in the same info-message
1 parent c000c07 commit ccbf59c

File tree

2 files changed

+21
-16
lines changed

2 files changed

+21
-16
lines changed

src/calls.rs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use crate::mimeparser::{MimeMessage, SystemMessage};
1313
use crate::param::Param;
1414
use crate::sync::SyncData;
1515
use crate::tools::time;
16-
use anyhow::{anyhow, ensure, Result};
16+
use anyhow::{ensure, Result};
1717
use std::time::Duration;
1818
use tokio::task;
1919
use tokio::time::sleep;
@@ -188,7 +188,7 @@ impl Context {
188188
}
189189
}
190190
SystemMessage::CallAccepted => {
191-
let call = self.load_call_by_child_id(call_or_child_id).await?;
191+
let call = self.load_call_by_root_id(call_or_child_id).await?;
192192
self.emit_msgs_changed(call.msg.chat_id, call_or_child_id);
193193
if call.incoming {
194194
self.emit_event(EventType::IncomingCallAccepted {
@@ -202,7 +202,7 @@ impl Context {
202202
}
203203
}
204204
SystemMessage::CallEnded => {
205-
let call = self.load_call_by_child_id(call_or_child_id).await?;
205+
let call = self.load_call_by_root_id(call_or_child_id).await?;
206206
self.emit_msgs_changed(call.msg.chat_id, call_or_child_id);
207207
self.emit_event(EventType::CallEnded {
208208
msg_id: call.msg.id,
@@ -228,15 +228,6 @@ impl Context {
228228
self.load_call_by_message(call)
229229
}
230230

231-
async fn load_call_by_child_id(&self, child_id: MsgId) -> Result<CallInfo> {
232-
let child = Message::load_from_db(self, child_id).await?;
233-
if let Some(call) = child.parent(self).await? {
234-
self.load_call_by_message(call)
235-
} else {
236-
Err(anyhow!("Call parent missing"))
237-
}
238-
}
239-
240231
fn load_call_by_message(&self, call: Message) -> Result<CallInfo> {
241232
ensure!(
242233
call.get_info_type() == SystemMessage::IncomingCall

src/receive_imf.rs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -969,10 +969,7 @@ pub(crate) async fn receive_imf_inner(
969969
}
970970
}
971971

972-
if mime_parser.is_system_message == SystemMessage::IncomingCall
973-
|| mime_parser.is_system_message == SystemMessage::CallAccepted
974-
|| mime_parser.is_system_message == SystemMessage::CallEnded
975-
{
972+
if mime_parser.is_system_message == SystemMessage::IncomingCall {
976973
context.handle_call_msg(&mime_parser, insert_msg_id).await?;
977974
} else if received_msg.hidden {
978975
// No need to emit an event about the changed message
@@ -1945,6 +1942,23 @@ async fn add_parts(
19451942

19461943
handle_edit_delete(context, mime_parser, from_id).await?;
19471944

1945+
if mime_parser.is_system_message == SystemMessage::CallAccepted
1946+
|| mime_parser.is_system_message == SystemMessage::CallEnded
1947+
{
1948+
// TODO: chat_id = DC_CHAT_ID_TRASH;
1949+
if let Some(field) = mime_parser.get_header(HeaderDef::InReplyTo) {
1950+
if let Some(call) =
1951+
message::get_by_rfc724_mids(context, &parse_message_ids(field)).await?
1952+
{
1953+
context.handle_call_msg(mime_parser, call.get_id()).await?;
1954+
} else {
1955+
warn!(context, "Call: Cannot load parent.")
1956+
}
1957+
} else {
1958+
warn!(context, "Call: Not a reply.")
1959+
}
1960+
}
1961+
19481962
let is_reaction = mime_parser.parts.iter().any(|part| part.is_reaction);
19491963
let hidden = is_reaction;
19501964
let mut parts = mime_parser.parts.iter().peekable();

0 commit comments

Comments
 (0)