diff --git a/src-tauri/src/cmds.rs b/src-tauri/src/cmds.rs
index 7c57b76cb34c44c0b401d6b396bf88b777824a22..001c83e370ebd75ac9d7c759982f2add63f5b4dc 100644
--- a/src-tauri/src/cmds.rs
+++ b/src-tauri/src/cmds.rs
@@ -107,13 +107,23 @@ pub fn select_profile(
   }
 }
 
-/// todo: need to check
 /// delete profile item
 #[tauri::command]
-pub fn delete_profile(index: usize, profiles: State<'_, ProfilesState>) -> Result<(), String> {
-  match profiles.0.lock() {
-    Ok(mut profiles) => profiles.delete_item(index),
-    Err(_) => Err("can not get profiles lock".into()),
+pub fn delete_profile(
+  index: usize,
+  clash_state: State<'_, ClashState>,
+  profiles_state: State<'_, ProfilesState>,
+) -> Result<(), String> {
+  let mut profiles = profiles_state.0.lock().unwrap();
+  match profiles.delete_item(index) {
+    Ok(change) => match change {
+      true => {
+        let clash = clash_state.0.lock().unwrap();
+        profiles.activate(clash.info.clone())
+      }
+      false => Ok(()),
+    },
+    Err(err) => Err(err),
   }
 }
 
diff --git a/src-tauri/src/core/profiles.rs b/src-tauri/src/core/profiles.rs
index a493d2fa06a7908219e326dd3510bcc76cdbccfc..42ee3f4f93d7c36884bba5b36a95a61f2bddef75 100644
--- a/src-tauri/src/core/profiles.rs
+++ b/src-tauri/src/core/profiles.rs
@@ -195,7 +195,7 @@ impl ProfilesConfig {
   }
 
   /// delete the item
-  pub fn delete_item(&mut self, index: usize) -> Result<(), String> {
+  pub fn delete_item(&mut self, index: usize) -> Result<bool, String> {
     let mut current = self.current.clone().unwrap_or(0);
     let mut items = self.items.clone().unwrap_or(vec![]);
 
@@ -205,13 +205,22 @@ impl ProfilesConfig {
 
     items.remove(index);
 
+    let mut should_change = false;
+
     if current == index {
       current = 0;
+      should_change = true;
     } else if current > index {
       current = current - 1;
     }
+
     self.current = Some(current);
-    self.save_file()
+    self.items = Some(items);
+
+    match self.save_file() {
+      Ok(_) => Ok(should_change),
+      Err(err) => Err(err),
+    }
   }
 
   /// activate current profile