mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 09:37:29 +02:00
present the OAuth webview only every 5 seconds
This commit is contained in:
parent
ca2148178d
commit
66077d5616
2 changed files with 21 additions and 1 deletions
|
@ -38,8 +38,10 @@ void OAuthWebViewHandler::addHighFidelityRootCAToSSLConfig() {
|
||||||
QSslConfiguration::setDefaultConfiguration(sslConfig);
|
QSslConfiguration::setDefaultConfiguration(sslConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const int WEB_VIEW_REDISPLAY_ELAPSED_MSECS = 5 * 1000;
|
||||||
|
|
||||||
void OAuthWebViewHandler::displayWebviewForAuthorizationURL(const QUrl& authorizationURL) {
|
void OAuthWebViewHandler::displayWebviewForAuthorizationURL(const QUrl& authorizationURL) {
|
||||||
if (!_activeWebView) {
|
if (!_activeWebView && _webViewRedisplayTimer.elapsed() >= WEB_VIEW_REDISPLAY_ELAPSED_MSECS) {
|
||||||
_activeWebView = new QWebView;
|
_activeWebView = new QWebView;
|
||||||
|
|
||||||
// keep the window on top and delete it when it closes
|
// keep the window on top and delete it when it closes
|
||||||
|
@ -52,9 +54,24 @@ void OAuthWebViewHandler::displayWebviewForAuthorizationURL(const QUrl& authoriz
|
||||||
|
|
||||||
connect(_activeWebView->page()->networkAccessManager(), &QNetworkAccessManager::sslErrors,
|
connect(_activeWebView->page()->networkAccessManager(), &QNetworkAccessManager::sslErrors,
|
||||||
this, &OAuthWebViewHandler::handleSSLErrors);
|
this, &OAuthWebViewHandler::handleSSLErrors);
|
||||||
|
connect(_activeWebView, &QWebView::loadFinished, this, &OAuthWebViewHandler::handleLoadFinished);
|
||||||
|
|
||||||
|
// connect to the destroyed signal so after the web view closes we can start a timer
|
||||||
|
connect(_activeWebView, &QWebView::destroyed, this, &OAuthWebViewHandler::handleWebViewDestroyed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OAuthWebViewHandler::handleSSLErrors(QNetworkReply* networkReply, const QList<QSslError>& errorList) {
|
void OAuthWebViewHandler::handleSSLErrors(QNetworkReply* networkReply, const QList<QSslError>& errorList) {
|
||||||
qDebug() << "SSL Errors:" << errorList;
|
qDebug() << "SSL Errors:" << errorList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OAuthWebViewHandler::handleLoadFinished(bool success) {
|
||||||
|
if (success && _activeWebView->url().host() == NodeList::getInstance()->getDomainHandler().getHostname()) {
|
||||||
|
qDebug() << "OAuth authorization code passed successfully to domain-server.";
|
||||||
|
_activeWebView->close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OAuthWebViewHandler::handleWebViewDestroyed(QObject* destroyedObject) {
|
||||||
|
_webViewRedisplayTimer.restart();
|
||||||
|
}
|
||||||
|
|
|
@ -28,8 +28,11 @@ public slots:
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void handleSSLErrors(QNetworkReply* networkReply, const QList<QSslError>& errorList);
|
void handleSSLErrors(QNetworkReply* networkReply, const QList<QSslError>& errorList);
|
||||||
|
void handleLoadFinished(bool success);
|
||||||
|
void handleWebViewDestroyed(QObject* destroyedObject);
|
||||||
private:
|
private:
|
||||||
QPointer<QWebView> _activeWebView;
|
QPointer<QWebView> _activeWebView;
|
||||||
|
QElapsedTimer _webViewRedisplayTimer;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // hifi_OAuthWebviewHandler_h
|
#endif // hifi_OAuthWebviewHandler_h
|
Loading…
Reference in a new issue