mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-10 01:36:26 +02:00
changing request to have a callback function passed
This commit is contained in:
parent
6bc1164d58
commit
ed39b43d3b
5 changed files with 56 additions and 91 deletions
|
@ -130,9 +130,8 @@ void LoginDialog::login(const QString& username, const QString& password) const
|
||||||
void LoginDialog::loginThroughOculus() {
|
void LoginDialog::loginThroughOculus() {
|
||||||
qDebug() << "Attempting to login through Oculus";
|
qDebug() << "Attempting to login through Oculus";
|
||||||
if (auto oculusPlatformPlugin = PluginManager::getInstance()->getOculusPlatformPlugin()) {
|
if (auto oculusPlatformPlugin = PluginManager::getInstance()->getOculusPlatformPlugin()) {
|
||||||
oculusPlatformPlugin->requestNonceAndUserID(LoginState::LOGIN);
|
oculusPlatformPlugin->requestNonceAndUserID([this] (QString nonce, QString userID) {
|
||||||
connect(oculusPlatformPlugin.get(), &OculusPlatformPlugin::loginReady, this, [&] (QString nonce, QString userID) {
|
DependencyManager::get<AccountManager>()->requestAccessTokenWithOculus(nonce, userID);
|
||||||
onLoginThroughOculusReady(nonce, userID);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -140,17 +139,58 @@ void LoginDialog::loginThroughOculus() {
|
||||||
void LoginDialog::linkOculus() {
|
void LoginDialog::linkOculus() {
|
||||||
qDebug() << "Attempting to link Oculus account";
|
qDebug() << "Attempting to link Oculus account";
|
||||||
if (auto oculusPlatformPlugin = PluginManager::getInstance()->getOculusPlatformPlugin()) {
|
if (auto oculusPlatformPlugin = PluginManager::getInstance()->getOculusPlatformPlugin()) {
|
||||||
oculusPlatformPlugin->requestNonceAndUserID(LoginState::LINK_ACCOUNT);
|
oculusPlatformPlugin->requestNonceAndUserID([this] (QString nonce, QString userID) {
|
||||||
|
if (nonce.isEmpty() || userID.isEmpty()) {
|
||||||
|
emit handleLoginFailed();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONCallbackParameters callbackParams;
|
||||||
|
callbackParams.callbackReceiver = this;
|
||||||
|
callbackParams.jsonCallbackMethod = "linkCompleted";
|
||||||
|
callbackParams.errorCallbackMethod = "linkFailed";
|
||||||
|
const QString LINK_OCULUS_PATH = "api/v1/user/oculus/link";
|
||||||
|
|
||||||
|
QJsonObject payload;
|
||||||
|
payload.insert("oculus_nonce", QJsonValue::fromVariant(QVariant(nonce)));
|
||||||
|
payload.insert("oculus_user_id", QJsonValue::fromVariant(QVariant(userID)));
|
||||||
|
|
||||||
|
auto accountManager = DependencyManager::get<AccountManager>();
|
||||||
|
accountManager->sendRequest(LINK_OCULUS_PATH, AccountManagerAuth::Required,
|
||||||
|
QNetworkAccessManager::PostOperation, callbackParams,
|
||||||
|
QJsonDocument(payload).toJson());
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoginDialog::createAccountFromOculus(QString username) {
|
void LoginDialog::createAccountFromOculus(QString username) {
|
||||||
qDebug() << "Attempting to create account from Oculus info";
|
qDebug() << "Attempting to create account from Oculus info";
|
||||||
if (auto oculusPlatformPlugin = PluginManager::getInstance()->getOculusPlatformPlugin()) {
|
if (auto oculusPlatformPlugin = PluginManager::getInstance()->getOculusPlatformPlugin()) {
|
||||||
oculusPlatformPlugin->requestNonceAndUserID(LoginState::CREATE_ACCOUNT);
|
oculusPlatformPlugin->requestNonceAndUserID([this, username] (QString nonce, QString userID) {
|
||||||
connect(oculusPlatformPlugin.get(), &OculusPlatformPlugin::createAccountReady, this, [&] (QString nonce, QString userID) {
|
if (nonce.isEmpty() || userID.isEmpty()) {
|
||||||
onCreateAccountThroughOculusReady(nonce, userID, username);
|
emit handleLoginFailed();
|
||||||
});
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONCallbackParameters callbackParams;
|
||||||
|
callbackParams.callbackReceiver = this;
|
||||||
|
callbackParams.jsonCallbackMethod = "createCompleted";
|
||||||
|
callbackParams.errorCallbackMethod = "createFailed";
|
||||||
|
|
||||||
|
const QString CREATE_ACCOUNT_FROM_OCULUS_PATH = "api/v1/user/oculus/create";
|
||||||
|
|
||||||
|
QJsonObject payload;
|
||||||
|
payload.insert("oculus_nonce", QJsonValue::fromVariant(QVariant(nonce)));
|
||||||
|
payload.insert("oculus_user_id", QJsonValue::fromVariant(QVariant(userID)));
|
||||||
|
if (!username.isEmpty()) {
|
||||||
|
payload.insert("username", QJsonValue::fromVariant(QVariant(username)));
|
||||||
|
}
|
||||||
|
|
||||||
|
auto accountManager = DependencyManager::get<AccountManager>();
|
||||||
|
accountManager->sendRequest(CREATE_ACCOUNT_FROM_OCULUS_PATH, AccountManagerAuth::None,
|
||||||
|
QNetworkAccessManager::PostOperation, callbackParams,
|
||||||
|
QJsonDocument(payload).toJson());
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -276,60 +316,6 @@ bool LoginDialog::getLoginDialogPoppedUp() const {
|
||||||
return qApp->getLoginDialogPoppedUp();
|
return qApp->getLoginDialogPoppedUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoginDialog::onLoginThroughOculusReady(QString nonce, QString userID) {
|
|
||||||
DependencyManager::get<AccountManager>()->requestAccessTokenWithOculus(nonce, userID);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LoginDialog::onLinkOculusReady(QString nonce, QString userID) {
|
|
||||||
if (nonce.isEmpty() || userID.isEmpty()) {
|
|
||||||
emit handleLoginFailed();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
JSONCallbackParameters callbackParams;
|
|
||||||
callbackParams.callbackReceiver = this;
|
|
||||||
callbackParams.jsonCallbackMethod = "linkCompleted";
|
|
||||||
callbackParams.errorCallbackMethod = "linkFailed";
|
|
||||||
const QString LINK_OCULUS_PATH = "api/v1/user/oculus/link";
|
|
||||||
|
|
||||||
QJsonObject payload;
|
|
||||||
payload.insert("oculus_nonce", QJsonValue::fromVariant(QVariant(nonce)));
|
|
||||||
payload.insert("oculus_user_id", QJsonValue::fromVariant(QVariant(userID)));
|
|
||||||
|
|
||||||
auto accountManager = DependencyManager::get<AccountManager>();
|
|
||||||
accountManager->sendRequest(LINK_OCULUS_PATH, AccountManagerAuth::Required,
|
|
||||||
QNetworkAccessManager::PostOperation, callbackParams,
|
|
||||||
QJsonDocument(payload).toJson());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void LoginDialog::onCreateAccountThroughOculusReady(QString nonce, QString userID, QString username) {
|
|
||||||
if (nonce.isEmpty() || userID.isEmpty()) {
|
|
||||||
emit handleLoginFailed();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
JSONCallbackParameters callbackParams;
|
|
||||||
callbackParams.callbackReceiver = this;
|
|
||||||
callbackParams.jsonCallbackMethod = "createCompleted";
|
|
||||||
callbackParams.errorCallbackMethod = "createFailed";
|
|
||||||
|
|
||||||
const QString CREATE_ACCOUNT_FROM_OCULUS_PATH = "api/v1/user/oculus/create";
|
|
||||||
|
|
||||||
QJsonObject payload;
|
|
||||||
payload.insert("oculus_nonce", QJsonValue::fromVariant(QVariant(nonce)));
|
|
||||||
payload.insert("oculus_user_id", QJsonValue::fromVariant(QVariant(userID)));
|
|
||||||
if (!username.isEmpty()) {
|
|
||||||
payload.insert("username", QJsonValue::fromVariant(QVariant(username)));
|
|
||||||
}
|
|
||||||
|
|
||||||
auto accountManager = DependencyManager::get<AccountManager>();
|
|
||||||
accountManager->sendRequest(CREATE_ACCOUNT_FROM_OCULUS_PATH, AccountManagerAuth::None,
|
|
||||||
QNetworkAccessManager::PostOperation, callbackParams,
|
|
||||||
QJsonDocument(payload).toJson());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
QString errorStringFromAPIObject(const QJsonValue& apiObject) {
|
QString errorStringFromAPIObject(const QJsonValue& apiObject) {
|
||||||
if (apiObject.isArray()) {
|
if (apiObject.isArray()) {
|
||||||
return apiObject.toArray()[0].toString();
|
return apiObject.toArray()[0].toString();
|
||||||
|
|
|
@ -83,10 +83,6 @@ protected slots:
|
||||||
|
|
||||||
Q_INVOKABLE bool getLoginDialogPoppedUp() const;
|
Q_INVOKABLE bool getLoginDialogPoppedUp() const;
|
||||||
|
|
||||||
void onLoginThroughOculusReady(QString nonce, QString userID);
|
|
||||||
void onLinkOculusReady(QString nonce, QString userID);
|
|
||||||
void onCreateAccountThroughOculusReady(QString nonce, QString userID, QString username);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool getIsLogIn() const { return _isLogIn; }
|
bool getIsLogIn() const { return _isLogIn; }
|
||||||
void setIsLogIn(const bool isLogIn) { _isLogIn = isLogIn; }
|
void setIsLogIn(const bool isLogIn) { _isLogIn = isLogIn; }
|
||||||
|
|
|
@ -7,27 +7,20 @@
|
||||||
//
|
//
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QObject>
|
|
||||||
#include <QtCore/QString>
|
#include <QtCore/QString>
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
enum LoginState {
|
using NonceUserIDCallback = std::function<void(QString, QString)>;
|
||||||
INVALID_STATE = 0,
|
|
||||||
LOGIN,
|
|
||||||
LINK_ACCOUNT,
|
|
||||||
CREATE_ACCOUNT
|
|
||||||
};
|
|
||||||
|
|
||||||
class OculusPlatformPlugin : public QObject {
|
class OculusPlatformPlugin {
|
||||||
Q_OBJECT
|
|
||||||
public:
|
public:
|
||||||
OculusPlatformPlugin();
|
OculusPlatformPlugin();
|
||||||
virtual ~OculusPlatformPlugin();
|
virtual ~OculusPlatformPlugin();
|
||||||
|
|
||||||
virtual const QString getName() const = 0;
|
virtual const QString getName() const = 0;
|
||||||
|
|
||||||
virtual void requestNonceAndUserID(LoginState state = LoginState::INVALID_STATE) = 0;
|
virtual void requestNonceAndUserID(NonceUserIDCallback callback) = 0;
|
||||||
|
|
||||||
virtual void handleOVREvents() = 0;
|
virtual void handleOVREvents() = 0;
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,8 @@ OculusAPIPlugin::~OculusAPIPlugin() {
|
||||||
hifi::ovr::releaseRenderSession(_session);
|
hifi::ovr::releaseRenderSession(_session);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OculusAPIPlugin::requestNonceAndUserID(LoginState loginState) {
|
void OculusAPIPlugin::requestNonceAndUserID(NonceUserIDCallback callback) {
|
||||||
_loginState = loginState;
|
_nonceUserIDCallback = callback;
|
||||||
ovr_User_GetUserProof();
|
ovr_User_GetUserProof();
|
||||||
ovr_User_GetLoggedInUser();
|
ovr_User_GetLoggedInUser();
|
||||||
}
|
}
|
||||||
|
@ -91,17 +91,7 @@ void OculusAPIPlugin::handleOVREvents() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_nonceChanged) {
|
if (_nonceChanged) {
|
||||||
switch (_loginState) {
|
_nonceUserIDCallback(_nonce, _user);`
|
||||||
case LoginState::LOGIN:
|
|
||||||
emit loginReady(_nonce, _user);
|
|
||||||
break;
|
|
||||||
case LoginState::LINK_ACCOUNT:
|
|
||||||
emit linkAccountReady(_nonce, _user);
|
|
||||||
break;
|
|
||||||
case LoginState::CREATE_ACCOUNT:
|
|
||||||
emit createAccountReady(_nonce, _user);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
_loginState = LoginState::INVALID_STATE;
|
_loginState = LoginState::INVALID_STATE;
|
||||||
_nonce = _user = "";
|
_nonce = _user = "";
|
||||||
_nonceChanged = false;
|
_nonceChanged = false;
|
||||||
|
|
|
@ -20,13 +20,13 @@ public:
|
||||||
virtual ~OculusAPIPlugin();
|
virtual ~OculusAPIPlugin();
|
||||||
const QString getName() const { return NAME; }
|
const QString getName() const { return NAME; }
|
||||||
|
|
||||||
virtual void requestNonceAndUserID(LoginState loginState);
|
virtual void requestNonceAndUserID(NonceUserIDCallback callback);
|
||||||
|
|
||||||
virtual void handleOVREvents();
|
virtual void handleOVREvents();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static const char* NAME;
|
static const char* NAME;
|
||||||
LoginState _loginState{ LoginState::INVALID_STATE };
|
NonceUserIDCallback _nonceUserIDCallback;
|
||||||
QString _nonce;
|
QString _nonce;
|
||||||
bool _nonceChanged{ false };
|
bool _nonceChanged{ false };
|
||||||
QString _user;
|
QString _user;
|
||||||
|
|
Loading…
Reference in a new issue