summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authortrilene <trilene@runbox.com>2021-01-01 08:46:08 -0500
committerNicolas Werner <nicolas.werner@hotmail.de>2021-01-07 14:04:54 +0100
commit9bbade37dec0ba98be0e9b20f7a6f45cff59a9b0 (patch)
tree94983d962122f0cdd594d8156ed51b9fe90ebb39 /src
parentFix Qml control colors (diff)
downloadnheko-9bbade37dec0ba98be0e9b20f7a6f45cff59a9b0.tar.xz
Fix call answered on another device
Diffstat (limited to 'src')
-rw-r--r--src/CallManager.cpp13
-rw-r--r--src/timeline/TimelineModel.cpp7
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))