Fix call answered on another device

pull/356/head
trilene 4 years ago committed by Nicolas Werner
parent 2984d71971
commit 9bbade37de
  1. 13
      src/CallManager.cpp
  2. 7
      src/timeline/TimelineModel.cpp

@ -351,12 +351,15 @@ CallManager::handleEvent(const RoomEvent<CallAnswer> &callAnswerEvent)
callAnswerEvent.content.call_id,
callAnswerEvent.sender);
if (!isOnCall() && callAnswerEvent.sender == utils::localUser().toStdString() &&
if (callAnswerEvent.sender == utils::localUser().toStdString() &&
callid_ == callAnswerEvent.content.call_id) {
emit ChatPage::instance()->showNotification("Call answered on another device.");
stopRingtone();
haveCallInvite_ = false;
emit newInviteState();
if (!isOnCall()) {
emit ChatPage::instance()->showNotification(
"Call answered on another device.");
stopRingtone();
haveCallInvite_ = false;
emit newInviteState();
}
return;
}

@ -613,8 +613,13 @@ TimelineModel::addEvents(const mtx::responses::Timeline &timeline)
std::visit(
[this](auto &event) {
event.room_id = room_id_.toStdString();
if (event.sender != http::client()->user_id().to_string())
if constexpr (std::is_same_v<std::decay_t<decltype(event)>,
RoomEvent<msg::CallAnswer>>)
emit newCallEvent(event);
else {
if (event.sender != http::client()->user_id().to_string())
emit newCallEvent(event);
}
},
e);
else if (std::holds_alternative<StateEvent<state::Avatar>>(e))

Loading…
Cancel
Save