diff --git a/assets/webconfig/js/ui_utils.js b/assets/webconfig/js/ui_utils.js index 01f7a0a7..ab0a1256 100644 --- a/assets/webconfig/js/ui_utils.js +++ b/assets/webconfig/js/ui_utils.js @@ -89,11 +89,13 @@ function loadContent(event, forceRefresh) { var lastSelectedInstance = getStorage('lastSelectedInstance', false); - if (lastSelectedInstance && (lastSelectedInstance != window.currentHyperionInstance)) - if (typeof (window.serverInfo.instance[lastSelectedInstance].running) !== 'undefined' && window.serverInfo.instance[lastSelectedInstance].running) + if (lastSelectedInstance && (lastSelectedInstance != window.currentHyperionInstance)) { + if (window.serverInfo.instance[lastSelectedInstance] && window.serverInfo.instance[lastSelectedInstance].running) { instanceSwitch(lastSelectedInstance); - else + } else { removeStorage('lastSelectedInstance', false); + } + } if (typeof event != "undefined") { tag = event.currentTarget.hash; @@ -132,13 +134,13 @@ function updateHyperionInstanceListing() { var currInstMarker = (data[key].instance == window.currentHyperionInstance) ? "component-on" : ""; var html = '
  • \ - \ -
    \ - \ - '+ data[key].friendly_name + ' \ -
    \ -
    \ -
  • ' + \ +
    \ + \ + '+ data[key].friendly_name + ' \ +
    \ +
    \ + ' if (data.length - 1 > key) html += '
  • ' @@ -181,7 +183,6 @@ function initLanguageSelection() { langText = availLangText[langIdx]; } } - $('#language-select').prop('title', langText); $("#language-select").val(langIdx); $("#language-select").selectpicker("refresh"); diff --git a/include/hyperion/SettingsManager.h b/include/hyperion/SettingsManager.h index 954c0eb5..027d0ece 100644 --- a/include/hyperion/SettingsManager.h +++ b/include/hyperion/SettingsManager.h @@ -42,7 +42,7 @@ public: /// @brief get the full settings object of this instance (with global settings) /// @return The requested json /// - const QJsonObject & getSettings() const { return _qconfig; } + QJsonObject getSettings() const; signals: /// diff --git a/libsrc/hyperion/SettingsManager.cpp b/libsrc/hyperion/SettingsManager.cpp index 7ced9b8c..b21c4c96 100644 --- a/libsrc/hyperion/SettingsManager.cpp +++ b/libsrc/hyperion/SettingsManager.cpp @@ -114,6 +114,25 @@ QJsonDocument SettingsManager::getSetting(settings::type type) const return _sTable->getSettingsRecord(settings::typeToString(type)); } +QJsonObject SettingsManager::getSettings() const +{ + QJsonObject config; + for(const auto & key : _qconfig.keys()) + { + //Read all records from database to ensure that global settings are read across instances + QJsonDocument doc = _sTable->getSettingsRecord(key); + if(doc.isArray()) + { + config.insert(key, doc.array()); + } + else + { + config.insert(key, doc.object()); + } + } + return config; +} + bool SettingsManager::saveSettings(QJsonObject config, bool correct) { // optional data upgrades e.g. imported legacy/older configs