mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 11:00:48 +03:00
Show different verification errors
This commit is contained in:
parent
bca29a4227
commit
8a4d85f801
7 changed files with 35 additions and 20 deletions
|
@ -6,7 +6,6 @@ import im.nheko 1.0
|
|||
|
||||
ApplicationWindow {
|
||||
property var flow
|
||||
property var tran_id
|
||||
|
||||
title: stack.currentItem.title
|
||||
id: dialog
|
||||
|
|
|
@ -2,23 +2,29 @@ import QtQuick 2.3
|
|||
import QtQuick.Controls 2.10
|
||||
import QtQuick.Layouts 1.10
|
||||
|
||||
import im.nheko 1.0
|
||||
|
||||
Pane {
|
||||
property string title: qsTr("Verification timed out")
|
||||
property string title: qsTr("Verification failed")
|
||||
ColumnLayout {
|
||||
spacing: 16
|
||||
Text {
|
||||
id: content
|
||||
|
||||
Layout.maximumWidth: 400
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
|
||||
wrapMode: Text.Wrap
|
||||
id: content
|
||||
text: switch (flow.error) {
|
||||
case VerificationStatus.UnknownMethod: return qsTr("Device verification timed out.")
|
||||
case VerificationStatus.MismatchedCommitment: return qsTr("Device verification timed out.")
|
||||
case VerificationStatus.MismatchedSAS: return qsTr("Device verification timed out.")
|
||||
case VerificationStatus.KeyMismatch: return qsTr("Device verification timed out.")
|
||||
case VerificationStatus.Timeout: return qsTr("Device verification timed out.")
|
||||
case VerificationStatus.OutOfOrder: return qsTr("Device verification timed out.")
|
||||
case DeviceVerificationFlow.UnknownMethod: return qsTr("Other client does not support our verification protocol.")
|
||||
case DeviceVerificationFlow.MismatchedCommitment:
|
||||
case DeviceVerificationFlow.MismatchedSAS:
|
||||
case DeviceVerificationFlow.KeyMismatch: return qsTr("Key mismatch detected!")
|
||||
case DeviceVerificationFlow.Timeout: return qsTr("Device verification timed out.")
|
||||
case DeviceVerificationFlow.User: return qsTr("Other party canceled the verification.")
|
||||
case DeviceVerificationFlow.OutOfOrder: return qsTr("Device verification timed out.")
|
||||
default: return "Unknown verification error.";
|
||||
}
|
||||
color:colors.text
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
@ -31,11 +37,7 @@ Pane {
|
|||
Layout.alignment: Qt.AlignRight
|
||||
text: qsTr("Close")
|
||||
|
||||
onClicked: {
|
||||
deviceVerificationList.remove(tran_id);
|
||||
flow.deleteFlow();
|
||||
dialog.close()
|
||||
}
|
||||
onClicked: dialog.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,12 +20,12 @@ Pane {
|
|||
case "WaitingForMac": return qsTr("Waiting for other side to complete the verification request.")
|
||||
}
|
||||
|
||||
color:colors.text
|
||||
color: colors.text
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
BusyIndicator {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
palette: color
|
||||
palette: colors
|
||||
}
|
||||
RowLayout {
|
||||
Button {
|
||||
|
|
|
@ -64,7 +64,8 @@ DeviceVerificationFlow::DeviceVerificationFlow(QObject *,
|
|||
}
|
||||
|
||||
connect(timeout, &QTimer::timeout, this, [this]() {
|
||||
this->cancelVerification(DeviceVerificationFlow::Error::Timeout);
|
||||
if (state_ != Success && state_ != Failed)
|
||||
this->cancelVerification(DeviceVerificationFlow::Error::Timeout);
|
||||
});
|
||||
|
||||
connect(ChatPage::instance(),
|
||||
|
@ -114,7 +115,7 @@ DeviceVerificationFlow::DeviceVerificationFlow(QObject *,
|
|||
return;
|
||||
}
|
||||
error_ = User;
|
||||
emit errorChanged();
|
||||
Emit errorChanged();
|
||||
setState(Failed);
|
||||
});
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ class DeviceVerificationFlow : public QObject
|
|||
Q_OBJECT
|
||||
// Q_CLASSINFO("RegisterEnumClassesUnscoped", "false")
|
||||
Q_PROPERTY(QString state READ state NOTIFY stateChanged)
|
||||
Q_PROPERTY(Error error READ error CONSTANT)
|
||||
Q_PROPERTY(Error error READ error NOTIFY errorChanged)
|
||||
Q_PROPERTY(QString userId READ getUserId CONSTANT)
|
||||
Q_PROPERTY(QString deviceId READ getDeviceId CONSTANT)
|
||||
Q_PROPERTY(bool sender READ getSender CONSTANT)
|
||||
|
@ -203,7 +203,7 @@ private:
|
|||
mtx::common::RelatesTo relation;
|
||||
|
||||
State state_ = PromptStartVerification;
|
||||
Error error_;
|
||||
Error error_ = UnknownMethod;
|
||||
|
||||
bool isMacVerified = false;
|
||||
|
||||
|
|
|
@ -396,6 +396,18 @@ TimelineViewManager::verifyUser(QString userid)
|
|||
tr("No share room with this user found. Create an "
|
||||
"encrypted room with this user and try again."));
|
||||
}
|
||||
|
||||
void
|
||||
TimelineViewManager::removeVerificationFlow(DeviceVerificationFlow *flow)
|
||||
{
|
||||
for (auto it = dvList.keyValueBegin(); it != dvList.keyValueEnd(); ++it) {
|
||||
if (it->second == flow) {
|
||||
dvList.remove(it->first);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
TimelineViewManager::verifyDevice(QString userid, QString deviceid)
|
||||
{
|
||||
|
|
|
@ -62,6 +62,7 @@ public:
|
|||
Q_INVOKABLE void openMemberListDialog() const;
|
||||
Q_INVOKABLE void openLeaveRoomDialog() const;
|
||||
Q_INVOKABLE void openRoomSettings() const;
|
||||
Q_INVOKABLE void removeVerificationFlow(DeviceVerificationFlow *flow);
|
||||
|
||||
void verifyUser(QString userid);
|
||||
void verifyDevice(QString userid, QString deviceid);
|
||||
|
|
Loading…
Reference in a new issue