diff options
author | trilene <trilene@runbox.com> | 2021-01-01 08:46:08 -0500 |
---|---|---|
committer | Nicolas Werner <nicolas.werner@hotmail.de> | 2021-01-07 14:04:54 +0100 |
commit | 9bbade37dec0ba98be0e9b20f7a6f45cff59a9b0 (patch) | |
tree | 94983d962122f0cdd594d8156ed51b9fe90ebb39 /src | |
parent | Fix Qml control colors (diff) | |
download | nheko-9bbade37dec0ba98be0e9b20f7a6f45cff59a9b0.tar.xz |
Fix call answered on another device
Diffstat (limited to 'src')
-rw-r--r-- | src/CallManager.cpp | 13 | ||||
-rw-r--r-- | src/timeline/TimelineModel.cpp | 7 |
2 files changed, 14 insertions, 6 deletions
diff --git a/src/CallManager.cpp b/src/CallManager.cpp index 9864b203..f725d49f 100644 --- a/src/CallManager.cpp +++ b/src/CallManager.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; } diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp index adef886d..2b5b5794 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp @@ -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)) |