moving logic to wallet, crashes currently

This commit is contained in:
Liv Erickson 2018-01-26 17:13:39 -08:00
parent 3a6f184278
commit 20635acf27
4 changed files with 32 additions and 17 deletions

View file

@ -16,6 +16,16 @@ CheckoutProxy::CheckoutProxy(QObject* qmlObject, QObject* parent) : QmlWrapper(q
} }
WalletScriptingInterface::WalletScriptingInterface() { WalletScriptingInterface::WalletScriptingInterface() {
_contextOverlayInterface = DependencyManager::get<ContextOverlayInterface>();
_entityPropertyFlags += PROP_POSITION;
_entityPropertyFlags += PROP_ROTATION;
_entityPropertyFlags += PROP_MARKETPLACE_ID;
_entityPropertyFlags += PROP_DIMENSIONS;
_entityPropertyFlags += PROP_REGISTRATION_POINT;
_entityPropertyFlags += PROP_CERTIFICATE_ID;
_entityPropertyFlags += PROP_CLIENT_ONLY;
_entityPropertyFlags += PROP_OWNING_AVATAR_ID;
} }
void WalletScriptingInterface::refreshWalletStatus() { void WalletScriptingInterface::refreshWalletStatus() {
@ -27,3 +37,15 @@ void WalletScriptingInterface::setWalletStatus(const uint& status) {
_walletStatus = status; _walletStatus = status;
emit DependencyManager::get<Wallet>()->walletStatusResult(status); emit DependencyManager::get<Wallet>()->walletStatusResult(status);
} }
void WalletScriptingInterface::proveAvatarEntityOwnershipVerification(const QUuid& entityID) {
EntityItemProperties entityProperties = DependencyManager::get<EntityScriptingInterface>()->getEntityProperties(entityID, _entityPropertyFlags);
if (!entityID.isNull() && entityProperties.getMarketplaceID().length() > 0) {
if (!entityProperties.getClientOnly()) {
qCDebug(entities) << "Failed to prove ownership of:" << entityID << "is not an avatar entity";
emit _contextOverlayInterface->ownershipVerificationFailed(entityID);
return;
}
_contextOverlayInterface->requestOwnershipVerification(entityID);
}
}

View file

@ -21,6 +21,7 @@
#include <OffscreenUi.h> #include <OffscreenUi.h>
#include "Application.h" #include "Application.h"
#include "commerce/Wallet.h" #include "commerce/Wallet.h"
#include "ui/overlays/ContextOverlayInterface.h"
class CheckoutProxy : public QmlWrapper { class CheckoutProxy : public QmlWrapper {
Q_OBJECT Q_OBJECT
@ -33,12 +34,15 @@ class WalletScriptingInterface : public QObject, public Dependency {
Q_OBJECT Q_OBJECT
Q_PROPERTY(uint walletStatus READ getWalletStatus WRITE setWalletStatus NOTIFY walletStatusChanged) Q_PROPERTY(uint walletStatus READ getWalletStatus WRITE setWalletStatus NOTIFY walletStatusChanged)
QSharedPointer<ContextOverlayInterface> _contextOverlayInterface;
public: public:
WalletScriptingInterface(); WalletScriptingInterface();
Q_INVOKABLE void refreshWalletStatus(); Q_INVOKABLE void refreshWalletStatus();
Q_INVOKABLE uint getWalletStatus() { return _walletStatus; } Q_INVOKABLE uint getWalletStatus() { return _walletStatus; }
Q_INVOKABLE void proveAvatarEntityOwnershipVerification(const QUuid& entityID);
// setWalletStatus() should never be made Q_INVOKABLE. If it were, // setWalletStatus() should never be made Q_INVOKABLE. If it were,
// scripts could cause the Wallet to incorrectly report its status. // scripts could cause the Wallet to incorrectly report its status.
void setWalletStatus(const uint& status); void setWalletStatus(const uint& status);
@ -49,6 +53,7 @@ signals:
private: private:
uint _walletStatus; uint _walletStatus;
EntityPropertyFlags _entityPropertyFlags;
}; };
#endif // hifi_WalletScriptingInterface_h #endif // hifi_WalletScriptingInterface_h

View file

@ -267,21 +267,10 @@ void ContextOverlayInterface::contextOverlays_hoverLeaveEntity(const EntityItemI
} }
} }
void ContextOverlayInterface::proveAvatarEntityOwnershipVerification(const QUuid& entityItemID) { void ContextOverlayInterface::requestOwnershipVerification(const QUuid& entityID) {
EntityItemProperties entityProperties = _entityScriptingInterface->getEntityProperties(entityItemID, _entityPropertyFlags);
_entityMarketplaceID = entityProperties.getMarketplaceID(); setLastInspectedEntity(entityID);
if (!entityItemID.isNull() && _entityMarketplaceID.length() > 0) {
if (!entityProperties.getClientOnly()) {
qCDebug(entities) << "Failed to prove ownership of:" << entityItemID << "is not an avatar entity";
emit ownershipVerificationFailed(entityItemID);
return;
}
setLastInspectedEntity(entityItemID);
requestOwnershipVerification();
}
}
void ContextOverlayInterface::requestOwnershipVerification() {
EntityItemProperties entityProperties = _entityScriptingInterface->getEntityProperties(_lastInspectedEntity, _entityPropertyFlags); EntityItemProperties entityProperties = _entityScriptingInterface->getEntityProperties(_lastInspectedEntity, _entityPropertyFlags);
auto nodeList = DependencyManager::get<NodeList>(); auto nodeList = DependencyManager::get<NodeList>();
@ -381,7 +370,7 @@ void ContextOverlayInterface::openInspectionCertificate() {
_hmdScriptingInterface->openTablet(); _hmdScriptingInterface->openTablet();
setLastInspectedEntity(_currentEntityWithContextOverlay); setLastInspectedEntity(_currentEntityWithContextOverlay);
requestOwnershipVerification(); requestOwnershipVerification(_lastInspectedEntity);
} }
} }

