History

better implementation

danteruiz committed 7 years ago

Commit 2ab8eb91 parent 5f3e31b5 files · +52 −37Browse files

Showing the changes to libraries/script-engine/src/UsersScriptingInterface.cpp (1 of 5 files). Show all

Unified · Split

libraries/script-engine/src/UsersScriptingInterface.cpp+6−36
@@ -12,8 +12,6 @@ · 11 unmodified lines
1212 #include "UsersScriptingInterface.h"
1313
1414 #include <NodeList.h>
15−#include <AvatarHashMap.h>
16−#include <OffscreenUi.h>
1715
1816 UsersScriptingInterface::UsersScriptingInterface() {
1917 // emit a signal when kick permissions have changed
@@ -54,42 +52,14 @@ float UsersScriptingInterface::getAvatarGain(const QUuid& nodeID) { · 34 unmodified lines
5452 }
5553
5654 void UsersScriptingInterface::kick(const QUuid& nodeID) {
57− bool waitingForKickResponse = _kickResponseLock.resultWithReadLock<bool>([&] { return _waitingForKickResponse; });
58− if (getCanKick() && !waitingForKickResponse) {
5955
60−
61− auto avatarHashMap = DependencyManager::get<AvatarHashMap>();
62− auto avatar = avatarHashMap->getAvatarBySessionID(nodeID);
63−
64− QString userName;
65−
66− if (avatar) {
67− userName = avatar->getSessionDisplayName();
68− } else {
69− userName = nodeID.toString();
70− }
71−
72− QString kickMessage = "Do you wish to kick " + userName + " from your domain";
73− ModalDialogListener* dlg = OffscreenUi::asyncQuestion("Kick User", kickMessage,
74− QMessageBox::Yes | QMessageBox::No);
75−
76− if (dlg->getDialogItem()) {
77−
78− QObject::connect(dlg, &ModalDialogListener::response, this, [=] (QVariant answer) {
79− QObject::disconnect(dlg, &ModalDialogListener::response, this, nullptr);
80−
81− bool yes = (static_cast<QMessageBox::StandardButton>(answer.toInt()) == QMessageBox::Yes);
82− // ask the NodeList to kick the user with the given session ID
83−
84− if (yes) {
85− DependencyManager::get<NodeList>()->kickNodeBySessionID(nodeID);
86− }
87−
88− _kickResponseLock.withWriteLock([&] { _waitingForKickResponse = false; });
89− });
90−
91− _kickResponseLock.withWriteLock([&] { _waitingForKickResponse = true; });
56+ if (_kickConfirmationOperator) {
57+ bool waitingForKickResponse = _kickResponseLock.resultWithReadLock<bool>([&] { return _waitingForKickResponse; });
58+ if (getCanKick() && !waitingForKickResponse) {
59+ _kickConfirmationOperator(nodeID);
9260 }
61+ } else {
62+ DependencyManager::get<NodeList>()->kickNodeBySessionID(nodeID);
9363 }
9464 }
9565