mirror of
https://github.com/overte-org/overte.git
synced 2025-08-07 21:30:33 +02:00
Merge pull request #11861 from druiz17/fix-modal
Fix replace content dialog not closing
This commit is contained in:
commit
c66a500fcf
1 changed files with 44 additions and 30 deletions
|
@ -6139,46 +6139,60 @@ bool Application::askToReplaceDomainContent(const QString& url) {
|
||||||
"and restoring content, visit the documentation page at: ", MAX_CHARACTERS_PER_LINE) +
|
"and restoring content, visit the documentation page at: ", MAX_CHARACTERS_PER_LINE) +
|
||||||
"\nhttps://docs.highfidelity.com/create-and-explore/start-working-in-your-sandbox/restoring-sandbox-content";
|
"\nhttps://docs.highfidelity.com/create-and-explore/start-working-in-your-sandbox/restoring-sandbox-content";
|
||||||
|
|
||||||
bool agreeToReplaceContent = false; // assume false
|
ModalDialogListener* dig = OffscreenUi::asyncQuestion("Are you sure you want to replace this domain's content set?",
|
||||||
agreeToReplaceContent = QMessageBox::Yes == OffscreenUi::question("Are you sure you want to replace this domain's content set?",
|
infoText, QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
|
||||||
infoText, QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
|
|
||||||
|
|
||||||
if (agreeToReplaceContent) {
|
QObject::connect(dig, &ModalDialogListener::response, this, [=] (QVariant answer) {
|
||||||
// Given confirmation, send request to domain server to replace content
|
QString details;
|
||||||
qCDebug(interfaceapp) << "Attempting to replace domain content: " << url;
|
if (static_cast<QMessageBox::StandardButton>(answer.toInt()) == QMessageBox::Yes) {
|
||||||
QByteArray urlData(url.toUtf8());
|
// Given confirmation, send request to domain server to replace content
|
||||||
auto limitedNodeList = DependencyManager::get<LimitedNodeList>();
|
qCDebug(interfaceapp) << "Attempting to replace domain content: " << url;
|
||||||
limitedNodeList->eachMatchingNode([](const SharedNodePointer& node) {
|
QByteArray urlData(url.toUtf8());
|
||||||
return node->getType() == NodeType::EntityServer && node->getActiveSocket();
|
auto limitedNodeList = DependencyManager::get<LimitedNodeList>();
|
||||||
}, [&urlData, limitedNodeList](const SharedNodePointer& octreeNode) {
|
limitedNodeList->eachMatchingNode([](const SharedNodePointer& node) {
|
||||||
auto octreeFilePacket = NLPacket::create(PacketType::OctreeFileReplacementFromUrl, urlData.size(), true);
|
return node->getType() == NodeType::EntityServer && node->getActiveSocket();
|
||||||
octreeFilePacket->write(urlData);
|
}, [&urlData, limitedNodeList](const SharedNodePointer& octreeNode) {
|
||||||
limitedNodeList->sendPacket(std::move(octreeFilePacket), *octreeNode);
|
auto octreeFilePacket = NLPacket::create(PacketType::OctreeFileReplacementFromUrl, urlData.size(), true);
|
||||||
});
|
octreeFilePacket->write(urlData);
|
||||||
auto addressManager = DependencyManager::get<AddressManager>();
|
limitedNodeList->sendPacket(std::move(octreeFilePacket), *octreeNode);
|
||||||
addressManager->handleLookupString(DOMAIN_SPAWNING_POINT);
|
});
|
||||||
QString newHomeAddress = addressManager->getHost() + DOMAIN_SPAWNING_POINT;
|
auto addressManager = DependencyManager::get<AddressManager>();
|
||||||
qCDebug(interfaceapp) << "Setting new home bookmark to: " << newHomeAddress;
|
addressManager->handleLookupString(DOMAIN_SPAWNING_POINT);
|
||||||
DependencyManager::get<LocationBookmarks>()->setHomeLocationToAddress(newHomeAddress);
|
QString newHomeAddress = addressManager->getHost() + DOMAIN_SPAWNING_POINT;
|
||||||
methodDetails = "SuccessfulRequestToReplaceContent";
|
qCDebug(interfaceapp) << "Setting new home bookmark to: " << newHomeAddress;
|
||||||
} else {
|
DependencyManager::get<LocationBookmarks>()->setHomeLocationToAddress(newHomeAddress);
|
||||||
methodDetails = "UserDeclinedToReplaceContent";
|
details = "SuccessfulRequestToReplaceContent";
|
||||||
}
|
} else {
|
||||||
|
details = "UserDeclinedToReplaceContent";
|
||||||
|
}
|
||||||
|
QJsonObject messageProperties = {
|
||||||
|
{ "status", details },
|
||||||
|
{ "content_set_url", url }
|
||||||
|
};
|
||||||
|
UserActivityLogger::getInstance().logAction("replace_domain_content", messageProperties);
|
||||||
|
QObject::disconnect(dig, &ModalDialogListener::response, this, nullptr);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
methodDetails = "ContentSetDidNotOriginateFromMarketplace";
|
methodDetails = "ContentSetDidNotOriginateFromMarketplace";
|
||||||
|
QJsonObject messageProperties = {
|
||||||
|
{ "status", methodDetails },
|
||||||
|
{ "content_set_url", url }
|
||||||
|
};
|
||||||
|
UserActivityLogger::getInstance().logAction("replace_domain_content", messageProperties);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
methodDetails = "UserDoesNotHavePermissionToReplaceContent";
|
methodDetails = "UserDoesNotHavePermissionToReplaceContent";
|
||||||
static const QString warningMessage = simpleWordWrap("The domain owner must enable 'Replace Content' "
|
static const QString warningMessage = simpleWordWrap("The domain owner must enable 'Replace Content' "
|
||||||
"permissions for you in this domain's server settings before you can continue.", MAX_CHARACTERS_PER_LINE);
|
"permissions for you in this domain's server settings before you can continue.", MAX_CHARACTERS_PER_LINE);
|
||||||
OffscreenUi::warning("You do not have permissions to replace domain content", warningMessage,
|
OffscreenUi::asyncWarning("You do not have permissions to replace domain content", warningMessage,
|
||||||
QMessageBox::Ok, QMessageBox::Ok);
|
QMessageBox::Ok, QMessageBox::Ok);
|
||||||
|
|
||||||
|
QJsonObject messageProperties = {
|
||||||
|
{ "status", methodDetails },
|
||||||
|
{ "content_set_url", url }
|
||||||
|
};
|
||||||
|
UserActivityLogger::getInstance().logAction("replace_domain_content", messageProperties);
|
||||||
}
|
}
|
||||||
QJsonObject messageProperties = {
|
|
||||||
{ "status", methodDetails },
|
|
||||||
{ "content_set_url", url }
|
|
||||||
};
|
|
||||||
UserActivityLogger::getInstance().logAction("replace_domain_content", messageProperties);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue