Some Improvements

- DeviceVerificationList change to LinkedList to improve time
    complexity while deleting
    - Downgrade the flow to not use key.verification.done and
    key.verification.ready
master
CH Chethan Reddy 4 years ago
parent ce013e67a6
commit d49ab15656
  1. 1
      resources/qml/TimelineView.qml
  2. 26
      resources/qml/device-verification/DeviceVerification.qml
  3. 6
      src/DeviceVerificationFlow.cpp
  4. 17
      src/timeline/TimelineViewManager.cpp
  5. 3
      src/timeline/TimelineViewManager.h

@ -110,6 +110,7 @@ Page {
flow.sender = false;
flow.deviceId = deviceId;
flow.tranId = transactionId;
deviceVerificationList.add(flow.tranId);
var dialog = deviceVerificationDialog.createObject(timelineRoot,
{flow: flow,sender: false});
dialog.show();

@ -30,7 +30,11 @@ ApplicationWindow {
implicitHeight: currentItem.implicitHeight
}
onClosing: stack.replace(newVerificationRequest)
onClosing: {
flow.cancelVerification();
deviceVerificationList.remove(flow.tranId);
delete flow;
}
property var flow
Connections {
@ -78,7 +82,7 @@ ApplicationWindow {
onClicked: {
dialog.close();
flow.cancelVerification();
// deviceVerificationList.remove(flow.tranId);
deviceVerificationList.remove(flow.tranId);
delete flow;
}
}
@ -135,7 +139,7 @@ ApplicationWindow {
onClicked: {
dialog.close();
flow.cancelVerification();
// deviceVerificationList.remove(flow.tranId);
deviceVerificationList.remove(flow.tranId);
delete flow;
}
}
@ -179,7 +183,7 @@ ApplicationWindow {
onClicked: {
dialog.close();
flow.cancelVerification();
// deviceVerificationList.remove(flow.tranId);
deviceVerificationList.remove(flow.tranId);
delete flow;
}
}
@ -230,7 +234,7 @@ ApplicationWindow {
onClicked: {
dialog.close();
flow.cancelVerification();
// deviceVerificationList.remove(flow.tranId);
deviceVerificationList.remove(flow.tranId);
delete flow;
}
}
@ -369,7 +373,7 @@ ApplicationWindow {
onClicked: {
dialog.close();
flow.cancelVerification();
// deviceVerificationList.remove(flow.tranId);
deviceVerificationList.remove(flow.tranId);
delete flow;
}
}
@ -413,7 +417,7 @@ ApplicationWindow {
onClicked: {
dialog.close();
flow.cancelVerification();
// deviceVerificationList.remove(flow.tranId);
deviceVerificationList.remove(flow.tranId);
delete flow;
}
}
@ -451,7 +455,7 @@ ApplicationWindow {
text: "Close"
onClicked: {
dialog.close()
// deviceVerificationList.remove(flow.tranId);
deviceVerificationList.remove(flow.tranId);
delete flow;
}
}
@ -485,8 +489,8 @@ ApplicationWindow {
Layout.alignment: Qt.AlignRight
text: "Close"
onClicked: {
dialog.close()
// deviceVerificationList.remove(flow.tranId);
dialog.close();
deviceVerificationList.remove(flow.tranId);
delete flow;
}
}
@ -521,7 +525,7 @@ ApplicationWindow {
text: "Close"
onClicked: {
dialog.close()
// deviceVerificationList.remove(flow.tranId);
deviceVerificationList.remove(flow.tranId);
delete flow;
}
}

@ -1,7 +1,6 @@
#include "DeviceVerificationFlow.h"
#include "ChatPage.h"
#include "Logging.h"
#include "Utils.h"
#include <QDateTime>
#include <QTimer>
@ -162,7 +161,10 @@ DeviceVerificationFlow::DeviceVerificationFlow(QObject *)
}
if (msg.content.keys ==
this->sas->calculate_mac(key_string, info + "KEY_IDS")) {
this->sendVerificationDone();
// uncomment this in future to be compatible with the
// MSC2366 this->sendVerificationDone(); and remoeve the
// below line
emit this->deviceVerified();
} else {
this->cancelVerification();
}

@ -26,26 +26,17 @@ namespace msgs = mtx::events::msg;
void
DeviceVerificationList::add(QString tran_id)
{
this->dv_list.push_back(tran_id);
this->dv_list.append(tran_id);
}
void
DeviceVerificationList::remove(QString tran_id)
{
for (QVector<QString>::iterator it = 0; it != (this->dv_list).end(); ++it) {
if (*it == tran_id) {
this->dv_list.erase(it);
break;
}
}
this->dv_list.removeOne(tran_id);
}
bool
DeviceVerificationList::exist(QString tran_id)
{
for (int i = 0; i < (this->dv_list).size(); ++i) {
if (dv_list[i] == tran_id)
return true;
}
return false;
return this->dv_list.contains(tran_id);
}
void
@ -183,7 +174,7 @@ TimelineViewManager::TimelineViewManager(QSharedPointer<UserSettings> userSettin
msg.content.methods.end(),
mtx::events::msg::VerificationMethods::SASv1) !=
msg.content.methods.end()) {
flow->sendVerificationReady();
// flow->sendVerificationReady();
emit newDeviceVerificationRequest(
std::move(flow),
QString::fromStdString(msg.content.transaction_id),

@ -1,6 +1,7 @@
#pragma once
#include <QHash>
#include <QLinkedList>
#include <QQuickView>
#include <QQuickWidget>
#include <QSharedPointer>
@ -31,7 +32,7 @@ public:
Q_INVOKABLE bool exist(QString tran_id);
private:
QVector<QString> dv_list;
QLinkedList<QString> dv_list;
};
class TimelineViewManager : public QObject

Loading…
Cancel
Save