From 2af08c455ac1daf230ba49de5cafa562b42d33c2 Mon Sep 17 00:00:00 2001 From: jasonwitty Date: Thu, 21 Aug 2025 12:48:53 -0700 Subject: [PATCH] fix(client): correct profile overwrite prompt logic (only save on confirm or --save) --- socktop/src/main.rs | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/socktop/src/main.rs b/socktop/src/main.rs index e2a6f90..98ab11d 100644 --- a/socktop/src/main.rs +++ b/socktop/src/main.rs @@ -102,29 +102,35 @@ async fn main() -> Result<(), Box> { // Possibly save if profile specified and --save or new entry if let Some(name) = parsed.profile.as_ref() { let existing = profiles_mut.profiles.get(name); - if existing.is_none() || parsed.save { - // If existing and not forced save, prompt - if existing.is_some() && !parsed.save { - if prompt_yes_no(&format!("Overwrite existing profile '{name}'? [y/N]: ")) { - profiles_mut.profiles.insert( - name.clone(), - ProfileEntry { - url: u.clone(), - tls_ca: t.clone(), - }, - ); - let _ = save_profiles(&profiles_mut); - } - } else { + match existing { + None => { + // New profile: auto-save immediately profiles_mut.profiles.insert( name.clone(), - ProfileEntry { - url: u.clone(), - tls_ca: t.clone(), - }, + ProfileEntry { url: u.clone(), tls_ca: t.clone() }, ); let _ = save_profiles(&profiles_mut); } + Some(entry) => { + let changed = entry.url != u || entry.tls_ca != t; + if changed { + if parsed.save { + profiles_mut.profiles.insert( + name.clone(), + ProfileEntry { url: u.clone(), tls_ca: t.clone() }, + ); + let _ = save_profiles(&profiles_mut); + } else if prompt_yes_no(&format!( + "Overwrite existing profile '{name}'? [y/N]: " + )) { + profiles_mut.profiles.insert( + name.clone(), + ProfileEntry { url: u.clone(), tls_ca: t.clone() }, + ); + let _ = save_profiles(&profiles_mut); + } // else: do not overwrite, just connect with provided details + } + } } } (u, t)