events: Move CalCapabilities behind feature unstable-msc2747

This commit is contained in:
Kévin Commaille 2023-05-24 17:02:10 +02:00 committed by Kévin Commaille
parent 77454b70e9
commit 6df78e8aee
6 changed files with 57 additions and 19 deletions

View File

@ -32,6 +32,7 @@ unstable-msc1767 = []
unstable-msc2448 = []
unstable-msc2677 = []
unstable-msc2746 = []
unstable-msc2747 = []
unstable-msc2870 = []
unstable-msc3245 = ["unstable-msc3246"]
unstable-msc3246 = ["unstable-msc3927"]

View File

@ -107,7 +107,7 @@ impl OfferSessionDescription {
}
/// The capabilities of a client in a VoIP call.
#[cfg(feature = "unstable-msc2746")]
#[cfg(feature = "unstable-msc2747")]
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
pub struct CallCapabilities {
@ -120,7 +120,7 @@ pub struct CallCapabilities {
pub dtmf: bool,
}
#[cfg(feature = "unstable-msc2746")]
#[cfg(feature = "unstable-msc2747")]
impl CallCapabilities {
/// Creates a default `CallCapabilities`.
pub fn new() -> Self {

View File

@ -6,7 +6,7 @@ use ruma_macros::EventContent;
use serde::{Deserialize, Serialize};
use super::AnswerSessionDescription;
#[cfg(feature = "unstable-msc2746")]
#[cfg(feature = "unstable-msc2747")]
use super::CallCapabilities;
use crate::{OwnedVoipId, VoipVersionId};
@ -31,8 +31,8 @@ pub struct CallAnswerEventContent {
/// The version of the VoIP specification this messages adheres to.
pub version: VoipVersionId,
#[cfg(feature = "unstable-msc2746")]
/// **Added in VoIP version 1.** The VoIP capabilities of the client.
#[cfg(feature = "unstable-msc2747")]
/// The VoIP capabilities of the client.
#[serde(default, skip_serializing_if = "CallCapabilities::is_default")]
pub capabilities: CallCapabilities,
}
@ -50,7 +50,7 @@ impl CallAnswerEventContent {
#[cfg(feature = "unstable-msc2746")]
party_id: None,
version,
#[cfg(feature = "unstable-msc2746")]
#[cfg(feature = "unstable-msc2747")]
capabilities: Default::default(),
}
}
@ -68,8 +68,14 @@ impl CallAnswerEventContent {
answer: AnswerSessionDescription,
call_id: OwnedVoipId,
party_id: OwnedVoipId,
capabilities: CallCapabilities,
) -> Self {
Self { answer, call_id, party_id: Some(party_id), version: VoipVersionId::V1, capabilities }
Self {
answer,
call_id,
party_id: Some(party_id),
version: VoipVersionId::V1,
#[cfg(feature = "unstable-msc2747")]
capabilities: Default::default(),
}
}
}

View File

@ -6,7 +6,7 @@ use js_int::UInt;
use ruma_macros::EventContent;
use serde::{Deserialize, Serialize};
#[cfg(feature = "unstable-msc2746")]
#[cfg(feature = "unstable-msc2747")]
use super::CallCapabilities;
use super::OfferSessionDescription;
#[cfg(feature = "unstable-msc2746")]
@ -40,8 +40,8 @@ pub struct CallInviteEventContent {
/// The version of the VoIP specification this messages adheres to.
pub version: VoipVersionId,
#[cfg(feature = "unstable-msc2746")]
/// **Added in VoIP version 1.** The VoIP capabilities of the client.
#[cfg(feature = "unstable-msc2747")]
/// The VoIP capabilities of the client.
#[serde(default, skip_serializing_if = "CallCapabilities::is_default")]
pub capabilities: CallCapabilities,
@ -71,7 +71,7 @@ impl CallInviteEventContent {
lifetime,
offer,
version,
#[cfg(feature = "unstable-msc2746")]
#[cfg(feature = "unstable-msc2747")]
capabilities: Default::default(),
#[cfg(feature = "unstable-msc2746")]
invitee: None,
@ -92,7 +92,6 @@ impl CallInviteEventContent {
party_id: OwnedVoipId,
lifetime: UInt,
offer: OfferSessionDescription,
capabilities: CallCapabilities,
) -> Self {
Self {
call_id,
@ -100,7 +99,8 @@ impl CallInviteEventContent {
lifetime,
offer,
version: VoipVersionId::V1,
capabilities,
#[cfg(feature = "unstable-msc2747")]
capabilities: Default::default(),
invitee: None,
}
}

View File

@ -188,8 +188,11 @@ fn hangup_content_serialization() {
#[cfg(feature = "unstable-msc2746")]
mod msc2746 {
use assert_matches::assert_matches;
#[cfg(feature = "unstable-msc2747")]
use assign::assign;
use js_int::uint;
#[cfg(feature = "unstable-msc2747")]
use ruma_common::events::call::CallCapabilities;
use ruma_common::{
events::{
call::{
@ -200,8 +203,8 @@ mod msc2746 {
negotiate::CallNegotiateEventContent,
reject::CallRejectEventContent,
select_answer::CallSelectAnswerEventContent,
AnswerSessionDescription, CallCapabilities, OfferSessionDescription,
SessionDescription, SessionDescriptionType,
AnswerSessionDescription, OfferSessionDescription, SessionDescription,
SessionDescriptionType,
},
AnyMessageLikeEvent, MessageLikeEvent,
},
@ -216,7 +219,6 @@ mod msc2746 {
"9876".into(),
uint!(60000),
OfferSessionDescription::new("not a real sdp".to_owned()),
CallCapabilities::new(),
);
assert_eq!(
@ -265,7 +267,6 @@ mod msc2746 {
assert_eq!(content.lifetime, uint!(60000));
assert_eq!(content.version, VoipVersionId::V1);
assert_eq!(content.offer.sdp, "not a real sdp");
assert!(!content.capabilities.dtmf);
}
#[test]
@ -274,7 +275,34 @@ mod msc2746 {
AnswerSessionDescription::new("not a real sdp".to_owned()),
"abcdef".into(),
"9876".into(),
assign!(CallCapabilities::new(), { dtmf: true }),
);
assert_eq!(
to_json_value(&content).unwrap(),
json!({
"call_id": "abcdef",
"party_id": "9876",
"version": "1",
"answer": {
"type": "answer",
"sdp": "not a real sdp",
},
})
);
}
#[cfg(feature = "unstable-msc2747")]
#[test]
fn answer_event_capabilities_serialization() {
let content = assign!(
CallAnswerEventContent::version_1(
AnswerSessionDescription::new("not a real sdp".to_owned()),
"abcdef".into(),
"9876".into()
),
{
capabilities: assign!(CallCapabilities::new(), { dtmf: true }),
}
);
assert_eq!(
@ -326,6 +354,7 @@ mod msc2746 {
assert_eq!(content.party_id.unwrap(), "9876");
assert_eq!(content.version.as_ref(), "org.matrix.1b");
assert_eq!(content.answer.sdp, "not a real sdp");
#[cfg(feature = "unstable-msc2747")]
assert!(content.capabilities.dtmf);
}

View File

@ -162,6 +162,7 @@ unstable-msc2677 = [
"ruma-common/unstable-msc2677",
]
unstable-msc2746 = ["ruma-common/unstable-msc2746"]
unstable-msc2747 = ["ruma-common/unstable-msc2747"]
unstable-msc2870 = ["ruma-common/unstable-msc2870"]
unstable-msc2965 = ["ruma-client-api?/unstable-msc2965"]
unstable-msc2967 = ["ruma-client-api?/unstable-msc2967"]
@ -209,6 +210,7 @@ __ci = [
"unstable-msc2666",
"unstable-msc2677",
"unstable-msc2746",
"unstable-msc2747",
"unstable-msc2870",
"unstable-msc2965",
"unstable-msc2967",