From 81762119b9285956d5c71ba7262b4ed367ac8e7e Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Tue, 12 Jan 2021 13:32:12 +0100 Subject: [PATCH] Make device verification request dialogs easier to understand. --- .../NewVerificationRequest.qml | 20 +++++++++++++++++-- src/DeviceVerificationFlow.cpp | 6 ++++++ src/DeviceVerificationFlow.h | 7 +++++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/resources/qml/device-verification/NewVerificationRequest.qml b/resources/qml/device-verification/NewVerificationRequest.qml index 9e492ca4..fae63371 100644 --- a/resources/qml/device-verification/NewVerificationRequest.qml +++ b/resources/qml/device-verification/NewVerificationRequest.qml @@ -4,7 +4,7 @@ import QtQuick.Layouts 1.10 import im.nheko 1.0 Pane { - property string title: flow.sender ? qsTr("Send Device Verification Request") : qsTr("Recieved Device Verification Request") + property string title: flow.sender ? qsTr("Send Verification Request") : qsTr("Recieved Verification Request") ColumnLayout { spacing: 16 @@ -14,7 +14,23 @@ Pane { Layout.fillHeight: true Layout.fillWidth: true wrapMode: Text.Wrap - text: flow.sender ? qsTr("To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device.") : qsTr("The device was requested to be verified") + text: { + if (flow.sender) { + if (flow.isSelfVerification) + return qsTr("To allow other users to see, which of your devices actually belong to you, you can verify them. This also allows key backup to work automatically. Verify %1 now?").arg(flow.deviceId); + else + return qsTr("To ensure that no malicious user can eavesdrop on your encrypted communications you can verify the other party."); + } else { + // Self verification + + if (!flow.isSelfVerification && flow.isDeviceVerification) + return qsTr("%1 has requested to verify their device %2.").arg(flow.userId).arg(flow.deviceId); + else if (!flow.isSelfVerification && !flow.isDeviceVerification) + return qsTr("%1 using the device %2 has requested to be verified.").arg(flow.userId).arg(flow.deviceId); + else + return qsTr("Your devices (%1) has requested to be verified.").arg(flow.deviceId); + } + } color: colors.text verticalAlignment: Text.AlignVCenter } diff --git a/src/DeviceVerificationFlow.cpp b/src/DeviceVerificationFlow.cpp index f692629e..51ef79fd 100644 --- a/src/DeviceVerificationFlow.cpp +++ b/src/DeviceVerificationFlow.cpp @@ -505,6 +505,12 @@ DeviceVerificationFlow::getSasList() return this->sasList; } +bool +DeviceVerificationFlow::isSelfVerification() const +{ + return this->toClient.to_string() == http::client()->user_id().to_string(); +} + void DeviceVerificationFlow::setEventId(std::string event_id_) { diff --git a/src/DeviceVerificationFlow.h b/src/DeviceVerificationFlow.h index d6e5411e..34b78962 100644 --- a/src/DeviceVerificationFlow.h +++ b/src/DeviceVerificationFlow.h @@ -63,6 +63,8 @@ class DeviceVerificationFlow : public QObject Q_PROPERTY(QString deviceId READ getDeviceId CONSTANT) Q_PROPERTY(bool sender READ getSender CONSTANT) Q_PROPERTY(std::vector sasList READ getSasList CONSTANT) + Q_PROPERTY(bool isDeviceVerification READ isDeviceVerification CONSTANT) + Q_PROPERTY(bool isSelfVerification READ isSelfVerification CONSTANT) public: enum State @@ -129,6 +131,11 @@ public: // setters void setDeviceId(QString deviceID); void setEventId(std::string event_id); + bool isDeviceVerification() const + { + return this->type == DeviceVerificationFlow::Type::ToDevice; + } + bool isSelfVerification() const; void callback_fn(const UserKeyCache &res, mtx::http::RequestErr err, std::string user_id);