Merge remote-tracking branch 'upstream/master' into device-verification

This commit is contained in:
CH Chethan Reddy 2020-08-30 22:27:14 +05:30
commit b174bd9380
54 changed files with 6706 additions and 223 deletions

View file

@ -1,5 +1,7 @@
#include "EventAccessors.h"
#include <algorithm>
#include <cctype>
#include <type_traits>
namespace {
@ -72,6 +74,29 @@ struct EventRoomTopic
}
};
struct CallType
{
template<class T>
std::string operator()(const T &e)
{
if constexpr (std::is_same_v<mtx::events::RoomEvent<mtx::events::msg::CallInvite>,
T>) {
const char video[] = "m=video";
const std::string &sdp = e.content.sdp;
return std::search(sdp.cbegin(),
sdp.cend(),
std::cbegin(video),
std::cend(video) - 1,
[](unsigned char c1, unsigned char c2) {
return std::tolower(c1) == std::tolower(c2);
}) != sdp.cend()
? "video"
: "voice";
}
return std::string();
}
};
struct EventBody
{
template<class C>
@ -353,6 +378,12 @@ mtx::accessors::room_topic(const mtx::events::collections::TimelineEvents &event
return std::visit(EventRoomTopic{}, event);
}
std::string
mtx::accessors::call_type(const mtx::events::collections::TimelineEvents &event)
{
return std::visit(CallType{}, event);
}
std::string
mtx::accessors::body(const mtx::events::collections::TimelineEvents &event)
{