Add Room Verification Messages

This commit is contained in:
CH Chethan Reddy 2020-07-29 03:25:47 +05:30
parent 1fcd768f88
commit 3635c185e9
9 changed files with 245 additions and 49 deletions

View file

@ -1,7 +1,9 @@
#include "DeviceVerificationFlow.h"
#include "Cache.h"
#include "ChatPage.h"
#include "Logging.h"
#include "timeline/TimelineModel.h"
#include <QDateTime>
#include <QTimer>
@ -12,12 +14,14 @@ static constexpr int TIMEOUT = 2 * 60 * 1000; // 2 minutes
namespace msgs = mtx::events::msg;
DeviceVerificationFlow::DeviceVerificationFlow(QObject *, DeviceVerificationFlow::Type)
DeviceVerificationFlow::DeviceVerificationFlow(QObject *, DeviceVerificationFlow::Type flow_type)
: type(flow_type)
{
timeout = new QTimer(this);
timeout->setSingleShot(true);
this->sas = olm::client()->sas_init();
this->isMacVerified = false;
connect(timeout, &QTimer::timeout, this, [this]() {
emit timedout();
this->cancelVerification(DeviceVerificationFlow::Error::Timeout);
@ -267,6 +271,12 @@ DeviceVerificationFlow::getMethod()
return this->method;
}
DeviceVerificationFlow::Type
DeviceVerificationFlow::getType()
{
return this->type;
}
bool
DeviceVerificationFlow::getSender()
{
@ -279,6 +289,12 @@ DeviceVerificationFlow::getSasList()
return this->sasList;
}
void
DeviceVerificationFlow::setModel(TimelineModel *&model)
{
this->model_ = model;
}
void
DeviceVerificationFlow::setTransactionId(QString transaction_id_)
{
@ -318,6 +334,12 @@ DeviceVerificationFlow::setMethod(DeviceVerificationFlow::Method method_)
this->method = method_;
}
void
DeviceVerificationFlow::setType(Type type)
{
this->type = type;
}
void
DeviceVerificationFlow::setSender(bool sender_)
{
@ -328,6 +350,13 @@ DeviceVerificationFlow::setSender(bool sender_)
this->relation.in_reply_to.event_id = http::client()->generate_txn_id();
}
void
DeviceVerificationFlow::setEventId(std::string event_id)
{
this->relation.in_reply_to.event_id = event_id;
this->transaction_id = event_id;
}
//! accepts a verification
void
DeviceVerificationFlow::acceptVerificationRequest()
@ -361,8 +390,9 @@ DeviceVerificationFlow::acceptVerificationRequest()
err->matrix_error.error,
static_cast<int>(err->status_code));
});
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg) {
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg && model_.has_value()) {
req.relates_to = this->relation;
(model_.value())->sendMessage(req);
}
}
//! responds verification request
@ -389,8 +419,9 @@ DeviceVerificationFlow::sendVerificationReady()
err->matrix_error.error,
static_cast<int>(err->status_code));
});
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg) {
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg && model_.has_value()) {
req.relates_to = this->relation;
(model_.value())->sendMessage(req);
}
}
//! accepts a verification
@ -414,8 +445,9 @@ DeviceVerificationFlow::sendVerificationDone()
err->matrix_error.error,
static_cast<int>(err->status_code));
});
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg) {
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg && model_.has_value()) {
req.relates_to = this->relation;
(model_.value())->sendMessage(req);
}
}
//! starts the verification flow
@ -448,8 +480,9 @@ DeviceVerificationFlow::startVerificationRequest()
err->matrix_error.error,
static_cast<int>(err->status_code));
});
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg) {
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg && model_.has_value()) {
req.relates_to = this->relation;
(model_.value())->sendMessage(req);
}
}
//! sends a verification request
@ -481,8 +514,8 @@ DeviceVerificationFlow::sendVerificationRequest()
err->matrix_error.error,
static_cast<int>(err->status_code));
});
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg) {
std::cout << "lulz" << std::endl;
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg && model_.has_value()) {
(model_.value())->sendMessage(req);
}
}
//! cancels a verification flow
@ -531,8 +564,9 @@ DeviceVerificationFlow::cancelVerification(DeviceVerificationFlow::Error error_c
this->deleteLater();
});
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg) {
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg && model_.has_value()) {
req.relates_to = this->relation;
(model_.value())->sendMessage(req);
}
// TODO : Handle Blocking user better
@ -570,8 +604,9 @@ DeviceVerificationFlow::sendVerificationKey()
err->matrix_error.error,
static_cast<int>(err->status_code));
});
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg) {
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg && model_.has_value()) {
req.relates_to = this->relation;
(model_.value())->sendMessage(req);
}
}
//! sends the mac of the keys
@ -618,8 +653,9 @@ DeviceVerificationFlow::sendVerificationMac()
else
this->isMacVerified = true;
});
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg) {
} else if (this->type == DeviceVerificationFlow::Type::RoomMsg && model_.has_value()) {
req.relates_to = this->relation;
(model_.value())->sendMessage(req);
}
}
//! Completes the verification flow