Fix label support in DS settings and add automatic domain generation:

This commit is contained in:
Ryan Huffman 2017-10-25 20:27:42 -07:00
parent 92aa66cdd7
commit 1bb778c21f
4 changed files with 102 additions and 41 deletions

View file

@ -1,6 +1,12 @@
{
"version": 1.8,
"settings": [
{
"name": "label",
"label": "Label",
"settings": [
]
},
{
"name": "metaverse",
"label": "Metaverse / Networking",

View file

@ -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() %>
<% } %>

View file

@ -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;
}

View file

@ -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();
}