mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-26 04:58:49 +03:00
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:
parent
ce013e67a6
commit
d49ab15656
5 changed files with 26 additions and 27 deletions
|
@ -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…
Reference in a new issue