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-msc2448 = []
unstable-msc2677 = [] unstable-msc2677 = []
unstable-msc2746 = [] unstable-msc2746 = []
unstable-msc2747 = []
unstable-msc2870 = [] unstable-msc2870 = []
unstable-msc3245 = ["unstable-msc3246"] unstable-msc3245 = ["unstable-msc3246"]
unstable-msc3246 = ["unstable-msc3927"] unstable-msc3246 = ["unstable-msc3927"]

View File

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

View File

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

View File

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

View File

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