diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/settings.cpp | 33 | ||||
-rw-r--r-- | src/settings.hpp | 1 |
2 files changed, 19 insertions, 15 deletions
diff --git a/src/settings.cpp b/src/settings.cpp index e8a6bbf..23b2b89 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -22,7 +22,7 @@ SettingsManager::SettingsManager(const std::string &filename) try { m_ok = m_file.load_from_file(m_filename, Glib::KEY_FILE_KEEP_COMMENTS); } catch (const Glib::Error &e) { - fprintf(stderr, "error opening settings KeyFile: %s\n", e.what().c_str()); + spdlog::get("ui")->error("Error opening settings KeyFile: {}", e.what().c_str()); m_ok = false; } @@ -30,14 +30,16 @@ SettingsManager::SettingsManager(const std::string &filename) if (m_ok) ReadSettings(); } +// semi-misleading name... only handles keychain (token is a normal setting) +// DONT call AddSetting here void SettingsManager::HandleReadToken() { #ifdef WITH_KEYCHAIN - // Move to keychain if present + using namespace std::string_literals; - std::string token; - try { - token = m_file.get_string("discord", "token"); - } catch (...) {} + if (!m_settings.UseKeychain) return; + + // Move to keychain if present in .ini + std::string token = m_settings.DiscordToken; if (!token.empty()) { keychain::Error error {}; @@ -54,19 +56,18 @@ void SettingsManager::HandleReadToken() { if (error && error.type != keychain::ErrorType::NotFound) { spdlog::get("ui")->error("Keychain error reading token: {} ({})", error.message, error.code); } - -#else - AddSetting("discord", "token", "", &Settings::DiscordToken); #endif } void SettingsManager::HandleWriteToken() { #ifdef WITH_KEYCHAIN - keychain::Error error {}; + if (m_settings.UseKeychain) { + keychain::Error error {}; - keychain::setPassword(KeychainPackage, KeychainService, KeychainUser, m_settings.DiscordToken, error); - if (error) { - spdlog::get("ui")->error("Keychain error setting token: {}", error.message); + keychain::setPassword(KeychainPackage, KeychainService, KeychainUser, m_settings.DiscordToken, error); + if (error) { + spdlog::get("ui")->error("Keychain error setting token: {}", error.message); + } } #endif // else it will get enumerated over as part of definitions @@ -77,9 +78,11 @@ void SettingsManager::DefineSettings() { AddSetting("discord", "api_base", "https://discord.com/api/v9"s, &Settings::APIBaseURL); AddSetting("discord", "gateway", "wss://gateway.discord.gg/?v=9&encoding=json&compress=zlib-stream"s, &Settings::GatewayURL); + AddSetting("discord", "token", ""s, &Settings::DiscordToken); AddSetting("discord", "memory_db", false, &Settings::UseMemoryDB); AddSetting("discord", "prefetch", false, &Settings::Prefetch); AddSetting("discord", "autoconnect", false, &Settings::Autoconnect); + AddSetting("discord", "keychain", true, &Settings::UseKeychain); AddSetting("gui", "css", "main.css"s, &Settings::MainCSS); AddSetting("gui", "animated_guild_hover_only", true, &Settings::AnimatedGuildHoverOnly); @@ -118,8 +121,6 @@ void SettingsManager::DefineSettings() { #else AddSetting("voice", "vad", "gate"s, &Settings::VAD); #endif - - HandleReadToken(); } void SettingsManager::ReadSettings() { @@ -148,6 +149,8 @@ void SettingsManager::ReadSettings() { } } + HandleReadToken(); + m_read_settings = m_settings; } diff --git a/src/settings.hpp b/src/settings.hpp index d8b8caf..be9660e 100644 --- a/src/settings.hpp +++ b/src/settings.hpp @@ -13,6 +13,7 @@ public: bool UseMemoryDB; bool Prefetch; bool Autoconnect; + bool UseKeychain; // [gui] std::string MainCSS; |