From cbaaf6f75f216cf170c073999ab3f99bcdad17b9 Mon Sep 17 00:00:00 2001 From: 21pages Date: Wed, 14 May 2025 13:36:44 +0800 Subject: [PATCH] fix sync socks from advanced options to config file Signed-off-by: 21pages --- src/config.rs | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/config.rs b/src/config.rs index c9fb570..c85477d 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1069,10 +1069,47 @@ impl Config { } pub fn set_socks(socks: Option) { + if OVERWRITE_SETTINGS + .read() + .unwrap() + .contains_key(keys::OPTION_PROXY_URL) + { + return; + } + let mut config = CONFIG2.write().unwrap(); if config.socks == socks { return; } + if config.socks.is_none() { + let equal_to_default = |key: &str, value: &str| { + DEFAULT_SETTINGS + .read() + .unwrap() + .get(key) + .map_or(false, |x| *x == value) + }; + let contains_url = DEFAULT_SETTINGS + .read() + .unwrap() + .get(keys::OPTION_PROXY_URL) + .is_some(); + let url = equal_to_default( + keys::OPTION_PROXY_URL, + &socks.clone().unwrap_or_default().proxy, + ); + let username = equal_to_default( + keys::OPTION_PROXY_USERNAME, + &socks.clone().unwrap_or_default().username, + ); + let password = equal_to_default( + keys::OPTION_PROXY_PASSWORD, + &socks.clone().unwrap_or_default().password, + ); + if contains_url && url && username && password { + return; + } + } config.socks = socks; config.store(); }