Explorar el Código

feat: add put_profiles cmd

GyDi hace 3 años
padre
commit
0c23845970
Se han modificado 2 ficheros con 30 adiciones y 1 borrados
  1. 28 0
      src-tauri/src/cmd.rs
  2. 2 1
      src-tauri/src/main.rs

+ 28 - 0
src-tauri/src/cmd.rs

@@ -84,6 +84,7 @@ pub fn get_profiles(lock: State<'_, ProfileLock>) -> Option<ProfilesConfig> {
 }
 
 #[tauri::command]
+/// update the profile config
 pub fn set_profiles(
   current: usize,
   profile: ProfileItem,
@@ -131,3 +132,30 @@ pub fn set_profiles(
 
   Ok(())
 }
+
+#[tauri::command]
+/// change to target profile
+pub fn put_profiles(current: usize, lock: State<'_, ProfileLock>) -> Result<(), String> {
+  match lock.0.lock() {
+    Ok(_) => {}
+    Err(_) => return Err(format!("can not get file locked")),
+  };
+
+  let mut profiles = read_profiles();
+
+  let items_len = match &profiles.items {
+    Some(p) => p.len(),
+    None => 0,
+  };
+
+  if current >= items_len {
+    Err(format!(
+      "failed to change profile to the index `{}`",
+      current
+    ))
+  } else {
+    profiles.current = Some(current as u32);
+    save_profiles(&profiles);
+    Ok(())
+  }
+}

+ 2 - 1
src-tauri/src/main.rs

@@ -61,7 +61,8 @@ fn main() -> std::io::Result<()> {
       cmd::get_clash_info,
       cmd::import_profile,
       cmd::get_profiles,
-      cmd::set_profiles
+      cmd::set_profiles,
+      cmd::put_profiles,
     ])
     .build(tauri::generate_context!())
     .expect("error while running tauri application");