diff --git a/src-tauri/src/profile/manager.rs b/src-tauri/src/profile/manager.rs index d29f5a8..577ce97 100644 --- a/src-tauri/src/profile/manager.rs +++ b/src-tauri/src/profile/manager.rs @@ -1513,10 +1513,14 @@ impl ProfileManager { if let Some(pid) = found_pid { if merged.process_id != Some(pid) { + let old_pid = merged.process_id; merged.process_id = Some(pid); if let Err(e) = self.save_profile(&merged) { log::warn!("Warning: Failed to update profile with new PID: {e}"); } + if let Some(prev) = old_pid { + let _ = crate::proxy_manager::PROXY_MANAGER.update_proxy_pid(prev, pid); + } } } else if merged.process_id.is_some() { // Clear the PID if no process found @@ -1576,10 +1580,14 @@ impl ProfileManager { }; if latest.process_id != camoufox_process.processId { + let old_pid = latest.process_id; latest.process_id = camoufox_process.processId; if let Err(e) = self.save_profile(&latest) { log::warn!("Warning: Failed to update Camoufox profile with process info: {e}"); } + if let (Some(prev), Some(new)) = (old_pid, camoufox_process.processId) { + let _ = crate::proxy_manager::PROXY_MANAGER.update_proxy_pid(prev, new); + } // Emit profile update event to frontend if let Err(e) = events::emit("profile-updated", &latest) { @@ -1712,10 +1720,14 @@ impl ProfileManager { }; if latest.process_id != wayfern_process.processId { + let old_pid = latest.process_id; latest.process_id = wayfern_process.processId; if let Err(e) = self.save_profile(&latest) { log::warn!("Warning: Failed to update Wayfern profile with process info: {e}"); } + if let (Some(prev), Some(new)) = (old_pid, wayfern_process.processId) { + let _ = crate::proxy_manager::PROXY_MANAGER.update_proxy_pid(prev, new); + } // Emit profile update event to frontend if let Err(e) = events::emit("profile-updated", &latest) {