mirror of
https://github.com/chatmail/core.git
synced 2026-05-06 16:36:59 +03:00
fix: forward calls as text messages
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
use super::*;
|
use super::*;
|
||||||
|
use crate::chat::forward_msgs;
|
||||||
use crate::config::Config;
|
use crate::config::Config;
|
||||||
use crate::test_utils::{TestContext, TestContextManager};
|
use crate::test_utils::{TestContext, TestContextManager};
|
||||||
|
|
||||||
@@ -498,3 +499,33 @@ async fn test_sdp_has_video() {
|
|||||||
assert_eq!(sdp_has_video(PLACE_INFO).unwrap(), false);
|
assert_eq!(sdp_has_video(PLACE_INFO).unwrap(), false);
|
||||||
assert_eq!(sdp_has_video(PLACE_INFO_VIDEO).unwrap(), true);
|
assert_eq!(sdp_has_video(PLACE_INFO_VIDEO).unwrap(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Tests that calls are forwarded as text messages.
|
||||||
|
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||||
|
async fn test_forward_call() -> Result<()> {
|
||||||
|
let mut tcm = TestContextManager::new();
|
||||||
|
let alice = &tcm.alice().await;
|
||||||
|
let bob = &tcm.bob().await;
|
||||||
|
let charlie = &tcm.charlie().await;
|
||||||
|
|
||||||
|
let alice_bob_chat = alice.create_chat(bob).await;
|
||||||
|
let alice_msg_id = alice
|
||||||
|
.place_outgoing_call(alice_bob_chat.id, PLACE_INFO.to_string())
|
||||||
|
.await
|
||||||
|
.context("Failed to place a call")?;
|
||||||
|
let alice_call = Message::load_from_db(alice, alice_msg_id).await?;
|
||||||
|
|
||||||
|
let _alice_sent_call = alice.pop_sent_msg().await;
|
||||||
|
assert_eq!(alice_call.viewtype, Viewtype::Call);
|
||||||
|
|
||||||
|
let alice_charlie_chat = alice.create_chat(charlie).await;
|
||||||
|
forward_msgs(alice, &[alice_call.id], alice_charlie_chat.id).await?;
|
||||||
|
let alice_forwarded_call = alice.pop_sent_msg().await;
|
||||||
|
let alice_forwarded_call_msg = alice_forwarded_call.load_from_db().await;
|
||||||
|
assert_eq!(alice_forwarded_call_msg.viewtype, Viewtype::Text);
|
||||||
|
|
||||||
|
let charlie_forwarded_call = charlie.recv_msg(&alice_forwarded_call).await;
|
||||||
|
assert_eq!(charlie_forwarded_call.viewtype, Viewtype::Text);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|||||||
@@ -4450,6 +4450,10 @@ pub async fn forward_msgs(context: &Context, msg_ids: &[MsgId], chat_id: ChatId)
|
|||||||
.set_int(Param::Forwarded, src_msg_id.to_u32() as i32);
|
.set_int(Param::Forwarded, src_msg_id.to_u32() as i32);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if msg.get_viewtype() == Viewtype::Call {
|
||||||
|
msg.viewtype = Viewtype::Text;
|
||||||
|
}
|
||||||
|
|
||||||
msg.param.remove(Param::GuaranteeE2ee);
|
msg.param.remove(Param::GuaranteeE2ee);
|
||||||
msg.param.remove(Param::ForcePlaintext);
|
msg.param.remove(Param::ForcePlaintext);
|
||||||
msg.param.remove(Param::Cmd);
|
msg.param.remove(Param::Cmd);
|
||||||
@@ -4459,6 +4463,8 @@ pub async fn forward_msgs(context: &Context, msg_ids: &[MsgId], chat_id: ChatId)
|
|||||||
msg.param.remove(Param::WebxdcSummary);
|
msg.param.remove(Param::WebxdcSummary);
|
||||||
msg.param.remove(Param::WebxdcSummaryTimestamp);
|
msg.param.remove(Param::WebxdcSummaryTimestamp);
|
||||||
msg.param.remove(Param::IsEdited);
|
msg.param.remove(Param::IsEdited);
|
||||||
|
msg.param.remove(Param::WebrtcRoom);
|
||||||
|
msg.param.remove(Param::WebrtcAccepted);
|
||||||
msg.in_reply_to = None;
|
msg.in_reply_to = None;
|
||||||
|
|
||||||
// do not leak data as group names; a default subject is generated by mimefactory
|
// do not leak data as group names; a default subject is generated by mimefactory
|
||||||
|
|||||||
Reference in New Issue
Block a user