Fix call answered on another device

This commit is contained in:
trilene 2021-01-01 08:46:08 -05:00 committed by Nicolas Werner
parent 2984d71971
commit 9bbade37de
2 changed files with 14 additions and 6 deletions

View File

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

View File

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