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, "version": 1.8,
"settings": [ "settings": [
{
"name": "label",
"label": "Label",
"settings": [
]
},
{ {
"name": "metaverse", "name": "metaverse",
"label": "Metaverse / Networking", "label": "Metaverse / Networking",

View file

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

View file

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

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