diff --git a/src/client/component/config.cpp b/src/client/component/config.cpp index ef2b08dd..4c544c98 100644 --- a/src/client/component/config.cpp +++ b/src/client/component/config.cpp @@ -66,7 +66,7 @@ namespace config return value; } - nlohmann::json get_default_value(const std::string& key) + std::optional get_default_value(const std::string& key) { const auto iter = field_definitions.find(key); if (iter == field_definitions.end()) @@ -74,7 +74,7 @@ namespace config return {}; } - return iter->second.default_value; + return {iter->second.default_value}; } nlohmann::json get_raw(const std::string& key) @@ -82,7 +82,13 @@ namespace config const auto cfg = read_config(); if (!cfg.is_object() || !cfg.contains(key)) { - return get_default_value(key); + const auto default_value = get_default_value(key); + if (default_value.has_value()) + { + return default_value.value(); + } + + return {}; } return validate_config_field(key, cfg[key]); diff --git a/src/client/component/config.hpp b/src/client/component/config.hpp index efcee303..57cbb339 100644 --- a/src/client/component/config.hpp +++ b/src/client/component/config.hpp @@ -9,7 +9,7 @@ namespace config void write_config(const nlohmann::json& json); nlohmann::json validate_config_field(const std::string& key, const field_value& value); - nlohmann::json get_default_value(const std::string& key); + std::optional get_default_value(const std::string& key); template std::optional get(const std::string& key) @@ -17,6 +17,12 @@ namespace config const auto cfg = read_config(); if (!cfg.is_object() || !cfg.contains(key)) { + const auto default_value = get_default_value(key); + if (default_value.has_value()) + { + return {default_value.value()}; + } + return {}; }