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
This commit is contained in:
CH Chethan Reddy 2020-06-23 23:29:00 +05:30
parent ce013e67a6
commit d49ab15656
5 changed files with 26 additions and 27 deletions

View file

@ -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();

View file

@ -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;
}
}

View file

@ -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();
}

View file

@ -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),

View file

@ -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