summary refs log tree commit diff
path: root/src/timeline/TimelineViewManager.cpp
diff options
context:
space:
mode:
authorCH Chethan Reddy <40890937+Chethan2k1@users.noreply.github.com>2020-06-20 17:50:43 +0530
committerCH Chethan Reddy <40890937+Chethan2k1@users.noreply.github.com>2020-07-30 22:10:27 +0530
commit67367d0004abe54445c9c6ca354c787fc0af8a79 (patch)
tree851066e9345ed9effdfc60b25a13d940e0a5704f /src/timeline/TimelineViewManager.cpp
parentAdd DeviceVerificationList to keep track of all flows and Popup on (diff)
downloadnheko-67367d0004abe54445c9c6ca354c787fc0af8a79.tar.xz
Shared secret with decimal and emoji works!
Diffstat (limited to 'src/timeline/TimelineViewManager.cpp')
-rw-r--r--src/timeline/TimelineViewManager.cpp64
1 files changed, 38 insertions, 26 deletions
diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp
index 22fe4d6d..aaefaed4 100644
--- a/src/timeline/TimelineViewManager.cpp
+++ b/src/timeline/TimelineViewManager.cpp
@@ -170,32 +170,44 @@ TimelineViewManager::TimelineViewManager(QSharedPointer<UserSettings> userSettin
                 &ChatPage::decryptSidebarChanged,
                 this,
                 &TimelineViewManager::updateEncryptedDescriptions);
-        connect(dynamic_cast<ChatPage *>(parent),
-                &ChatPage::recievedDeviceVerificationRequest,
-                this,
-                [this](const mtx::events::collections::DeviceEvents &message) {
-                        auto msg =
-                          std::get<mtx::events::DeviceEvent<msgs::KeyVerificationRequest>>(message);
-                        QString tranID   = QString::fromStdString(msg.content.transaction_id);
-                        QString deviceId = QString::fromStdString(msg.content.from_device);
-                        QString userId   = QString::fromStdString(msg.sender);
-                        if (!(this->dvList->exist(tranID))) {
-                                emit newDeviceVerificationRequest(tranID, userId, deviceId);
-                        }
-                });
-        connect(dynamic_cast<ChatPage *>(parent),
-                &ChatPage::recievedDeviceVerificationStart,
-                this,
-                [this](const mtx::events::collections::DeviceEvents &message) {
-                        auto msg =
-                          std::get<mtx::events::DeviceEvent<msgs::KeyVerificationStart>>(message);
-                        QString tranID   = QString::fromStdString(msg.content.transaction_id);
-                        QString deviceId = QString::fromStdString(msg.content.from_device);
-                        QString userId   = QString::fromStdString(msg.sender);
-                        if (!(this->dvList->exist(tranID))) {
-                                emit newDeviceVerificationRequest(tranID, userId, deviceId);
-                        }
-                });
+        connect(
+          dynamic_cast<ChatPage *>(parent),
+          &ChatPage::recievedDeviceVerificationRequest,
+          this,
+          [this](const mtx::events::collections::DeviceEvents &message) {
+                  auto msg =
+                    std::get<mtx::events::DeviceEvent<msgs::KeyVerificationRequest>>(message);
+                  auto flow = new DeviceVerificationFlow(this);
+                  if (!(this->dvList->exist(QString::fromStdString(msg.content.transaction_id)))) {
+                          if (std::find(msg.content.methods.begin(),
+                                        msg.content.methods.end(),
+                                        mtx::events::msg::VerificationMethods::SASv1) !=
+                              msg.content.methods.end()) {
+                                  emit newDeviceVerificationRequest(
+                                    std::move(flow),
+                                    QString::fromStdString(msg.content.transaction_id),
+                                    QString::fromStdString(msg.sender),
+                                    QString::fromStdString(msg.content.from_device));
+                          }
+                  }
+          });
+        connect(
+          dynamic_cast<ChatPage *>(parent),
+          &ChatPage::recievedDeviceVerificationStart,
+          this,
+          [this](const mtx::events::collections::DeviceEvents &message) {
+                  auto msg =
+                    std::get<mtx::events::DeviceEvent<msgs::KeyVerificationStart>>(message);
+                  auto flow            = new DeviceVerificationFlow(this);
+                  flow->canonical_json = nlohmann::json(msg.content);
+                  if (!(this->dvList->exist(QString::fromStdString(msg.content.transaction_id)))) {
+                          emit newDeviceVerificationRequest(
+                            std::move(flow),
+                            QString::fromStdString(msg.content.transaction_id),
+                            QString::fromStdString(msg.sender),
+                            QString::fromStdString(msg.content.from_device));
+                  }
+          });
 }
 
 void