Skip to content

Commit d5ec416

Browse files
committed
show all call state in the same info-message
1 parent 2370f02 commit d5ec416

File tree

2 files changed

+19
-16
lines changed

2 files changed

+19
-16
lines changed

src/calls.rs

+3-12
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

+16-4
Original file line numberDiff line numberDiff line change
@@ -624,10 +624,7 @@ pub(crate) async fn receive_imf_inner(
624624
}
625625
}
626626

627-
if mime_parser.is_system_message == SystemMessage::IncomingCall
628-
|| mime_parser.is_system_message == SystemMessage::CallAccepted
629-
|| mime_parser.is_system_message == SystemMessage::CallEnded
630-
{
627+
if mime_parser.is_system_message == SystemMessage::IncomingCall {
631628
context.handle_call_msg(&mime_parser, insert_msg_id).await?;
632629
} else if received_msg.hidden {
633630
// No need to emit an event about the changed message
@@ -1503,6 +1500,21 @@ async fn add_parts(
15031500
if handle_edit_delete(context, mime_parser, from_id).await? {
15041501
chat_id = DC_CHAT_ID_TRASH;
15051502
info!(context, "Message edits/deletes existing message (TRASH).");
1503+
} else if mime_parser.is_system_message == SystemMessage::CallAccepted
1504+
|| mime_parser.is_system_message == SystemMessage::CallEnded
1505+
{
1506+
// TODO: chat_id = DC_CHAT_ID_TRASH;
1507+
if let Some(field) = mime_parser.get_header(HeaderDef::InReplyTo) {
1508+
if let Some(call) =
1509+
message::get_by_rfc724_mids(context, &parse_message_ids(field)).await?
1510+
{
1511+
context.handle_call_msg(mime_parser, call.get_id()).await?;
1512+
} else {
1513+
warn!(context, "Call: Cannot load parent.")
1514+
}
1515+
} else {
1516+
warn!(context, "Call: Not a reply.")
1517+
}
15061518
}
15071519

15081520
let mut parts = mime_parser.parts.iter().peekable();

0 commit comments

Comments
 (0)