Source

Target

Commits (1)
Showing with 20 additions and 1 deletion
......@@ -1730,6 +1730,10 @@ int linphone_friend_get_capabilities(const LinphoneFriend *lf) {
return lf->capabilities;
}
bool_t linphone_friend_has_capability(const LinphoneFriend *lf, const LinphoneFriendCapability capability) {
return lf->capabilities & capability;
}
namespace {
const std::unordered_map<std::string, LinphoneFriendCapability> StringToCapability{
{ "groupchat", LinphoneFriendCapabilityGroupChat },
......
......@@ -339,10 +339,19 @@ LINPHONE_PUBLIC void linphone_friend_save(LinphoneFriend *fr, LinphoneCore *lc);
/**
* Returns the capabilities associated to this friend
* @param[in] fr #LinphoneFriend object
* @param[in] lf #LinphoneFriend object
* @return an int representing the capabilities of the friend
*/
LINPHONE_PUBLIC int linphone_friend_get_capabilities(const LinphoneFriend *lf);
/**
* Returns whether or not a friend has a capbility
* @param[in] lf #LinphoneFriend object
* @param[in] capability #LinphoneFriendCapability object
* @return whether or not a friend has a capbility
*/
LINPHONE_PUBLIC bool_t linphone_friend_has_capability(const LinphoneFriend *lf, const LinphoneFriendCapability capability);
/**
* @}
*/
......
......@@ -1901,13 +1901,19 @@ static void notify_friend_capabilities(void) {
BC_ASSERT_TRUE(wait_for_list(lcs, &marie->stat.number_of_NotifyPresenceReceived, 1, 5000));
BC_ASSERT_TRUE(linphone_friend_get_capabilities(paulineFriend) & LinphoneFriendCapabilityGroupChat);
BC_ASSERT_TRUE(linphone_friend_has_capability(paulineFriend, LinphoneFriendCapabilityGroupChat));
BC_ASSERT_TRUE(linphone_friend_get_capabilities(paulineFriend) & LinphoneFriendCapabilityLimeX3dh);
BC_ASSERT_TRUE(linphone_friend_has_capability(paulineFriend, LinphoneFriendCapabilityLimeX3dh));
BC_ASSERT_TRUE(linphone_friend_get_capabilities(laureFriend) & LinphoneFriendCapabilityGroupChat);
BC_ASSERT_TRUE(linphone_friend_has_capability(laureFriend, LinphoneFriendCapabilityGroupChat));
BC_ASSERT_FALSE(linphone_friend_get_capabilities(laureFriend) & LinphoneFriendCapabilityLimeX3dh);
BC_ASSERT_FALSE(linphone_friend_has_capability(laureFriend, LinphoneFriendCapabilityLimeX3dh));
BC_ASSERT_TRUE(linphone_friend_get_capabilities(chloeFriend) & LinphoneFriendCapabilityGroupChat);
BC_ASSERT_TRUE(linphone_friend_has_capability(chloeFriend, LinphoneFriendCapabilityGroupChat));
BC_ASSERT_TRUE(linphone_friend_get_capabilities(chloeFriend) & LinphoneFriendCapabilityLimeX3dh);
BC_ASSERT_TRUE(linphone_friend_has_capability(chloeFriend, LinphoneFriendCapabilityLimeX3dh));
linphone_friend_unref(paulineFriend);
linphone_friend_unref(laureFriend);
......