Skip to content

Commit fb0dc5f

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

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
@@ -626,10 +626,7 @@ pub(crate) async fn receive_imf_inner(
626626
}
627627
}
628628

629-
if mime_parser.is_system_message == SystemMessage::IncomingCall
630-
|| mime_parser.is_system_message == SystemMessage::CallAccepted
631-
|| mime_parser.is_system_message == SystemMessage::CallEnded
632-
{
629+
if mime_parser.is_system_message == SystemMessage::IncomingCall {
633630
context.handle_call_msg(&mime_parser, insert_msg_id).await?;
634631
} else if received_msg.hidden {
635632
// No need to emit an event about the changed message
@@ -1495,6 +1492,21 @@ async fn add_parts(
14951492
if handle_edit_delete(context, mime_parser, from_id).await? {
14961493
chat_id = DC_CHAT_ID_TRASH;
14971494
info!(context, "Message edits/deletes existing message (TRASH).");
1495+
} else if mime_parser.is_system_message == SystemMessage::CallAccepted
1496+
|| mime_parser.is_system_message == SystemMessage::CallEnded
1497+
{
1498+
// TODO: chat_id = DC_CHAT_ID_TRASH;
1499+
if let Some(field) = mime_parser.get_header(HeaderDef::InReplyTo) {
1500+
if let Some(call) =
1501+
message::get_by_rfc724_mids(context, &parse_message_ids(field)).await?
1502+
{
1503+
context.handle_call_msg(mime_parser, call.get_id()).await?;
1504+
} else {
1505+
warn!(context, "Call: Cannot load parent.")
1506+
}
1507+
} else {
1508+
warn!(context, "Call: Not a reply.")
1509+
}
14981510
}
14991511

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

0 commit comments

Comments
 (0)