aboutsummaryrefslogtreecommitdiff
path: root/src-tauri
diff options
context:
space:
mode:
authorGeckoEidechse <40122905+GeckoEidechse@users.noreply.github.com>2024-01-21 13:02:43 +0100
committerGitHub <noreply@github.com>2024-01-21 13:02:43 +0100
commitdc2a6d7bcee85481f3e53daffdb00436af01c309 (patch)
tree722ea33161735cc2efd1f94b51df88b939ff6d19 /src-tauri
parent4d930dc7f38ebe4874e007628ff9b733d7b64e5b (diff)
downloadFlightCore-dc2a6d7bcee85481f3e53daffdb00436af01c309.tar.gz
FlightCore-dc2a6d7bcee85481f3e53daffdb00436af01c309.zip
feat: Add option to clone existing profile (#761)
* add dev button to refetch profiles * add dialog box with a table of all profiles * add button to delete non default profiles to dialog box * add button to clone profile to dialog box * style: Add trailing comma * docs: Add doc comment explaining function * fix: Remove leftover testing code * fix: Delete duplicate function registration * chore: Sort Tauri function registrations alphabetically --------- Co-authored-by: Jan200101 <sentrycraft123@gmail.com>
Diffstat (limited to 'src-tauri')
-rw-r--r--src-tauri/src/main.rs1
-rw-r--r--src-tauri/src/northstar/profile.rs28
-rw-r--r--src-tauri/src/util.rs1
3 files changed, 29 insertions, 1 deletions
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs
index a2e293b0..1fc55678 100644
--- a/src-tauri/src/main.rs
+++ b/src-tauri/src/main.rs
@@ -138,6 +138,7 @@ fn main() {
northstar::install::install_northstar_wrapper,
northstar::install::update_northstar,
northstar::launch_northstar,
+ northstar::profile::clone_profile,
northstar::profile::delete_profile,
northstar::profile::fetch_profiles,
northstar::profile::validate_profile,
diff --git a/src-tauri/src/northstar/profile.rs b/src-tauri/src/northstar/profile.rs
index b0c6c418..26a32d6b 100644
--- a/src-tauri/src/northstar/profile.rs
+++ b/src-tauri/src/northstar/profile.rs
@@ -1,3 +1,4 @@
+use crate::util::copy_dir_all;
use crate::GameInstall;
// These folders are part of Titanfall 2 and
@@ -91,3 +92,30 @@ pub fn delete_profile(game_install: GameInstall, profile: String) -> Result<(),
Err(err) => Err(format!("Failed to delete Profile: {}", err)),
}
}
+
+/// Clones a profile by simply duplicating the folder under a new name
+#[tauri::command]
+pub fn clone_profile(
+ game_install: GameInstall,
+ old_profile: String,
+ new_profile: String,
+) -> Result<(), String> {
+ // Check if the old Profile already exists
+ if !validate_profile(game_install.clone(), old_profile.clone()) {
+ return Err(format!("{} is not a valid Profile", old_profile));
+ }
+
+ // Check that new Profile does not already exist
+ if validate_profile(game_install.clone(), new_profile.clone()) {
+ return Err(format!("{} already exists", new_profile));
+ }
+
+ log::info!("Cloning Profile {} to {}", old_profile, new_profile);
+
+ let old_profile_path = format!("{}/{}", game_install.game_path, old_profile);
+ let new_profile_path = format!("{}/{}", game_install.game_path, new_profile);
+
+ copy_dir_all(old_profile_path, new_profile_path).unwrap();
+
+ Ok(())
+}
diff --git a/src-tauri/src/util.rs b/src-tauri/src/util.rs
index 15511d21..ad09eec2 100644
--- a/src-tauri/src/util.rs
+++ b/src-tauri/src/util.rs
@@ -188,7 +188,6 @@ pub fn check_northstar_running() -> bool {
}
/// Copies a folder and all its contents to a new location
-#[allow(dead_code)]
pub fn copy_dir_all(
src: impl AsRef<std::path::Path>,
dst: impl AsRef<std::path::Path>,