From 3a43283e7b1d03545c85b7bf671f1fe9bc64a635 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 4 Aug 2020 19:42:02 +1200 Subject: [PATCH] Provide domain name to domain login dialog --- .../resources/qml/LoginDialog/LinkAccountBody.qml | 1 + interface/src/ui/DialogsManager.cpp | 14 ++++++++++---- interface/src/ui/DialogsManager.h | 5 ++++- interface/src/ui/LoginDialog.cpp | 4 ++++ interface/src/ui/LoginDialog.h | 1 + libraries/networking/src/DomainAccountManager.cpp | 5 ++++- libraries/networking/src/DomainAccountManager.h | 3 ++- 7 files changed, 26 insertions(+), 7 deletions(-) diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml index 3d715d1a39..810a8a37dd 100644 --- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml +++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml @@ -46,6 +46,7 @@ Item { readonly property bool loginDialogPoppedUp: loginDialog.getLoginDialogPoppedUp() readonly property bool isLoggingInToDomain: loginDialog.getDomainLoginRequested() + readonly property string domainLoginDomain: loginDialog.getDomainLoginDomain() QtObject { id: d diff --git a/interface/src/ui/DialogsManager.cpp b/interface/src/ui/DialogsManager.cpp index 848663967f..6e807c7b9f 100644 --- a/interface/src/ui/DialogsManager.cpp +++ b/interface/src/ui/DialogsManager.cpp @@ -110,8 +110,14 @@ void DialogsManager::setDomainConnectionFailureVisibility(bool visible) { } } + +void DialogsManager::setDomainLogin(bool isDomainLogin, const QString& domain) { + _isDomainLogin = isDomainLogin; + _domainLoginDomain = domain; +} + void DialogsManager::toggleLoginDialog() { - _isDomainLogin = false; + setDomainLogin(false); LoginDialog::toggleAction(); } @@ -120,7 +126,7 @@ void DialogsManager::showLoginDialog() { // ####### TODO: May be called from script via DialogsManagerScriptingInterface. Need to handle the case that it's already // displayed and may be the domain login version. - _isDomainLogin = false; + setDomainLogin(false); LoginDialog::showWithSelection(); } @@ -129,8 +135,8 @@ void DialogsManager::hideLoginDialog() { } -void DialogsManager::showDomainLoginDialog() { - _isDomainLogin = true; +void DialogsManager::showDomainLoginDialog(const QString& domain) { + setDomainLogin(true, domain); LoginDialog::showWithSelection(); } diff --git a/interface/src/ui/DialogsManager.h b/interface/src/ui/DialogsManager.h index 30127ced68..fa5c589fb4 100644 --- a/interface/src/ui/DialogsManager.h +++ b/interface/src/ui/DialogsManager.h @@ -42,6 +42,7 @@ public: void emitAddressBarShown(bool visible) { emit addressBarShown(visible); } void setAddressBarVisible(bool addressBarVisible); bool getIsDomainLogin() { return _isDomainLogin; } + QString getDomainLoginDomain() { return _domainLoginDomain; } public slots: void showAddressBar(); @@ -51,7 +52,7 @@ public slots: void toggleLoginDialog(); void showLoginDialog(); void hideLoginDialog(); - void showDomainLoginDialog(); + void showDomainLoginDialog(const QString& domain); void octreeStatsDetails(); void lodTools(); void hmdTools(bool showTools); @@ -86,7 +87,9 @@ private: bool _dialogCreatedWhileShown { false }; bool _addressBarVisible { false }; + void setDomainLogin(bool isDomainLogin, const QString& domain = ""); bool _isDomainLogin { false }; + QString _domainLoginDomain; }; #endif // hifi_DialogsManager_h diff --git a/interface/src/ui/LoginDialog.cpp b/interface/src/ui/LoginDialog.cpp index 3cc37bcadb..c7597c5658 100644 --- a/interface/src/ui/LoginDialog.cpp +++ b/interface/src/ui/LoginDialog.cpp @@ -427,3 +427,7 @@ void LoginDialog::signupFailed(QNetworkReply* reply) { bool LoginDialog::getDomainLoginRequested() const { return DependencyManager::get()->getIsDomainLogin(); } + +QString LoginDialog::getDomainLoginDomain() const { + return DependencyManager::get()->getDomainLoginDomain(); +} diff --git a/interface/src/ui/LoginDialog.h b/interface/src/ui/LoginDialog.h index 310a5db255..9f4af5debb 100644 --- a/interface/src/ui/LoginDialog.h +++ b/interface/src/ui/LoginDialog.h @@ -85,6 +85,7 @@ protected slots: Q_INVOKABLE bool getLoginDialogPoppedUp() const; Q_INVOKABLE bool getDomainLoginRequested() const; + Q_INVOKABLE QString getDomainLoginDomain() const; }; diff --git a/libraries/networking/src/DomainAccountManager.cpp b/libraries/networking/src/DomainAccountManager.cpp index 9910252317..6bb868df61 100644 --- a/libraries/networking/src/DomainAccountManager.cpp +++ b/libraries/networking/src/DomainAccountManager.cpp @@ -184,7 +184,10 @@ bool DomainAccountManager::checkAndSignalForAccessToken() { // Emit a signal so somebody can call back to us and request an access token given a user name and password. // Dialog can be hidden immediately after showing if we've just teleported to the domain, unless the signal is delayed. - QTimer::singleShot(500, this, [this] { emit this->authRequired(); }); + auto domain = _authURL.host(); + QTimer::singleShot(500, this, [this, domain] { + emit this->authRequired(domain); + }); } return hasToken; diff --git a/libraries/networking/src/DomainAccountManager.h b/libraries/networking/src/DomainAccountManager.h index 213d40a8d8..0388ba1f5a 100644 --- a/libraries/networking/src/DomainAccountManager.h +++ b/libraries/networking/src/DomainAccountManager.h @@ -36,8 +36,9 @@ public slots: void requestAccessToken(const QString& username, const QString& password); void requestAccessTokenFinished(); + signals: - void authRequired(); + void authRequired(const QString& domain); void loginComplete(); void loginFailed(); void logoutComplete();