Update map provider setting based on API key availability

This commit is contained in:
Dan Paulat 2023-04-27 22:50:27 -05:00
parent 9c5de8e9ee
commit 6c5ec2d996

View file

@ -23,6 +23,7 @@ static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
static boost::json::value ConvertSettingsToJson();
static void GenerateDefaultSettings();
static bool LoadSettings(const boost::json::object& settingsJson);
static void ValidateSettings();
static bool initialized_ {false};
static std::string settingsPath_ {};
@ -46,6 +47,7 @@ void Initialize()
initialized_ = true;
ReadSettings(settingsPath_);
ValidateSettings();
}
void ReadSettings(const std::string& settingsPath)
@ -137,6 +139,45 @@ static bool LoadSettings(const boost::json::object& settingsJson)
return jsonDirty;
}
static void ValidateSettings()
{
logger_->debug("Validating settings");
bool settingsChanged = false;
auto& generalSettings = general_settings();
// Validate map provider
std::string mapProvider = generalSettings.map_provider().GetValue();
std::string mapboxApiKey = generalSettings.mapbox_api_key().GetValue();
std::string maptilerApiKey = generalSettings.maptiler_api_key().GetValue();
if (mapProvider == "maptiler" && //
mapboxApiKey.size() > 1 && //
maptilerApiKey == "?")
{
logger_->info("Setting Map Provider to Mapbox based on API key settings");
generalSettings.map_provider().SetValue("mapbox");
settingsChanged = true;
}
else if (mapProvider == "mapbox" && //
maptilerApiKey.size() > 1 && //
mapboxApiKey == "?")
{
logger_->info(
"Setting Map Provider to MapTiler based on API key settings");
generalSettings.map_provider().SetValue("maptiler");
settingsChanged = true;
}
if (settingsChanged)
{
SaveSettings();
}
}
} // namespace SettingsManager
} // namespace manager
} // namespace qt