mirror of
https://github.com/transmission/transmission.git
synced 2025-12-19 18:08:31 +00:00
refactor: simplify tr_sessionLoadSettings() args (#7935)
* refactor: remove unused appname arg from tr_sessionLoadSettings() * refactor: swap order of arguments to tr_sessionLoadSettings() so way the optional arg can go at the end
This commit is contained in:
@@ -326,7 +326,7 @@ int tr_main(int argc, char* argv[])
|
||||
|
||||
/* load the defaults from config file + libtransmission defaults */
|
||||
auto const config_dir = getConfigDir(argc, (char const**)argv);
|
||||
auto settings = tr_sessionLoadSettings(nullptr, config_dir.c_str(), MyConfigName);
|
||||
auto settings = tr_sessionLoadSettings(config_dir);
|
||||
|
||||
/* the command line overrides defaults */
|
||||
if (parseCommandLine(&settings, argc, (char const**)argv) != 0)
|
||||
|
||||
@@ -402,7 +402,7 @@ tr_variant load_settings(char const* config_dir)
|
||||
app_defaults_map.try_emplace(TR_KEY_start_paused, false);
|
||||
app_defaults_map.try_emplace(TR_KEY_pidfile, tr_variant::unmanaged_string(""sv));
|
||||
auto const app_defaults = tr_variant{ std::move(app_defaults_map) };
|
||||
return tr_sessionLoadSettings(&app_defaults, config_dir, MyName);
|
||||
return tr_sessionLoadSettings(config_dir, &app_defaults);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -108,7 +108,7 @@ tr_variant& getPrefs()
|
||||
if (!settings.has_value())
|
||||
{
|
||||
auto const app_defaults = get_default_app_settings();
|
||||
settings.merge(tr_sessionLoadSettings(&app_defaults, gl_confdir.c_str(), nullptr));
|
||||
settings.merge(tr_sessionLoadSettings(gl_confdir, &app_defaults));
|
||||
ensure_sound_cmd_is_a_list(&settings);
|
||||
}
|
||||
|
||||
|
||||
@@ -479,23 +479,21 @@ tr_variant tr_sessionGetSettings(tr_session const* session)
|
||||
return settings;
|
||||
}
|
||||
|
||||
tr_variant tr_sessionLoadSettings(tr_variant const* app_defaults, char const* config_dir, char const* app_name)
|
||||
tr_variant tr_sessionLoadSettings(std::string_view const config_dir, tr_variant const* const app_defaults)
|
||||
{
|
||||
// start with session defaults...
|
||||
auto settings = tr_sessionGetDefaultSettings();
|
||||
|
||||
// if app defaults are provided, override libtransmission defaults
|
||||
// ...app defaults (if provided) override session defaults...
|
||||
if (app_defaults != nullptr && app_defaults->holds_alternative<tr_variant::Map>())
|
||||
{
|
||||
settings.merge(*app_defaults);
|
||||
}
|
||||
|
||||
// if a settings file exists, use it to override the defaults
|
||||
if (auto const filename = fmt::format(
|
||||
"{:s}/settings.json",
|
||||
config_dir != nullptr ? config_dir : tr_getDefaultConfigDir(app_name));
|
||||
tr_sys_path_exists(filename))
|
||||
// ...and settings.json (if available) override the defaults
|
||||
if (auto const filename = fmt::format("{:s}/settings.json", config_dir); tr_sys_path_exists(filename))
|
||||
{
|
||||
if (auto file_settings = tr_variant_serde::json().parse_file(filename); file_settings)
|
||||
if (auto const file_settings = tr_variant_serde::json().parse_file(filename))
|
||||
{
|
||||
settings.merge(*file_settings);
|
||||
}
|
||||
@@ -563,7 +561,7 @@ tr_session* tr_sessionInit(char const* config_dir, bool message_queueing_enabled
|
||||
// - client settings
|
||||
// - previous session's values in settings.json
|
||||
// - hardcoded defaults
|
||||
auto settings = tr_sessionLoadSettings(nullptr, config_dir, nullptr);
|
||||
auto settings = tr_sessionLoadSettings(config_dir);
|
||||
settings.merge(client_settings);
|
||||
|
||||
// if logging is desired, start it now before doing more work
|
||||
|
||||
@@ -179,15 +179,14 @@ tr_variant tr_sessionGetSettings(tr_session const* session);
|
||||
*
|
||||
* TODO: if we ever make libtransmissionapp, this would go there.
|
||||
*
|
||||
* @param app_defaults tr_variant containing the app defaults
|
||||
* @param config_dir the configuration directory to find settings.json
|
||||
* @param app_name if config_dir is empty, app_name is used to find the default dir.
|
||||
* @param app_defaults optional tr_variant containing the app-specific defaults
|
||||
* @return the loaded settings
|
||||
* @see `tr_sessionGetDefaultSettings()`
|
||||
* @see `tr_sessionInit()`
|
||||
* @see `tr_sessionSaveSettings()`
|
||||
*/
|
||||
tr_variant tr_sessionLoadSettings(tr_variant const* app_defaults, char const* config_dir, char const* app_name);
|
||||
[[nodiscard]] tr_variant tr_sessionLoadSettings(std::string_view config_dir, tr_variant const* app_defaults = nullptr);
|
||||
|
||||
/**
|
||||
* Add the session's configuration settings to the benc dictionary
|
||||
|
||||
@@ -238,7 +238,7 @@ Prefs::Prefs(QString config_dir)
|
||||
#endif
|
||||
|
||||
auto const app_defaults = get_default_app_settings();
|
||||
auto settings = tr_sessionLoadSettings(&app_defaults, config_dir_.toUtf8().constData(), nullptr);
|
||||
auto settings = tr_sessionLoadSettings(config_dir_.toStdString(), &app_defaults);
|
||||
ensureSoundCommandIsAList(&settings);
|
||||
|
||||
for (int i = 0; i < PREFS_COUNT; ++i)
|
||||
|
||||
@@ -371,7 +371,7 @@ void Session::start()
|
||||
}
|
||||
else
|
||||
{
|
||||
auto const settings = tr_sessionLoadSettings(nullptr, config_dir_.toUtf8().constData(), "qt");
|
||||
auto const settings = tr_sessionLoadSettings(config_dir_.toStdString());
|
||||
session_ = tr_sessionInit(config_dir_.toUtf8().constData(), true, settings);
|
||||
|
||||
rpc_.start(session_);
|
||||
|
||||
Reference in New Issue
Block a user