From bd00a73aa94f82789cf942dc5837bbb08ac216f2 Mon Sep 17 00:00:00 2001 From: Tobias Fella Date: Wed, 30 Dec 2020 13:17:14 +0000 Subject: [PATCH] Ask for consent to terms and conditions if required --- qml/main.qml | 27 +++++++++++++++++++++++++++ src/controller.cpp | 6 ++++++ src/controller.h | 1 + 3 files changed, 34 insertions(+) diff --git a/qml/main.qml b/qml/main.qml index cb76e78aa..456ffc91d 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -262,6 +262,33 @@ Kirigami.ApplicationWindow { function onOpenRoom(room) { roomManager.enterRoom(room) } + + function onUserConsentRequired(url) { + consentSheet.url = url + consentSheet.open() + } + } + + Kirigami.OverlaySheet { + id: consentSheet + + property string url: "" + + header: Kirigami.Heading { + text: i18n("User consent") + } + + QQC2.Label { + id: label + + text: i18n("Your homeserver requires you to agree to its terms and conditions before being able to use it. Please click the button below to read them.") + wrapMode: Text.WordWrap + width: parent.width + } + footer: QQC2.Button { + text: i18n("Open") + onClicked: Qt.openUrlExternally(consentSheet.url) + } } RoomListModel { diff --git a/src/controller.cpp b/src/controller.cpp index b4efca2b9..e279090eb 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -230,6 +230,12 @@ void Controller::addConnection(Connection *c) dropConnection(c); }); + connect(c, &Connection::requestFailed, this, [=] (BaseJob *job) { + if(job->error() == BaseJob::UserConsentRequiredError) { + Q_EMIT userConsentRequired(job->errorUrl()); + } + }); + setBusy(true); c->sync(); diff --git a/src/controller.h b/src/controller.h index 566e89e03..9c6212148 100644 --- a/src/controller.h +++ b/src/controller.h @@ -107,6 +107,7 @@ Q_SIGNALS: void passwordStatus(Controller::PasswordStatus _t1); void showWindow(); void openRoom(NeoChatRoom *room); + void userConsentRequired(QUrl url); public Q_SLOTS: void logout(Quotient::Connection *conn, bool serverSideLogout);