From 4cdc98287bb110a1121ae22cb34c9563231bca7a Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 26 Jul 2016 17:06:51 -0700 Subject: [PATCH] add canKick to USI, revert constants to production --- libraries/networking/src/LimitedNodeList.cpp | 4 ++++ libraries/networking/src/LimitedNodeList.h | 1 + .../script-engine/src/UsersScriptingInterface.cpp | 11 +++++++++++ libraries/script-engine/src/UsersScriptingInterface.h | 10 ++++++++++ 4 files changed, 26 insertions(+) diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp index b470c2fe25..431d372089 100644 --- a/libraries/networking/src/LimitedNodeList.cpp +++ b/libraries/networking/src/LimitedNodeList.cpp @@ -151,6 +151,10 @@ void LimitedNodeList::setPermissions(const NodePermissions& newPermissions) { newPermissions.can(NodePermissions::Permission::canWriteToAssetServer)) { emit canWriteAssetsChanged(_permissions.can(NodePermissions::Permission::canWriteToAssetServer)); } + if (originalPermissions.can(NodePermissions::Permission::canKick) != + newPermissions.can(NodePermissions::Permission::canKick)) { + emit canKickChanged(_permissions.can(NodePermissions::Permission::canKick)); + } } QUdpSocket& LimitedNodeList::getDTLSSocket() { diff --git a/libraries/networking/src/LimitedNodeList.h b/libraries/networking/src/LimitedNodeList.h index 2b2f660569..48379b5e39 100644 --- a/libraries/networking/src/LimitedNodeList.h +++ b/libraries/networking/src/LimitedNodeList.h @@ -259,6 +259,7 @@ signals: void canRezChanged(bool canRez); void canRezTmpChanged(bool canRezTmp); void canWriteAssetsChanged(bool canWriteAssets); + void canKickChanged(bool canKick); protected slots: void connectedForLocalSocketTest(); diff --git a/libraries/script-engine/src/UsersScriptingInterface.cpp b/libraries/script-engine/src/UsersScriptingInterface.cpp index 6be3aa39ac..69ad8e04ad 100644 --- a/libraries/script-engine/src/UsersScriptingInterface.cpp +++ b/libraries/script-engine/src/UsersScriptingInterface.cpp @@ -13,6 +13,12 @@ #include +UsersScriptingInterface::UsersScriptingInterface() { + // emit a signal when kick permissions have changed + auto nodeList = DependencyManager::get(); + connect(nodeList.data(), &LimitedNodeList::canKickChanged, this, &UsersScriptingInterface::canKickChanged); +} + void UsersScriptingInterface::ignore(const QUuid& nodeID) { // ask the NodeList to ignore this user (based on the session ID of their node) DependencyManager::get()->ignoreNodeBySessionID(nodeID); @@ -22,3 +28,8 @@ void UsersScriptingInterface::kick(const QUuid& nodeID) { // ask the NodeList to kick the user with the given session ID DependencyManager::get()->kickNodeBySessionID(nodeID); } + +bool UsersScriptingInterface::getCanKick() { + // ask the NodeList to return our ability to kick + return DependencyManager::get()->getThisNodeCanKick(); +} diff --git a/libraries/script-engine/src/UsersScriptingInterface.h b/libraries/script-engine/src/UsersScriptingInterface.h index c5929dc8b2..712eeedeb6 100644 --- a/libraries/script-engine/src/UsersScriptingInterface.h +++ b/libraries/script-engine/src/UsersScriptingInterface.h @@ -20,9 +20,19 @@ class UsersScriptingInterface : public QObject, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY + Q_PROPERTY(bool canKick READ getCanKick) + +public: + UsersScriptingInterface(); + public slots: void ignore(const QUuid& nodeID); void kick(const QUuid& nodeID); + + bool getCanKick(); + +signals: + void canKickChanged(bool canKick); };