mirror of
https://github.com/overte-org/overte.git
synced 2025-08-04 04:23:33 +02:00
Fix label support in DS settings and add automatic domain generation:
This commit is contained in:
parent
92aa66cdd7
commit
1bb778c21f
4 changed files with 102 additions and 41 deletions
|
@ -1,6 +1,12 @@
|
||||||
{
|
{
|
||||||
"version": 1.8,
|
"version": 1.8,
|
||||||
"settings": [
|
"settings": [
|
||||||
|
{
|
||||||
|
"name": "label",
|
||||||
|
"label": "Label",
|
||||||
|
"settings": [
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "metaverse",
|
"name": "metaverse",
|
||||||
"label": "Metaverse / Networking",
|
"label": "Metaverse / Networking",
|
||||||
|
|
|
@ -25,14 +25,14 @@
|
||||||
<ul class="nav nav-pills nav-stacked">
|
<ul class="nav nav-pills nav-stacked">
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<button id="advanced-toggle-button" class="btn btn-info advanced-toggle">Show ssadvanced</button>
|
<button id="advanced-toggle-button" class="btn btn-info advanced-toggle">Show advanced</button>
|
||||||
<button class="btn btn-success save-button" disabled>Save</button>
|
<button class="btn btn-success save-button" disabled>Save</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-9 col-sm-9 col-xs-12">
|
<div class="col-md-9 col-sm-9 col-xs-12">
|
||||||
<div id="xs-advanced-container" class="col-xs-12 hidden-sm hidden-md hidden-lg">
|
<div id="xs-advanced-container" class="col-xs-12 hidden-sm hidden-md hidden-lg">
|
||||||
<button id="advanced-toggle-button-xs" class="btn btn-info advanced-toggle">Show ssadvanced</button>
|
<button id="advanced-toggle-button-xs" class="btn btn-info advanced-toggle">Show advanced</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-xs-12">
|
<div class="col-xs-12">
|
||||||
|
@ -43,7 +43,7 @@
|
||||||
<% _.each(descriptions, function(group){ %>
|
<% _.each(descriptions, function(group){ %>
|
||||||
<% var settings = _.partition(group.settings, function(value, index) { return !value.deprecated })[0] %>
|
<% var settings = _.partition(group.settings, function(value, index) { return !value.deprecated })[0] %>
|
||||||
<% split_settings = _.partition(settings, function(value, index) { return !value.advanced }) %>
|
<% split_settings = _.partition(settings, function(value, index) { return !value.advanced }) %>
|
||||||
<% isAdvanced = _.isEmpty(split_settings[0]) %>
|
<% isAdvanced = _.isEmpty(split_settings[0]) && !_.isEmpty(split_settings[1]) %>
|
||||||
<% if (isAdvanced) { %>
|
<% if (isAdvanced) { %>
|
||||||
<% $("a[href=#" + group.name + "]").addClass('advanced-setting').hide() %>
|
<% $("a[href=#" + group.name + "]").addClass('advanced-setting').hide() %>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
|
@ -493,8 +493,10 @@ function setupHFAccountButton() {
|
||||||
var el;
|
var el;
|
||||||
|
|
||||||
if (hasAccessToken) {
|
if (hasAccessToken) {
|
||||||
el = "<span class='account-connected-header'>High Fidelity Account Connected</span>";
|
el = "<p>";
|
||||||
|
el += "<span class='account-connected-header'>High Fidelity Account Connected</span>";
|
||||||
el += "<button id='" + Settings.DISCONNECT_ACCOUNT_BTN_ID + "' class='btn'>Disconnect</button>";
|
el += "<button id='" + Settings.DISCONNECT_ACCOUNT_BTN_ID + "' class='btn'>Disconnect</button>";
|
||||||
|
el += "</p>";
|
||||||
el = $(el);
|
el = $(el);
|
||||||
} else {
|
} else {
|
||||||
// setup an object for the settings we want our button to have
|
// setup an object for the settings we want our button to have
|
||||||
|
@ -563,14 +565,8 @@ function prepareAccessTokenPrompt() {
|
||||||
|
|
||||||
console.log("Prepping access token prompt");
|
console.log("Prepping access token prompt");
|
||||||
|
|
||||||
// if the user doesn't have a domain ID set, give them the option to create one now
|
swal.close();
|
||||||
if (!Settings.data.values.metaverse.id) {
|
saveSettings();
|
||||||
// show domain ID selection alert
|
|
||||||
showDomainIDChoiceAlert();
|
|
||||||
} else {
|
|
||||||
swal.close();
|
|
||||||
saveSettings();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -633,6 +629,8 @@ function showDomainCreationAlert(justConnected) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//function createDomainID()
|
||||||
|
|
||||||
function createNewDomainID(description, justConnected) {
|
function createNewDomainID(description, justConnected) {
|
||||||
// get the JSON object ready that we'll use to create a new domain
|
// get the JSON object ready that we'll use to create a new domain
|
||||||
var domainJSON = {
|
var domainJSON = {
|
||||||
|
@ -732,13 +730,14 @@ function domainIDIsSet() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function setupDomainLabelSetting() {
|
function setupDomainLabelSetting() {
|
||||||
if (!domainIDIsSet()) {
|
if (!domainIDIsSet() || !accessTokenIsSet()) {
|
||||||
|
$(".panel#label").hide();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var html = "<div>"
|
var html = "<div>"
|
||||||
html += "Specify a label for your domain";
|
html += "Specify a label for your domain";
|
||||||
html += "<input id='network-label' type='text' class='form-control'></input>";
|
html += "<input id='network-label' type='text' class='form-control domain-loading-hide' disabled></input>";
|
||||||
html += "</div>";
|
html += "</div>";
|
||||||
|
|
||||||
var link = $("<a href='#'>Edit</a>");
|
var link = $("<a href='#'>Edit</a>");
|
||||||
|
@ -747,9 +746,9 @@ function setupDomainLabelSetting() {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
|
|
||||||
var label = "temp";
|
var label = "temp";
|
||||||
var modal_body = "<div class='form-group'>";
|
var modal_body = "<div class='form-inline'>";
|
||||||
modal_body += "<label class='control-label'>Label</label>";
|
modal_body += "<label class='control-label'>Label</label>";
|
||||||
modal_body += "<input type='text' id='domain-label-input' class='form-control' value='" + DomainInfo.label + "'>";
|
modal_body += "<input type='text' id='domain-label-input' class='form-control' value='" + DomainInfo.description + "'>";
|
||||||
modal_body += "<div id='domain-label-error' class='error-message' data-property='label'></div>";
|
modal_body += "<div id='domain-label-error' class='error-message' data-property='label'></div>";
|
||||||
modal_body += "</div>";
|
modal_body += "</div>";
|
||||||
|
|
||||||
|
@ -770,7 +769,7 @@ function setupDomainLabelSetting() {
|
||||||
className: 'edit-label-save-btn btn btn-primary',
|
className: 'edit-label-save-btn btn btn-primary',
|
||||||
callback: function() {
|
callback: function() {
|
||||||
var data = {
|
var data = {
|
||||||
label: $('#domain-label-input').val()
|
description: $('#domain-label-input').val()
|
||||||
};
|
};
|
||||||
|
|
||||||
$('.edit-label-cancel-btn').attr('disabled', 'disabled');
|
$('.edit-label-cancel-btn').attr('disabled', 'disabled');
|
||||||
|
@ -817,8 +816,15 @@ function setupDomainLabelSetting() {
|
||||||
|
|
||||||
html = $(html).append(link);
|
html = $(html).append(link);
|
||||||
|
|
||||||
var autoNetworkingEl = $('div[data-keypath="metaverse.automatic_networking"]');
|
var spinner = createDomainSpinner();
|
||||||
autoNetworkingEl.after(html);
|
var errorEl = createDomainLoadingError("Error loading label.");
|
||||||
|
|
||||||
|
html.append(spinner);
|
||||||
|
html.append(errorEl);
|
||||||
|
|
||||||
|
$('div#label .panel-body').append(errorEl);
|
||||||
|
$('div#label .panel-body').append(html);
|
||||||
|
console.log($('div#label .panel-body'));
|
||||||
}
|
}
|
||||||
|
|
||||||
function setupDomainNetworkingSettings() {
|
function setupDomainNetworkingSettings() {
|
||||||
|
@ -1032,6 +1038,7 @@ function placeTableRow(name, path, isTemporary, placeID) {
|
||||||
sendUpdatePlaceRequest(
|
sendUpdatePlaceRequest(
|
||||||
placeID,
|
placeID,
|
||||||
'',
|
'',
|
||||||
|
null,
|
||||||
true,
|
true,
|
||||||
function() {
|
function() {
|
||||||
reloadDomainInfo();
|
reloadDomainInfo();
|
||||||
|
@ -1109,12 +1116,14 @@ function reloadDomainInfo() {
|
||||||
var row = $("<tr> <td></td> <td></td> <td class='buttons'><a href='javascript:void(0);' class='place-add glyphicon glyphicon-plus'></a></td> </tr>");
|
var row = $("<tr> <td></td> <td></td> <td class='buttons'><a href='javascript:void(0);' class='place-add glyphicon glyphicon-plus'></a></td> </tr>");
|
||||||
|
|
||||||
row.find(".place-add").click(function(ev) {
|
row.find(".place-add").click(function(ev) {
|
||||||
chooseFromHighFidelityPlaces(null, function() {
|
chooseFromHighFidelityPlaces(Settings.initialValues.metaverse.access_token, null, function() {
|
||||||
reloadDomainInfo();
|
reloadDomainInfo();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#network-label').val(data.domain.label);
|
var label = data.domain.description;
|
||||||
|
label = label === null ? '' : label;
|
||||||
|
$('#network-label').val(label);
|
||||||
var autoNetworkingSetting = Settings.data.values.metaverse.automatic_networking;
|
var autoNetworkingSetting = Settings.data.values.metaverse.automatic_networking;
|
||||||
var address = data.domain.network_address === null ? "" : data.domain.network_address;
|
var address = data.domain.network_address === null ? "" : data.domain.network_address;
|
||||||
var port = data.domain.network_port === null ? "" : data.domain.network_port;
|
var port = data.domain.network_port === null ? "" : data.domain.network_port;
|
||||||
|
@ -1152,11 +1161,30 @@ function showDomainSettingsModal(clickedButton) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendUpdatePlaceRequest(id, path, clearDomainID, onSuccess, onError) {
|
function sendCreateDomainRequest(onSuccess, onError) {
|
||||||
|
$.ajax({
|
||||||
|
url: '/api/domains',
|
||||||
|
type: 'POST',
|
||||||
|
data: { label: "TEST" },
|
||||||
|
success: function(data) {
|
||||||
|
//if (data.status === 'success') {
|
||||||
|
onSuccess(data.domain_id);
|
||||||
|
//} else {
|
||||||
|
//onError();
|
||||||
|
//}
|
||||||
|
},
|
||||||
|
error: onError
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function sendUpdatePlaceRequest(id, path, domainID, clearDomainID, onSuccess, onError) {
|
||||||
var data = {
|
var data = {
|
||||||
place_id: id,
|
place_id: id,
|
||||||
path: path
|
path: path
|
||||||
};
|
};
|
||||||
|
if (domainID) {
|
||||||
|
data.domain_id = domainID;
|
||||||
|
}
|
||||||
if (clearDomainID) {
|
if (clearDomainID) {
|
||||||
data.domain_id = null;
|
data.domain_id = null;
|
||||||
}
|
}
|
||||||
|
@ -1201,6 +1229,7 @@ function editHighFidelityPlace(placeID, name, path) {
|
||||||
sendUpdatePlaceRequest(
|
sendUpdatePlaceRequest(
|
||||||
placeID,
|
placeID,
|
||||||
placePath,
|
placePath,
|
||||||
|
null,
|
||||||
false,
|
false,
|
||||||
function() {
|
function() {
|
||||||
dialog.modal('hide')
|
dialog.modal('hide')
|
||||||
|
@ -1239,8 +1268,8 @@ function showLoadingDialog() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function chooseFromHighFidelityPlaces(forcePathTo, onSuccessfullyAdded) {
|
function chooseFromHighFidelityPlaces(accessToken, forcePathTo, onSuccessfullyAdded) {
|
||||||
if (Settings.initialValues.metaverse.access_token) {
|
if (accessToken) {
|
||||||
|
|
||||||
var loadingDialog = showLoadingDialog();
|
var loadingDialog = showLoadingDialog();
|
||||||
|
|
||||||
|
@ -1313,23 +1342,43 @@ function chooseFromHighFidelityPlaces(forcePathTo, onSuccessfullyAdded) {
|
||||||
$('.add-place-confirm-button').html(Strings.ADD_PLACE_CONFIRM_BUTTON_PENDING);
|
$('.add-place-confirm-button').html(Strings.ADD_PLACE_CONFIRM_BUTTON_PENDING);
|
||||||
$('.add-place-cancel-button').attr('disabled', 'disabled');
|
$('.add-place-cancel-button').attr('disabled', 'disabled');
|
||||||
|
|
||||||
sendUpdatePlaceRequest(
|
function finishSettingUpPlace(domainID) {
|
||||||
placeID,
|
sendUpdatePlaceRequest(
|
||||||
placePath,
|
placeID,
|
||||||
false,
|
placePath,
|
||||||
function(data) {
|
domainID,
|
||||||
dialog.modal('hide')
|
false,
|
||||||
if (onSuccessfullyAdded) {
|
function(data) {
|
||||||
onSuccessfullyAdded();
|
$(Settings.DOMAIN_ID_SELECTOR).val(domainID).change();
|
||||||
|
dialog.modal('hide')
|
||||||
|
if (onSuccessfullyAdded) {
|
||||||
|
onSuccessfullyAdded(places_by_id[placeID].name);
|
||||||
|
}
|
||||||
|
saveSettings();
|
||||||
|
},
|
||||||
|
function(data) {
|
||||||
|
$('.add-place-confirm-button').removeAttr('disabled');
|
||||||
|
$('.add-place-confirm-button').html(Strings.ADD_PLACE_CONFIRM_BUTTON);
|
||||||
|
$('.add-place-cancel-button').removeAttr('disabled');
|
||||||
|
bootbox.alert(Strings.ADD_PLACE_UNKNOWN_ERROR);
|
||||||
}
|
}
|
||||||
},
|
);
|
||||||
function(data) {
|
}
|
||||||
|
|
||||||
|
if (domainIDIsSet()) {
|
||||||
|
finishSettingUpPlace();
|
||||||
|
} else {
|
||||||
|
sendCreateDomainRequest(function(domainID) {
|
||||||
|
finishSettingUpPlace(domainID);
|
||||||
|
}, function() {
|
||||||
$('.add-place-confirm-button').removeAttr('disabled');
|
$('.add-place-confirm-button').removeAttr('disabled');
|
||||||
$('.add-place-confirm-button').html(Strings.ADD_PLACE_CONFIRM_BUTTON);
|
$('.add-place-confirm-button').html(Strings.ADD_PLACE_CONFIRM_BUTTON);
|
||||||
$('.add-place-cancel-button').removeAttr('disabled');
|
$('.add-place-cancel-button').removeAttr('disabled');
|
||||||
bootbox.alert(Strings.ADD_PLACE_UNKNOWN_ERROR);
|
bootbox.alert(Strings.ADD_PLACE_UNKNOWN_ERROR);
|
||||||
}
|
bootbox.alert("FAIL");
|
||||||
);
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,6 +56,12 @@ const QString ICE_SERVER_DEFAULT_HOSTNAME = "ice.highfidelity.com";
|
||||||
const QString ICE_SERVER_DEFAULT_HOSTNAME = "dev-ice.highfidelity.com";
|
const QString ICE_SERVER_DEFAULT_HOSTNAME = "dev-ice.highfidelity.com";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
bool forwardMetaverseAPIRequest(HTTPConnection* connection, const QString metaversePath,
|
||||||
|
std::vector<std::pair<QString, QString>> dataWhitelist) {
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
DomainServer::DomainServer(int argc, char* argv[]) :
|
DomainServer::DomainServer(int argc, char* argv[]) :
|
||||||
QCoreApplication(argc, argv),
|
QCoreApplication(argc, argv),
|
||||||
_gatekeeper(this),
|
_gatekeeper(this),
|
||||||
|
@ -2069,16 +2075,16 @@ bool DomainServer::handleHTTPRequest(HTTPConnection* connection, const QUrl& url
|
||||||
|
|
||||||
auto params = connection->parseUrlEncodedForm();
|
auto params = connection->parseUrlEncodedForm();
|
||||||
|
|
||||||
auto it = params.find("private_description");
|
auto it = params.find("label");
|
||||||
if (it == params.end()) {
|
if (it == params.end()) {
|
||||||
connection->respond(HTTPConnection::StatusCode400);
|
connection->respond(HTTPConnection::StatusCode400, "Missing label");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonObject root {
|
QJsonObject root {
|
||||||
{"access_token", accessTokenVariant->toString()},
|
{"access_token", accessTokenVariant->toString()},
|
||||||
{"domain",
|
{"domain",
|
||||||
QJsonObject({ { "private_description", it.value() } })
|
QJsonObject({ { "description", it.value() } })
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
QJsonDocument doc { root };
|
QJsonDocument doc { root };
|
||||||
|
@ -2156,9 +2162,9 @@ bool DomainServer::handleHTTPRequest(HTTPConnection* connection, const QUrl& url
|
||||||
domainObj["network_port"] = port.isEmpty() ? QJsonValue::Null : QJsonValue(port);
|
domainObj["network_port"] = port.isEmpty() ? QJsonValue::Null : QJsonValue(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
it = params.find("private_description");
|
it = params.find("description");
|
||||||
if (it != params.end()) {
|
if (it != params.end()) {
|
||||||
domainObj["private_description"] = it.value();
|
domainObj["description"] = it.value();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue