diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 281bbeb..bef306e 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -3735,6 +3735,7 @@ dependencies = [ "tauri-build", "tauri-plugin-autostart", "tauri-plugin-dialog", + "tauri-plugin-fs", "tauri-plugin-global-shortcut", "tauri-plugin-opener", "tauri-plugin-process", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 9fa0b9b..caa5e16 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -21,6 +21,7 @@ serde_json = "1" reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] } chrono = "0.4" futures = "0.3.32" +tauri-plugin-fs = "2.5.1" [profile.release] strip = true diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 74c4642..052fb45 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -10,6 +10,7 @@ use tauri::menu::{Menu, MenuItem}; use tauri::tray::TrayIconBuilder; use tauri::{AppHandle, Emitter, Manager, WindowEvent}; use tauri_plugin_dialog::DialogExt; +use tauri_plugin_fs::FsExt; use tauri_plugin_opener::OpenerExt; const RATES_TTL_SECS: u64 = 3600; @@ -538,8 +539,15 @@ fn open_backups_folder(app: AppHandle, dir: Option) -> Result<(), String // ---------- data folder migration #[tauri::command] -fn data_dir_has_documents(dir: String) -> bool { - PathBuf::from(dir).join("documents.json").exists() +fn data_dir_has_documents(app: AppHandle, dir: String) -> bool { + let path = PathBuf::from(dir).join("documents.json"); + if !app + .try_fs_scope() + .is_some_and(|scope| scope.is_allowed(&path)) + { + return false; + } + path.exists() } /// strategy: "move" (copy mine, delete originals), "overwrite" (same, target @@ -715,6 +723,7 @@ fn toggle_window(app: &AppHandle) { fn main() { tauri::Builder::default() + .plugin(tauri_plugin_fs::init()) .plugin(tauri_plugin_single_instance::init(|app, args, _cwd| { if let Some(path) = args.iter().skip(1).find(|a| is_sheet_path(a)) { if let Ok(content) = fs::read_to_string(path) {