View file

@ -50,13 +50,13 @@ class ContextOverlayInterface : public QObject, public Dependency {
public: public:
ContextOverlayInterface(); ContextOverlayInterface();
Q_INVOKABLE QUuid getCurrentEntityWithContextOverlay() { return _currentEntityWithContextOverlay; } Q_INVOKABLE QUuid getCurrentEntityWithContextOverlay() { return _currentEntityWithContextOverlay; }
Q_INVOKABLE void proveAvatarEntityOwnershipVerification(const QUuid& entityID);
void setCurrentEntityWithContextOverlay(const QUuid& entityID) { _currentEntityWithContextOverlay = entityID; } void setCurrentEntityWithContextOverlay(const QUuid& entityID) { _currentEntityWithContextOverlay = entityID; }
void setLastInspectedEntity(const QUuid& entityID) { _challengeOwnershipTimeoutTimer.stop(); _lastInspectedEntity = entityID; } void setLastInspectedEntity(const QUuid& entityID) { _challengeOwnershipTimeoutTimer.stop(); _lastInspectedEntity = entityID; }
void setEnabled(bool enabled); void setEnabled(bool enabled);
bool getEnabled() { return _enabled; } bool getEnabled() { return _enabled; }
bool getIsInMarketplaceInspectionMode() { return _isInMarketplaceInspectionMode; } bool getIsInMarketplaceInspectionMode() { return _isInMarketplaceInspectionMode; }
void setIsInMarketplaceInspectionMode(bool mode) { _isInMarketplaceInspectionMode = mode; } void setIsInMarketplaceInspectionMode(bool mode) { _isInMarketplaceInspectionMode = mode; }
void requestOwnershipVerification(const QUuid& entityID);
signals: signals:
void contextOverlayClicked(const QUuid& currentEntityWithContextOverlay); void contextOverlayClicked(const QUuid& currentEntityWithContextOverlay);
@ -92,7 +92,6 @@ private:
bool _isInMarketplaceInspectionMode { false }; bool _isInMarketplaceInspectionMode { false };
void openInspectionCertificate(); void openInspectionCertificate();
void requestOwnershipVerification();
void openMarketplace(); void openMarketplace();
void enableEntityHighlight(const EntityItemID& entityItemID); void enableEntityHighlight(const EntityItemID& entityItemID);
void disableEntityHighlight(const EntityItemID& entityItemID); void disableEntityHighlight(const EntityItemID& entityItemID);