aboutsummaryrefslogtreecommitdiff
path: root/src-tauri/src
diff options
context:
space:
mode:
Diffstat (limited to 'src-tauri/src')
-rw-r--r--src-tauri/src/lib.rs39
-rw-r--r--src-tauri/src/main.rs12
2 files changed, 48 insertions, 3 deletions
diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs
index 8a97a108..84920727 100644
--- a/src-tauri/src/lib.rs
+++ b/src-tauri/src/lib.rs
@@ -26,6 +26,12 @@ pub struct GameInstall {
pub install_type: InstallType,
}
+#[derive(Serialize, Deserialize, Debug, Clone)]
+pub struct NorthstarMod {
+ pub name: String,
+ pub enabled: bool,
+}
+
/// Check version number of a mod
pub fn check_mod_version_number(path_to_mod_folder: String) -> Result<String, anyhow::Error> {
// println!("{}", format!("{}/mod.json", path_to_mod_folder));
@@ -471,3 +477,36 @@ pub fn set_mod_enabled_status(
Ok(())
}
+
+/// Gets list of installed mods and their properties
+/// - name
+/// - is enabled?
+pub fn get_installed_mods(game_install: GameInstall) -> Result<Vec<NorthstarMod>, String> {
+ let enabled_mods_json_path = format!("{}/R2Northstar/enabledmods.json", game_install.game_path);
+ // Open file
+ let data = match std::fs::read_to_string(enabled_mods_json_path) {
+ Ok(data) => data,
+ Err(err) => return Err(err.to_string()),
+ };
+ // Check if valid JSON and parse
+ let res: serde_json::Value = match serde_json::from_str(&data) {
+ Ok(res) => res,
+ Err(err) => return Err(err.to_string()),
+ };
+
+ let mut installed_mods = Vec::new();
+
+ for (key, value) in res.as_object().unwrap() {
+
+ let current_mod: NorthstarMod = NorthstarMod {
+ name: key.to_string(),
+ enabled: value.as_bool().unwrap(),
+ };
+ installed_mods.push(current_mod);
+ }
+
+ dbg!(&res);
+ dbg!(installed_mods.clone());
+
+ Ok(installed_mods)
+}
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs
index 4826ef52..0cb329d2 100644
--- a/src-tauri/src/main.rs
+++ b/src-tauri/src/main.rs
@@ -12,8 +12,8 @@ use std::{
use app::{
check_is_flightcore_outdated, check_is_valid_game_path, check_northstar_running,
check_origin_running, convert_release_candidate_number, find_game_install_location,
- get_enabled_mods, get_host_os, get_log_list, get_northstar_version_number, install_northstar,
- launch_northstar, set_mod_enabled_status, GameInstall, linux_checks_librs
+ get_enabled_mods, get_host_os, get_installed_mods, get_log_list, get_northstar_version_number,
+ install_northstar, launch_northstar, linux_checks_librs, set_mod_enabled_status, GameInstall, NorthstarMod,
};
mod repair_and_verify;
@@ -88,7 +88,8 @@ fn main() {
set_mod_enabled_status_caller,
disable_all_but_core_caller,
is_debug_mode,
- linux_checks
+ linux_checks,
+ get_installed_mods_caller,
])
.run(tauri::generate_context!())
.expect("error while running tauri application");
@@ -297,3 +298,8 @@ fn set_mod_enabled_status_caller(
fn disable_all_but_core_caller(game_install: GameInstall) -> Result<(), String> {
disable_all_but_core(game_install)
}
+
+#[tauri::command]
+async fn get_installed_mods_caller(game_install: GameInstall) -> Result<Vec<NorthstarMod>, String> {
+ get_installed_mods(game_install)
+}