diff --git a/src-tauri/src/core/utils/mod.rs b/src-tauri/src/core/utils/mod.rs index 2880b0e1d..77081229b 100644 --- a/src-tauri/src/core/utils/mod.rs +++ b/src-tauri/src/core/utils/mod.rs @@ -94,7 +94,25 @@ pub fn write_yaml( jan_data_folder.to_string_lossy(), )); } - let mut file = fs::File::create(&save_path).map_err(|e| e.to_string())?; - serde_yaml::to_writer(&mut file, &data).map_err(|e| e.to_string())?; + let file = fs::File::create(&save_path).map_err(|e| e.to_string())?; + let mut writer = std::io::BufWriter::new(file); + serde_yaml::to_writer(&mut writer, &data).map_err(|e| e.to_string())?; Ok(()) } + +#[tauri::command] +pub fn read_yaml(app: tauri::AppHandle, path: &str) -> Result { + let jan_data_folder = get_jan_data_folder_path(app.clone()); + let path = normalize_path(&jan_data_folder.join(path)); + if !path.starts_with(&jan_data_folder) { + return Err(format!( + "Error: path {} is not under jan_data_folder {}", + path.to_string_lossy(), + jan_data_folder.to_string_lossy(), + )); + } + let file = fs::File::open(&path).map_err(|e| e.to_string())?; + let reader = std::io::BufReader::new(file); + let data: serde_json::Value = serde_yaml::from_reader(reader).map_err(|e| e.to_string())?; + Ok(data) +} diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index a3791552b..6f57d3cbc 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -81,6 +81,7 @@ pub fn run() { core::threads::modify_thread_assistant, // generic utils core::utils::write_yaml, + core::utils::read_yaml, // Download core::utils::download::download_files, core::utils::download::cancel_download_task,