mirror of
https://github.com/lubosz/overte.git
synced 2025-04-07 19:22:39 +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,
|
||||
"settings": [
|
||||
{
|
||||
"name": "label",
|
||||
"label": "Label",
|
||||
"settings": [
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "metaverse",
|
||||
"label": "Metaverse / Networking",
|
||||
|
|
|
@ -25,14 +25,14 @@
|
|||
<ul class="nav nav-pills nav-stacked">
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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">
|
||||
<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 class="col-xs-12">
|
||||
|
@ -43,7 +43,7 @@
|
|||
<% _.each(descriptions, function(group){ %>
|
||||
<% var settings = _.partition(group.settings, function(value, index) { return !value.deprecated })[0] %>
|
||||
<% 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) { %>
|
||||
<% $("a[href=#" + group.name + "]").addClass('advanced-setting').hide() %>
|
||||
<% } %>
|
||||
|
|
|
@ -493,8 +493,10 @@ function setupHFAccountButton() {
|
|||
var el;
|
||||
|
||||
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 += "</p>";
|
||||
el = $(el);
|
||||
} else {
|
||||
// setup an object for the settings we want our button to have
|
||||
|
@ -563,14 +565,8 @@ function prepareAccessTokenPrompt() {
|
|||
|
||||
console.log("Prepping access token prompt");
|
||||
|
||||
// if the user doesn't have a domain ID set, give them the option to create one now
|
||||
if (!Settings.data.values.metaverse.id) {
|
||||
// show domain ID selection alert
|
||||
showDomainIDChoiceAlert();
|
||||
} else {
|
||||
swal.close();
|
||||
saveSettings();
|
||||
}
|
||||
swal.close();
|
||||
saveSettings();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -633,6 +629,8 @@ function showDomainCreationAlert(justConnected) {
|
|||
});
|
||||
}
|
||||
|
||||
//function createDomainID()
|
||||
|
||||
function createNewDomainID(description, justConnected) {
|
||||
// get the JSON object ready that we'll use to create a new domain
|
||||
var domainJSON = {
|
||||
|
@ -732,13 +730,14 @@ function domainIDIsSet() {
|
|||
}
|
||||
|
||||
function setupDomainLabelSetting() {
|
||||
if (!domainIDIsSet()) {
|
||||
if (!domainIDIsSet() || !accessTokenIsSet()) {
|
||||
$(".panel#label").hide();
|
||||
return;
|
||||
}
|
||||
|
||||
var html = "<div>"
|
||||
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>";
|
||||
|
||||
var link = $("<a href='#'>Edit</a>");
|
||||
|
@ -747,9 +746,9 @@ function setupDomainLabelSetting() {
|
|||
ev.preventDefault();
|
||||
|
||||
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 += "<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>";
|
||||
|
||||
|
@ -770,7 +769,7 @@ function setupDomainLabelSetting() {
|
|||
className: 'edit-label-save-btn btn btn-primary',
|
||||
callback: function() {
|
||||
var data = {
|
||||
label: $('#domain-label-input').val()
|
||||
description: $('#domain-label-input').val()
|
||||
};
|
||||
|
||||
$('.edit-label-cancel-btn').attr('disabled', 'disabled');
|
||||
|
@ -817,8 +816,15 @@ function setupDomainLabelSetting() {
|
|||
|
||||
html = $(html).append(link);
|
||||
|
||||
var autoNetworkingEl = $('div[data-keypath="metaverse.automatic_networking"]');
|
||||
autoNetworkingEl.after(html);
|
||||
var spinner = createDomainSpinner();
|
||||
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() {
|
||||
|
@ -1032,6 +1038,7 @@ function placeTableRow(name, path, isTemporary, placeID) {
|
|||
sendUpdatePlaceRequest(
|
||||
placeID,
|
||||
'',
|
||||
null,
|
||||
true,
|
||||
function() {
|
||||
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>");
|
||||
|
||||
row.find(".place-add").click(function(ev) {
|
||||
chooseFromHighFidelityPlaces(null, function() {
|
||||
chooseFromHighFidelityPlaces(Settings.initialValues.metaverse.access_token, null, function() {
|
||||
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 address = data.domain.network_address === null ? "" : data.domain.network_address;
|
||||
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 = {
|
||||
place_id: id,
|
||||
path: path
|
||||
};
|
||||
if (domainID) {
|
||||
data.domain_id = domainID;
|
||||
}
|
||||
if (clearDomainID) {
|
||||
data.domain_id = null;
|
||||
}
|
||||
|
@ -1201,6 +1229,7 @@ function editHighFidelityPlace(placeID, name, path) {
|
|||
sendUpdatePlaceRequest(
|
||||
placeID,
|
||||
placePath,
|
||||
null,
|
||||
false,
|
||||
function() {
|
||||
dialog.modal('hide')
|
||||
|
@ -1239,8 +1268,8 @@ function showLoadingDialog() {
|
|||
});
|
||||
}
|
||||
|
||||
function chooseFromHighFidelityPlaces(forcePathTo, onSuccessfullyAdded) {
|
||||
if (Settings.initialValues.metaverse.access_token) {
|
||||
function chooseFromHighFidelityPlaces(accessToken, forcePathTo, onSuccessfullyAdded) {
|
||||
if (accessToken) {
|
||||
|
||||
var loadingDialog = showLoadingDialog();
|
||||
|
||||
|
@ -1313,23 +1342,43 @@ function chooseFromHighFidelityPlaces(forcePathTo, onSuccessfullyAdded) {
|
|||
$('.add-place-confirm-button').html(Strings.ADD_PLACE_CONFIRM_BUTTON_PENDING);
|
||||
$('.add-place-cancel-button').attr('disabled', 'disabled');
|
||||
|
||||
sendUpdatePlaceRequest(
|
||||
placeID,
|
||||
placePath,
|
||||
false,
|
||||
function(data) {
|
||||
dialog.modal('hide')
|
||||
if (onSuccessfullyAdded) {
|
||||
onSuccessfullyAdded();
|
||||
function finishSettingUpPlace(domainID) {
|
||||
sendUpdatePlaceRequest(
|
||||
placeID,
|
||||
placePath,
|
||||
domainID,
|
||||
false,
|
||||
function(data) {
|
||||
$(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').html(Strings.ADD_PLACE_CONFIRM_BUTTON);
|
||||
$('.add-place-cancel-button').removeAttr('disabled');
|
||||
bootbox.alert(Strings.ADD_PLACE_UNKNOWN_ERROR);
|
||||
}
|
||||
);
|
||||
bootbox.alert("FAIL");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
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";
|
||||
#endif
|
||||
|
||||
bool forwardMetaverseAPIRequest(HTTPConnection* connection, const QString metaversePath,
|
||||
std::vector<std::pair<QString, QString>> dataWhitelist) {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
DomainServer::DomainServer(int argc, char* argv[]) :
|
||||
QCoreApplication(argc, argv),
|
||||
_gatekeeper(this),
|
||||
|
@ -2069,16 +2075,16 @@ bool DomainServer::handleHTTPRequest(HTTPConnection* connection, const QUrl& url
|
|||
|
||||
auto params = connection->parseUrlEncodedForm();
|
||||
|
||||
auto it = params.find("private_description");
|
||||
auto it = params.find("label");
|
||||
if (it == params.end()) {
|
||||
connection->respond(HTTPConnection::StatusCode400);
|
||||
connection->respond(HTTPConnection::StatusCode400, "Missing label");
|
||||
return true;
|
||||
}
|
||||
|
||||
QJsonObject root {
|
||||
{"access_token", accessTokenVariant->toString()},
|
||||
{"domain",
|
||||
QJsonObject({ { "private_description", it.value() } })
|
||||
QJsonObject({ { "description", it.value() } })
|
||||
}
|
||||
};
|
||||
QJsonDocument doc { root };
|
||||
|
@ -2156,9 +2162,9 @@ bool DomainServer::handleHTTPRequest(HTTPConnection* connection, const QUrl& url
|
|||
domainObj["network_port"] = port.isEmpty() ? QJsonValue::Null : QJsonValue(port);
|
||||
}
|
||||
|
||||
it = params.find("private_description");
|
||||
it = params.find("description");
|
||||
if (it != params.end()) {
|
||||
domainObj["private_description"] = it.value();
|
||||
domainObj["description"] = it.value();
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue