Skip to content
Snippets Groups Projects
Commit b628f485 authored by Chethan2k1's avatar Chethan2k1 Committed by CH Chethan Reddy
Browse files

Tweak UI for device verification and Add more slots

parent f9c0f4dd
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,8 @@ import QtQuick.Window 2.3
import im.nheko 1.0
import "./device-verification"
ApplicationWindow{
property var user_data
property var colors: currentActivePalette
......@@ -20,7 +22,6 @@ ApplicationWindow{
id: userProfileList
userId: user_data.userId
onUserIdChanged : {
console.log(userId)
userProfileList.updateDeviceList()
}
onDeviceListUpdated : {
......@@ -84,15 +85,34 @@ ApplicationWindow{
delegate: RowLayout{
width: parent.width
Text{
Layout.fillWidth: true
color: colors.text
text: deviceID
ColumnLayout{
Text{
Layout.fillWidth: true
color: colors.text
Layout.alignment: Qt.AlignRight
text: deviceID
}
Text{
Layout.fillWidth: true
color:colors.text
Layout.alignment: Qt.AlignRight
text: displayName
}
Component {
id: deviceVerificationDialog
DeviceVerification {}
}
DeviceVerificationFlow {
id: deviceVerificationFlow
}
}
Text{
Layout.fillWidth: true
color:colors.text
text: displayName
Button{
text:"Verify"
onClicked: {
var dialog = deviceVerificationDialog.createObject(userProfileDialog,
{flow: deviceVerificationFlow,sender: true});
dialog.show();
}
}
}
}
......
......@@ -7,6 +7,7 @@ import Qt.labs.settings 1.0
import im.nheko 1.0
ApplicationWindow {
property bool sender: true
title: stack.currentItem.title
id: dialog
......@@ -24,7 +25,7 @@ ApplicationWindow {
width: stack.implicitWidth
StackView {
id: stack
initialItem: newVerificationRequest
initialItem: sender == true?newVerificationRequest:acceptNewVerificationRequest
implicitWidth: currentItem.implicitWidth
implicitHeight: currentItem.implicitHeight
}
......@@ -47,7 +48,7 @@ ApplicationWindow {
Component {
id: newVerificationRequest
Pane {
property string title: "Device Verification Request"
property string title: "Sending Device Verification Request"
ColumnLayout {
spacing: 16
Label {
......@@ -82,6 +83,42 @@ ApplicationWindow {
Button {
Layout.alignment: Qt.AlignRight
text: "Start verification"
onClicked: { stack.replace(awaitingVerificationRequestAccept); flow.sendVerificationRequest(); }
}
}
}
}
}
Component {
id: acceptNewVerificationRequest
Pane {
property string title: "Recieving Device Verification Request"
ColumnLayout {
spacing: 16
Label {
Layout.maximumWidth: 400
Layout.fillHeight: true
Layout.fillWidth: true
wrapMode: Text.Wrap
text: "The device was requested to be verified"
verticalAlignment: Text.AlignVCenter
}
RowLayout {
Button {
Layout.alignment: Qt.AlignLeft
text: "Deny"
onClicked: { dialog.close(); flow.cancelVerification(); }
}
Item {
Layout.fillWidth: true
}
Button {
Layout.alignment: Qt.AlignRight
text: "Accept"
onClicked: { stack.replace(awaitingVerificationRequestAccept); flow.acceptVerificationRequest(); }
}
}
......
#include "DeviceVerificationFlow.h"
#include <MatrixClient.h>
#include <QDateTime>
#include <QDebug> // only for debugging
#include <QTimer>
static constexpr int TIMEOUT = 2 * 60 * 1000; // 2 minutes
......@@ -15,17 +18,80 @@ DeviceVerificationFlow::DeviceVerificationFlow(QObject *)
timeout->start(TIMEOUT);
}
//! accepts a verification and starts the verification flow
std::string
DeviceVerificationFlow::generate_txn_id()
{
this->transaction_id = mtx::client::utils::random_token(32, false);
return this->transaction_id;
}
//! accepts a verification
void
DeviceVerificationFlow::acceptVerificationRequest()
{
mtx::requests::ToDeviceMessages<mtx::events::msg::KeyVerificationAccept> body;
mtx::events::msg::KeyVerificationAccept req;
req.transaction_id = this->transaction_id;
req.method = mtx::events::msg::VerificationMethods::SASv1;
req.key_agreement_protocol = "";
req.hash = "";
req.message_authentication_code = "";
// req.short_authentication_string = "";
req.commitment = "";
emit verificationRequestAccepted(rand() % 2 ? Emoji : Decimal);
// Yet to add send to_device message
}
//! starts the verification flow
void
DeviceVerificationFlow::startVerificationRequest()
{
mtx::requests::ToDeviceMessages<mtx::events::msg::KeyVerificationAccept> body;
mtx::events::msg::KeyVerificationAccept req;
// req.from_device = "";
req.transaction_id = this->transaction_id;
req.method = mtx::events::msg::VerificationMethods::SASv1;
req.key_agreement_protocol = {};
// req.hashes = {};
req.message_authentication_code = {};
// req.short_authentication_string = "";
// Yet to add send to_device message
}
//! sends a verification request
void
DeviceVerificationFlow::sendVerificationRequest()
{
QDateTime CurrentTime = QDateTime::currentDateTimeUtc();
mtx::requests::ToDeviceMessages<mtx::events::msg::KeyVerificationRequest> body;
mtx::events::msg::KeyVerificationRequest req;
req.from_device = "";
req.transaction_id = generate_txn_id();
req.methods.resize(1);
req.methods[0] = mtx::events::msg::VerificationMethods::SASv1;
req.timestamp = (uint64_t)CurrentTime.toTime_t();
// Yet to add send to_device message
}
//! cancels a verification flow
void
DeviceVerificationFlow::cancelVerification()
{
mtx::requests::ToDeviceMessages<mtx::events::msg::KeyVerificationCancel> body;
mtx::events::msg::KeyVerificationCancel req;
req.transaction_id = this->transaction_id;
req.reason = "";
req.code = "";
this->deleteLater();
// Yet to add send to_device message
}
//! Completes the verification flow
void
......@@ -33,4 +99,6 @@ DeviceVerificationFlow::acceptDevice()
{
emit deviceVerified();
this->deleteLater();
// Yet to add send to_device message
}
......@@ -20,8 +20,12 @@ public:
DeviceVerificationFlow(QObject *parent = nullptr);
public slots:
//! accepts a verification and starts the verification flow
//! sends a verification request
void sendVerificationRequest();
//! accepts a verification
void acceptVerificationRequest();
//! starts the verification flow
void startVerificationRequest();
//! cancels a verification flow
void cancelVerification();
//! Completes the verification flow
......@@ -34,5 +38,9 @@ signals:
void verificationCanceled();
private:
//! generates a unique transaction id
std::string generate_txn_id();
QTimer *timeout = nullptr;
std::string transaction_id;
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment